diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..c704106f Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 5c261b8f..6360b10d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,2 @@ -# compiled output -/dist -/node_modules - -# Logs -logs -*.log -npm-debug.log* -pnpm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# json requests / responses -json - -# OS +.idea/* .DS_Store - -# Tests -/coverage -/.nyc_output - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -# configuration -.env -.env-local -*.icloud diff --git a/LICENSE.md b/LICENSE.md index 4ad2c000..991464f5 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 voucherify.io +Copyright (c) 2023 voucherify.io Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 5bfb2dde..0722c127 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Demo store https://sunrise-ct-voucherify.herokuapp.com
- +
--- @@ -51,6 +51,7 @@ Demo store https://sunrise-ct-voucherify.herokuapp.com * [Final words](#final-words) * [Licence](#licence) + ## How does the integration between Voucherify and commercetools work? The integration between Voucherify and commercetools allows your customers to use Voucherify-generated promotions in a store built on top of commercetools. We support all Voucherify campaigns. @@ -73,7 +74,7 @@ If we want to allow customers to use coupons defined in Voucherify, the integrat 1. Watch cart updates on the commercetools’ side. If a customer adds a coupon code, use Voucherify API to validate coupons, get discount details and apply discounts back to the commercetools cart. 2. Record fulfilled orders from commercetools on the Voucherify’s side using Voucherify redeem endpoint. -![commercetools & Voucherify integration flow chart](./public/integration-flow.jpeg) +![commercetools & Voucherify integration flow chart](./voucherify-service/public/integration-flow.jpeg) In addition, we suggest synchronizing your customer, product, and order data between commercetools and Voucherify, so you can use that data to build more advanced promotion campaigns. @@ -91,7 +92,7 @@ Extensions: ## How to work with commercetools API Extensions? -Our integration uses [commercetools API Extensions](https://docs.commercetools.com/api/projects/api-extensions) to monitor cart and order updates. But, before commercetools can send us HTTP requests with cart and order update details, we need to register API Extension and let commercetools know under which public URL our integration is available. There are two scenarios. First, if you run the integration on a publicly available server, you can register or unregister commercetools API Extension using `npm run api-extension-add`, `npm run api-extension-delete` or `npm run api-extension-update` commands. Those commands use the APP_URL environment variable as the public server address where commercetools will send cart and order updates. The second scenario is when you develop or test integration locally, and your PC does not have public IP or domain. In that case, you need to use a reverse proxy (e.g., ngrok) solution to expose your local integration application. To simplify this process, we built a script npm run dev:attach that runs an ngrok reverse proxy service, uses a randomly generated ngrok public URL to register API Extension in commercetools and start our application. +Because we have organized our repository as monorepo to comply with the commercetools Connect platform, all `npm` commands should be executed inside the `/voucherify-service` folder. Our integration uses [commercetools API Extensions](https://docs.commercetools.com/api/projects/api-extensions) to monitor cart and order updates. But, before commercetools can send us HTTP requests with cart and order update details, we need to register API Extension and let commercetools know under which public URL our integration is available. There are two scenarios. First, if you run the integration on a publicly available server, you can register or unregister commercetools API Extension using `npm run api-extension-add`, `npm run api-extension-delete` or `npm run api-extension-update` commands. Those commands use the APP_URL environment variable as the public server address where commercetools will send cart and order updates. The second scenario is when you develop or test integration locally, and your PC does not have public IP or domain. In that case, you need to use a reverse proxy (e.g., ngrok) solution to expose your local integration application. To simplify this process, we built a script npm run dev:attach that runs an ngrok reverse proxy service, uses a randomly generated ngrok public URL to register API Extension in commercetools and start our application. ``` mermaid graph LR; @@ -198,7 +199,7 @@ Integration service just need to get order (integration type) and redeeming shou ### Configuration Set environment variables with credentials to Voucherify and commercetools APIs. For local development, put the configuration into `.env` file (see `.env.example` configuration template). -- `APP_URL` - a public URL where the application is hosted. commercetools will use this URL to make [API Extension HTTP requests](https://docs.commercetools.com/api/projects/api-extensions). This configuration is ignored for local development servers as ngrok provides a public URL dynamically. +- `APP_URL` (or `CONNECT_SERVICE_URL`) - a public URL where the application is hosted. commercetools will use this URL to make [API Extension HTTP requests](https://docs.commercetools.com/api/projects/api-extensions). This configuration is ignored for local development servers as ngrok provides a public URL dynamically. Please, note that `CONNECT_SERVICE_URL` environment variable is used by Commecetools Connect. - In Voucherify, go to `Project Dashboard > Project Settings > General Tab > Application Keys`. - `VOUCHERIFY_APP_ID` - `VOUCHERIFY_SECRET_KEY` @@ -237,8 +238,9 @@ npm run config #### For production ```bash npm install +npm run build npm run start -npm run register +npm run api-extension-add ``` #### For local development (ngrok required) @@ -251,7 +253,7 @@ npm run dev:attach ```bash npm install npm run dev -npm run register +npm run api-extension-add ``` --- @@ -318,6 +320,10 @@ We have created integration tests to cover the most important scenarios connecte 1. Create a new application on your Heroku account with a given 2. Go to your -> Settings -> Reveal Config Vars 3. Configure your commercetools application and set up environment variables [see Configuration](#configuration) +4. Add buildpacks (in order): + - https://github.com/lstoll/heroku-buildpack-monorepo + - heroku/nodejs +5. Set `APP_BASE` environment variable to `voucherify-service` ### Deployment @@ -448,9 +454,9 @@ Currently, we support a few cases related to loyalty program. Firstly we provide 3. As the store operator logged into the commercetools panel, I see new orders, including applied coupon codes on the Custom Fields tab and applied coupon discount value in the Order items list. 4. As the store operator logged into the commercetools panel when I update Order Payment Status to Paid, customer, order, and redeemed objects are created in Voucherify. -![Order screen in commercetools](./public/ct-order.png) -![Order custom fields in commercetools](./public/ct-order-custom-fields.png) -![Redemption screen in Voucherify](./public/voucherify-redemption.png) +![Order screen in commercetools](./voucherify-service/public/ct-order.png) +![Order custom fields in commercetools](./voucherify-service/public/ct-order-custom-fields.png) +![Redemption screen in Voucherify](./voucherify-service/public/voucherify-redemption.png) --- @@ -459,6 +465,17 @@ Currently, we support a few cases related to loyalty program. Firstly we provide If you found a bug or want to suggest a new feature, please file a GitHub issue. ## Changelog +- 2024-01-23 `v6.0.5` (versions v6.0.1 - v6.0.4 were not released to the public) + - added more tests, moved all tests to `voucherify-service/test` folder + - updated dependencies + - added `npm run config` to `npm run ct-connect-post-deploy` command + - added `channel` header to V% requests. + - added support for V% `partial` redeem/validation mode. + - code refactoring (lowering cognitive complexity) + - fixed bug in `productsToAdd` function related to CT price selector. +- 2023-05-16 `v6.0.0` adjust application structure to be compliant with commercetools Connect platform +- 2023-05-11 `v5.2.3` + - adjust application to work with Commercetools Connect platform: - 2023-05-05 `v5.2.2` - do not make unnecessary, malformed requests to CT for a products - update tests diff --git a/connect.yaml b/connect.yaml new file mode 100644 index 00000000..b5b4e4f6 --- /dev/null +++ b/connect.yaml @@ -0,0 +1,30 @@ +deployAs: + - name: voucherify-service + applicationType: service + endpoint: / + scripts: + postDeploy: npm install && npm run ct-connect-post-deploy + preUndeploy: npm install && npm run ct-connect-pre-undeploy + configuration: + standardConfiguration: + - key: COMMERCE_TOOLS_ID + description: CommerceTools Id + - key: COMMERCE_TOOLS_AUTH_URL + description: CommerceTools authentication URL + - key: COMMERCE_TOOLS_API_URL + description: CommerceTools API URL + - key: COMMERCE_TOOLS_PROJECT_KEY + description: CommerceTools Project Key + - key: VOUCHERIFY_APP_ID + description: Voucherify App Id + - key: VOUCHERIFY_API_URL + description: Voucherify API URL + - key: APPLY_CART_DISCOUNT_AS_CT_DIRECT_DISCOUNT + description: Apply cart discount as CommerceTools direct discount + securedConfiguration: + - key: COMMERCE_TOOLS_SECRET + description: CommerceTools secret + - key: VOUCHERIFY_SECRET_KEY + description: Voucherify secret key + - key: API_EXTENSION_BASIC_AUTH_PASSWORD + description: CommerceTools API extension basic auth password diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 8624f776..00000000 --- a/package-lock.json +++ /dev/null @@ -1,21582 +0,0 @@ -{ - "name": "commerce-tools-integration", - "version": "5.1.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "commerce-tools-integration", - "version": "5.1.1", - "license": "MIT", - "dependencies": { - "@commercetools/platform-sdk": "^2.7.0", - "@commercetools/sdk-auth": "^3.0.13", - "@commercetools/sdk-client-v2": "^1.4.0", - "@nestjs/cli": "^8.0.0", - "@nestjs/common": "^8.0.0", - "@nestjs/config": "^2.0.0", - "@nestjs/core": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@voucherify/sdk": "^2.0.15", - "async": "^3.2.3", - "class-transformer": "^0.5.1", - "class-validator": "^0.13.2", - "cli-table": "^0.3.11", - "concurrently": "^7.1.0", - "flat": "^5.0.2", - "form-data": "^4.0.0", - "install": "^0.13.0", - "joi": "^17.6.0", - "loading-cli": "^1.1.0", - "mkdirp": "^1.0.4", - "nest-commander": "^2.5.0", - "nest-winston": "^1.7.0", - "ngrok": "^4.3.1", - "node-fetch": "^3.2.10", - "node-fetch2": "npm:node-fetch@^2.6.7", - "nodejs-base64": "^2.0.0", - "npm": "^8.15.0", - "objects-to-csv": "^1.3.6", - "reflect-metadata": "^0.1.13", - "rimraf": "^3.0.2", - "rxjs": "^7.2.0", - "winston": "^3.8.1" - }, - "devDependencies": { - "@nestjs/schematics": "^8.0.0", - "@nestjs/testing": "^8.0.0", - "@types/express": "^4.17.13", - "@types/flat": "^5.0.2", - "@types/jest": "27.5.0", - "@types/node": "^16.0.0", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^8.0.1", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "husky": "^7.0.4", - "jest": "28.0.3", - "prettier": "^2.3.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.3", - "ts-jest": "28.0.1", - "ts-loader": "^9.2.3", - "ts-node": "^10.0.0", - "tsconfig-paths": "4.0.0", - "typescript": "^4.3.5", - "webpack": "^5.72.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.2.tgz", - "integrity": "sha512-wav5plcnlxQAfZ+0EUt3dvVTJnJ1au2TlKVQ0jSQJdR1LA6N7QUI49N2Ua6ZnDMwruQaQkoynitMW2l1it3qYQ==", - "dependencies": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.20.0 || ^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 - } - } - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@angular-devkit/schematics": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.2.tgz", - "integrity": "sha512-XCLb23jmqHN0gJg9ZlICaFgfpfnCufIQp5SOsRKMKRkhjKycvDmKnfBTKDlkzb1IaUl6wQwP5k7Z69b9EX+CQw==", - "dependencies": { - "@angular-devkit/core": "13.3.2", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.3.2.tgz", - "integrity": "sha512-cUHZFNq2kaCaReJAU28MSu2D+WDFTqt2v03U79TryOutYdF8BV4FyfvKqCSW6WXna219GXSXPepVqDYcjvn7/w==", - "dependencies": { - "@angular-devkit/core": "13.3.2", - "@angular-devkit/schematics": "13.3.2", - "ansi-colors": "4.1.1", - "inquirer": "8.2.0", - "minimist": "1.2.6", - "symbol-observable": "4.0.0" - }, - "bin": { - "schematics": "bin/schematics.js" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", - "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.10", - "@babel/types": "^7.17.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@commercetools/platform-sdk": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@commercetools/platform-sdk/-/platform-sdk-2.7.0.tgz", - "integrity": "sha512-xm3IT0WP/5NL4vmB/9TSS19+z8ghkHmEmb9n5kXu5GC+wiR/Z6pcpt/BYUR2MuRTqjsq167MThH15jHgWypaQw==", - "dependencies": { - "@commercetools/sdk-client-v2": "^1.4.0", - "@commercetools/sdk-middleware-auth": "^6.0.4", - "@commercetools/sdk-middleware-http": "^6.0.4", - "@commercetools/sdk-middleware-logger": "^2.1.1", - "querystring": "^0.2.1" - } - }, - "node_modules/@commercetools/sdk-auth": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-auth/-/sdk-auth-3.0.13.tgz", - "integrity": "sha512-Y+E+oYwQeY4PHu4HBBeNyieQsDoG/f7axHlQXDgdnVcLkyPDHsMHYMiOT8p5MAl+VFCA7F31z9y7x/QUmyyT5Q==", - "dependencies": { - "@commercetools/sdk-middleware-http": "^6.1.1", - "lodash.defaultsdeep": "^4.6.0", - "qss": "2.0.3" - } - }, - "node_modules/@commercetools/sdk-client-v2": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-client-v2/-/sdk-client-v2-1.4.0.tgz", - "integrity": "sha512-JYGDQVJtrPsU9keGM6HSIUAwTJtLqEWWEsaLJaDct3ciRc9orNLRn65pPhfXzZkg0kw2c6SkmG8HEEDQbOq0xg==", - "dependencies": { - "buffer": "^6.0.3", - "node-fetch": "^2.6.1", - "querystring": "^0.2.1" - } - }, - "node_modules/@commercetools/sdk-client-v2/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@commercetools/sdk-middleware-auth": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-auth/-/sdk-middleware-auth-6.2.1.tgz", - "integrity": "sha512-JNVRVf7zssECg0i/amAG0gnFmx4Kj7rB0J9MfRlvN/54qyA6tKJOJaA5j9hYy60qKSW/NCGbVMcVlBnPJLhREQ==", - "dependencies": { - "node-fetch": "^2.6.7" - } - }, - "node_modules/@commercetools/sdk-middleware-auth/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@commercetools/sdk-middleware-http": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-http/-/sdk-middleware-http-6.2.0.tgz", - "integrity": "sha512-3E1nV+awhP0eeFuyChxgbaPF5CWWH0PvGZO9FtNl/mirlYjGbXAHO4Ql5tG4/G+CywlXI9XVA9wKSwxG0kgwgA==" - }, - "node_modules/@commercetools/sdk-middleware-logger": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-logger/-/sdk-middleware-logger-2.1.1.tgz", - "integrity": "sha512-k/Jm3lsWbszPBHtPAvu0rINTq398p4ddv0zbAH8R4p6Yc1GkBEy6tNgHPzX/eFskI/qerPy9IsW1xK8pqgtHHQ==" - }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", - "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@golevelup/nestjs-discovery": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-3.0.0.tgz", - "integrity": "sha512-ZvkXtobTKxXB1LJanP/l6Z/Fing88IMBr3uabQpU2IWjfsstjh02qYDSU2cfD6CSmNldX5ewW5Pd+SdK2lU8Sw==", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.0.2.tgz", - "integrity": "sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.0.3.tgz", - "integrity": "sha512-cCQW06vEZ+5r50SB06pOnSWsOBs7F+lswPYnKKfBz1ncLlj1sMqmvjgam8q40KhlZ8Ut4eNAL2Hvfx4BKIO2FA==", - "dev": true, - "dependencies": { - "@jest/console": "^28.0.2", - "@jest/reporters": "^28.0.3", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.0.2", - "jest-config": "^28.0.3", - "jest-haste-map": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-resolve-dependencies": "^28.0.3", - "jest-runner": "^28.0.3", - "jest-runtime": "^28.0.3", - "jest-snapshot": "^28.0.3", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "jest-watcher": "^28.0.2", - "micromatch": "^4.0.4", - "pretty-format": "^28.0.2", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "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 - } - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/@jest/environment": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.0.2.tgz", - "integrity": "sha512-IvI7dEfqVEffDYlw9FQfVBt6kXt/OI38V7QUIur0ulOQgzpKYJDVvLzj4B1TVmHWTGW5tcnJdlZ3hqzV6/I9Qg==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "jest-mock": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.0.3.tgz", - "integrity": "sha512-VEzZr85bqNomgayQkR7hWG5HnbZYWYWagQriZsixhLmOzU6PCpMP61aeVhkCoRrg7ri5f7JDpeTPzDAajIwFHw==", - "dev": true, - "dependencies": { - "expect": "^28.0.2", - "jest-snapshot": "^28.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.0.2.tgz", - "integrity": "sha512-YryfH2zN5c7M8eLtn9oTBRj1sfD+X4cHNXJnTejqCveOS33wADEZUxJ7de5++lRvByNpRpfAnc8zTK7yrUJqgA==", - "dev": true, - "dependencies": { - "jest-get-type": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.0.2.tgz", - "integrity": "sha512-R75yUv+WeybPa4ZVhX9C+8XN0TKjUoceUX+/QEaDVQGxZZOK50eD74cs7iMDTtpodh00d8iLlc9197vgF6oZjA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.0.2", - "@sinonjs/fake-timers": "^9.1.1", - "@types/node": "*", - "jest-message-util": "^28.0.2", - "jest-mock": "^28.0.2", - "jest-util": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.0.3.tgz", - "integrity": "sha512-q/zXYI6CKtTSIt1WuTHBYizJhH7K8h+xG5PE3C0oawLlPIvUMDYmpj0JX0XsJwPRLCsz/fYXHZVG46AaEhSPmw==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.0.2", - "@jest/expect": "^28.0.3", - "@jest/types": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.0.3.tgz", - "integrity": "sha512-xrbIc7J/xwo+D7AY3enAR9ZWYCmJ8XIkstTukTGpKDph0gLl/TJje9jl3dssvE4KJzYqMKiSrnE5Nt68I4fTEg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.0.2", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@jridgewell/trace-mapping": "^0.3.7", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-util": "^28.0.2", - "jest-worker": "^28.0.2", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.0" - }, - "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 - } - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/schemas": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", - "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.23.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", - "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.0.2.tgz", - "integrity": "sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA==", - "dev": true, - "dependencies": { - "@jest/console": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.0.2.tgz", - "integrity": "sha512-zhnZ8ydkZQTPL7YucB86eOlD79zPy5EGSUKiR2Iv93RVEDU6OEP33kwDBg70ywOcxeJGDRhyo09q7TafNCBiIg==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.0.2", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.0.3.tgz", - "integrity": "sha512-+Y0ikI7SwoW/YbK8t9oKwC70h4X2Gd0OVuz5tctRvSV/EDQU00AAkoqevXgPSSFimUmp/sp7Yl8s/1bExDqOIg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.0.2", - "@jridgewell/trace-mapping": "^0.3.7", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.0.2", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.0.2.tgz", - "integrity": "sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", - "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz", - "integrity": "sha512-az/NhpIwP3K33ILr0T2bso+k2E/SLf8Yidd8mHl0n6sCQ4YdyC8qDhZA6kOPDNDBA56ZnIjngVl0U3jREA0BUA==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nestjs/cli": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-8.2.5.tgz", - "integrity": "sha512-b5DzZ08q/6iWvLz+n2DhEyZ3rsOurN1ec1jYQaWC5DCVQoZCwyOew48bVf01kevTK4eZyQxPwuErf7HnFAc0oQ==", - "dependencies": { - "@angular-devkit/core": "13.3.2", - "@angular-devkit/schematics": "13.3.2", - "@angular-devkit/schematics-cli": "13.3.2", - "@nestjs/schematics": "^8.0.3", - "chalk": "3.0.0", - "chokidar": "3.5.3", - "cli-table3": "0.6.1", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "7.2.3", - "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": "3.14.1", - "tsconfig-paths-webpack-plugin": "3.5.2", - "typescript": "4.6.2", - "webpack": "5.71.0", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 6.11.0" - } - }, - "node_modules/@nestjs/cli/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/@nestjs/cli/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@nestjs/cli/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@nestjs/cli/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nestjs/cli/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@nestjs/cli/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nestjs/cli/node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@nestjs/cli/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nestjs/cli/node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@nestjs/cli/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@nestjs/cli/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@nestjs/cli/node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/@nestjs/cli/node_modules/typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@nestjs/cli/node_modules/webpack": { - "version": "5.71.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", - "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", - "dependencies": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "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 - } - } - }, - "node_modules/@nestjs/config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.0.0.tgz", - "integrity": "sha512-Hi1k/1S5ogsS5c0OtNm72thiLSngijOaLDFaGI5ZPxNGpF23lctPg6ox3pYIOhXVRX/u+eiUIp71gswH2k8YNw==", - "dependencies": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.2", - "lodash": "4.17.21", - "uuid": "8.3.2" - }, - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0", - "reflect-metadata": "^0.1.13", - "rxjs": "^6.0.0 || ^7.2.0" - } - }, - "node_modules/@nestjs/core": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.7.tgz", - "integrity": "sha512-XB9uexHqzr2xkPo6QSiQWJJttyYYLmvQ5My64cFvWFi7Wk2NIus0/xUNInwX3kmFWB6pF1ab5Y2ZBvWdPwGBhw==", - "hasInstallScript": true, - "dependencies": { - "@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", - "tslib": "2.4.0", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/websockets": "^8.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 - } - } - }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/@nestjs/platform-express": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.7.tgz", - "integrity": "sha512-lPE5Ltg2NbQGRQIwXWY+4cNrXhJdycbxFDQ8mNxSIuv+LbrJBIdEB/NONk+LLn9N/8d2+I2LsIETGQrPvsejBg==", - "dependencies": { - "body-parser": "1.20.0", - "cors": "2.8.5", - "express": "4.18.1", - "multer": "1.4.4-lts.1", - "tslib": "2.4.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0" - } - }, - "node_modules/@nestjs/platform-express/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/@nestjs/schematics": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.11.tgz", - "integrity": "sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg==", - "dependencies": { - "@angular-devkit/core": "13.3.5", - "@angular-devkit/schematics": "13.3.5", - "fs-extra": "10.1.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": "^3.4.5 || ^4.3.5" - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "13.3.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz", - "integrity": "sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ==", - "dependencies": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.20.0 || ^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 - } - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "13.3.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz", - "integrity": "sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==", - "dependencies": { - "@angular-devkit/core": "13.3.5", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@nestjs/schematics/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@nestjs/schematics/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@nestjs/schematics/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nestjs/schematics/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nestjs/schematics/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nestjs/schematics/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@nestjs/testing": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.4.7.tgz", - "integrity": "sha512-aedpeJFicTBeiTCvJWUG45WMMS53f5eu8t2fXsfjsU1t+WdDJqYcZyrlCzA4dL1B7MfbqaTURdvuVVHTmJO8ag==", - "dev": true, - "dependencies": { - "tslib": "2.4.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } - } - }, - "node_modules/@nestjs/testing/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@nuxtjs/opencollective/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@sinclair/typebox": { - "version": "0.23.5", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", - "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", - "dev": true - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-3zsplnP2djeps5P9OyarTxwRpMLoe5Ash8aL9iprw0JxB+FAHjY+ifn4yZUuW4/9hqtnmor6uvjSRzJhiVbrEQ==", - "dev": true - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "node_modules/@types/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-Pxxx3i3AyK7vKAj3LRM/vF7ETcHKiLJ/u5CnNgbz/eYj/vB3xGAYtRxI5IKtq0hpe5iFHD22BKV3n6WHUu0k4Q==", - "peer": true, - "dependencies": { - "@types/through": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "27.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz", - "integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==", - "dev": true, - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.11.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", - "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/superagent": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", - "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", - "dev": true, - "dependencies": { - "@types/cookiejar": "*", - "@types/node": "*" - } - }, - "node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", - "dev": true, - "dependencies": { - "@types/superagent": "*" - } - }, - "node_modules/@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", - "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz", - "integrity": "sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/type-utils": "5.22.0", - "@typescript-eslint/utils": "5.22.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", - "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/typescript-estree": "5.22.0", - "debug": "^4.3.2" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", - "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz", - "integrity": "sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.22.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", - "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", - "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz", - "integrity": "sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/typescript-estree": "5.22.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", - "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.22.0", - "eslint-visitor-keys": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@voucherify/sdk": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@voucherify/sdk/-/sdk-2.0.15.tgz", - "integrity": "sha512-a7e0TeQdNZBlXxXqOu9mHTHkuYuwWtcuZsorzqECiasQJalgOH5jdG/6AIXQ62Z3tUgKEwcAoyYg/wfLA56BvA==", - "dependencies": { - "axios": "0.21.2", - "qs": "6.9.6" - } - }, - "node_modules/@voucherify/sdk/node_modules/axios": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", - "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/@voucherify/sdk/node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "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" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "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" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "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" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "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" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "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" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "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" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "node_modules/async-csv": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/async-csv/-/async-csv-2.1.3.tgz", - "integrity": "sha512-mpsCN+D7mzZeqrlDw7UTPhvDQDlx1i819E9fbKIt8drkgED5FSOlBv3Rk/+sXdevnO2wwlRkVOQ4kdT0AyqPqQ==", - "dependencies": { - "csv": "^5.1.3" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/babel-jest": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.0.3.tgz", - "integrity": "sha512-S0ADyYdcrt5fp9YldRYWCUHdk1BKt9AkvBkLWBoNAEV9NoWZPIj5+MYhPcGgTS65mfv3a+Ymf2UqgWoAVd41cA==", - "dev": true, - "dependencies": { - "@jest/transform": "^28.0.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.0.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz", - "integrity": "sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz", - "integrity": "sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^28.0.2", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "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" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001336", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001336.tgz", - "integrity": "sha512-/YxSlBmL7iKXTbIJ48IQTnAOBk7XmWsxhBF1PZLOko5Dt9qc4Pl+84lfqG3Tc4EuavurRn1QLoVJGxY2iSycfw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" - }, - "node_modules/class-validator": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", - "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", - "dependencies": { - "libphonenumber-js": "^1.9.43", - "validator": "^13.7.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", - "dependencies": { - "colors": "1.0.3" - }, - "engines": { - "node": ">= 0.2.0" - } - }, - "node_modules/cli-table/node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "1.4.0" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/colors-cli": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/colors-cli/-/colors-cli-1.0.28.tgz", - "integrity": "sha512-2XE8s1mB3Jr5rvirk/fFzhWY2m9S2dpZ0mWz3Yl/mzMM8hDVBawL0Rsal5hR1gJP4lgqhQfFfEmaGZpUZgEKrA==", - "bin": { - "colors": "bin/colors" - } - }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/compress-brotli": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", - "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", - "dependencies": { - "@types/json-buffer": "~3.0.0", - "json-buffer": "~3.0.1" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concurrently": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.1.0.tgz", - "integrity": "sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw==", - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "bin": { - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.0 || >=16.0.0" - } - }, - "node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/concurrently/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csv": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", - "integrity": "sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==", - "dependencies": { - "csv-generate": "^3.4.3", - "csv-parse": "^4.16.3", - "csv-stringify": "^5.6.5", - "stream-transform": "^2.1.3" - }, - "engines": { - "node": ">= 0.1.90" - } - }, - "node_modules/csv-generate": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz", - "integrity": "sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==" - }, - "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" - }, - "node_modules/csv-stringify": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", - "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==" - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/date-fns": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", - "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", - "dev": true, - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", - "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", - "engines": { - "node": ">=12" - } - }, - "node_modules/dotenv-expand": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.2.tgz", - "integrity": "sha512-vKKAk+VOzAWOV/dPIeSYqhgC/TQY+6L6Ibkzfsr8xd1stdBsTuGu9asCOXgbYbBeS+f2Y6lqqEuw7riOA+xEUQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.134", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.134.tgz", - "integrity": "sha512-OdD7M2no4Mi8PopfvoOuNcwYDJ2mNFxaBfurA6okG3fLBaMcFah9S+si84FhX+FIWLKkdaiHfl4A+5ep/gOVrg==" - }, - "node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", - "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.2.2", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.0.2.tgz", - "integrity": "sha512-X0qIuI/zKv98k34tM+uGeOgAC73lhs4vROF9MkPk94C1zujtwv4Cla8SxhWn0G1OwvG9gLLL7RjFBkwGVaZ83w==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^28.0.2", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/expect/node_modules/diff-sequences": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", - "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/jest-diff": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", - "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/jest-matcher-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", - "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/expect/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/expect/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "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" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" - }, - "node_modules/follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.3.tgz", - "integrity": "sha512-9v308zIFTIFkWJBN/4N1A5oqm/ed9hWG6GH+KYTCBjYCEJOmHoVtDIWpfrJ0eD6cPB7V53HEVoJ6bL2In8QRaw==", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "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 - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", - "dev": true, - "dependencies": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/formidable/node_modules/qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hpagent": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz", - "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==", - "optional": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/inquirer/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/install": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", - "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.0.3.tgz", - "integrity": "sha512-uS+T5J3w5xyzd1KSJCGKhCo8WTJXbNl86f5SW11wgssbandJOVLRKKUxmhdFfmKxhPeksl1hHZ0HaA8VBzp7xA==", - "dev": true, - "dependencies": { - "@jest/core": "^28.0.3", - "import-local": "^3.0.2", - "jest-cli": "^28.0.3" - }, - "bin": { - "jest": "bin/jest.js" - }, - "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 - } - } - }, - "node_modules/jest-changed-files": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", - "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.0.3.tgz", - "integrity": "sha512-HJ3rUCm3A3faSy7KVH5MFCncqJLtrjEFkTPn9UIcs4Kq77+TXqHsOaI+/k73aHe6DJQigLUXq9rCYj3MYFlbIw==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.0.2", - "@jest/expect": "^28.0.3", - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.0.2", - "jest-matcher-utils": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-runtime": "^28.0.3", - "jest-snapshot": "^28.0.3", - "jest-util": "^28.0.2", - "pretty-format": "^28.0.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/diff-sequences": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", - "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", - "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", - "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/jest-cli": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.0.3.tgz", - "integrity": "sha512-NCPTEONCnhYGo1qzPP4OOcGF04YasM5GZSwQLI1HtEluxa3ct4U65IbZs6DSRt8XN1Rq0jhXwv02m5lHB28Uyg==", - "dev": true, - "dependencies": { - "@jest/core": "^28.0.3", - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.0.3", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "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 - } - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.0.3.tgz", - "integrity": "sha512-3gWOEHwGpNhyYOk9vnUMv94x15QcdjACm7A3lERaluwnyD6d1WZWe9RFCShgIXVOHzRfG1hWxsI2U0gKKSGgDQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.0.2", - "@jest/types": "^28.0.2", - "babel-jest": "^28.0.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.0.3", - "jest-environment-node": "^28.0.2", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-runner": "^28.0.3", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.0.2", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "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 - } - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.0.2.tgz", - "integrity": "sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.0.2.tgz", - "integrity": "sha512-/W5Wc0b+ipR36kDaLngdVEJ/5UYPOITK7rW0djTlCCQdMuWpCFJweMW4TzAoJ6GiRrljPL8FwiyOSoSHKrda2w==", - "dev": true, - "dependencies": { - "@jest/types": "^28.0.2", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/jest-environment-node": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.0.2.tgz", - "integrity": "sha512-o9u5UHZ+NCuIoa44KEF0Behhsz/p1wMm0WumsZfWR1k4IVoWSt3aN0BavSC5dd26VxSGQvkrCnJxxOzhhUEG3Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.0.2", - "@jest/fake-timers": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "jest-mock": "^28.0.2", - "jest-util": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.0.2.tgz", - "integrity": "sha512-EokdL7l5uk4TqWGawwrIt8w3tZNcbeiRxmKGEURf42pl+/rWJy3sCJlon5HBhJXZTW978jk6600BLQOI7i25Ig==", - "dev": true, - "dependencies": { - "@jest/types": "^28.0.2", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.0.2", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.0.2.tgz", - "integrity": "sha512-UGaSPYtxKXl/YKacq6juRAKmMp1z2os8NaU8PSC+xvNikmu3wF6QFrXrihMM4hXeMr9HuNotBrQZHmzDY8KIBQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.0.2.tgz", - "integrity": "sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.0.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.0.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/jest-mock": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.0.2.tgz", - "integrity": "sha512-vfnJ4zXRB0i24jOTGtQJyl26JKsgBKtqRlCnsrORZbG06FToSSn33h2x/bmE8XxqxkLWdZBRo+/65l8Vi3nD+g==", - "dev": true, - "dependencies": { - "@jest/types": "^28.0.2", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.0.3.tgz", - "integrity": "sha512-lfgjd9JhEjpjIN3HLUfdysdK+A7ePQoYmd7WL9DUEWqdnngb1rF56eee6iDXJxl/3eSolpP43VD7VrhjL3NsoQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.3.tgz", - "integrity": "sha512-lCgHMm0/5p0qHemrOzm7kI6JDei28xJwIf7XOEcv1HeAVHnsON8B8jO/woqlU+/GcOXb58ymieYqhk3zjGWnvQ==", - "dev": true, - "dependencies": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.0.3.tgz", - "integrity": "sha512-4OsHMjBLtYUWCENucAQ4Za0jGfEbOFi/Fusv6dzUuaweqx8apb4+5p2LR2yvgF4StFulmxyC238tGLftfu+zBA==", - "dev": true, - "dependencies": { - "@jest/console": "^28.0.2", - "@jest/environment": "^28.0.2", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.0.2", - "jest-environment-node": "^28.0.2", - "jest-haste-map": "^28.0.2", - "jest-leak-detector": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-runtime": "^28.0.3", - "jest-util": "^28.0.2", - "jest-watcher": "^28.0.2", - "jest-worker": "^28.0.2", - "source-map-support": "0.5.13", - "throat": "^6.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runtime": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.0.3.tgz", - "integrity": "sha512-7FtPUmvbZEHLOdjsF6dyHg5Pe4E0DU+f3Vvv8BPzVR7mQA6nFR4clQYLAPyJGnsUvN8WRWn+b5a5SVwnj1WaGg==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.0.2", - "@jest/fake-timers": "^28.0.2", - "@jest/globals": "^28.0.3", - "@jest/source-map": "^28.0.2", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-mock": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-snapshot": "^28.0.3", - "jest-util": "^28.0.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.0.3.tgz", - "integrity": "sha512-nVzAAIlAbrMuvVUrS1YxmAeo1TfSsDDU+K5wv/Ow56MBp+L+Y71ksAbwRp3kGCgZAz4oOXcAMPAwtT9Yh1hlQQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.0.2", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.0.2", - "jest-matcher-utils": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2", - "natural-compare": "^1.4.0", - "pretty-format": "^28.0.2", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", - "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", - "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", - "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/jest-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.0.2.tgz", - "integrity": "sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.0.2.tgz", - "integrity": "sha512-nr0UOvCTtxP0YPdsk01Gk7e7c0xIiEe2nncAe3pj0wBfUvAykTVrMrdeASlAJnlEQCBuwN/GF4hKoCzbkGNCNw==", - "dev": true, - "dependencies": { - "@jest/types": "^28.0.2", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - }, - "node_modules/jest-watcher": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.0.2.tgz", - "integrity": "sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.0.2", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-worker": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.0.2.tgz", - "integrity": "sha512-pijNxfjxT0tGAx+8+OzZ+eayVPCwy/rsZFhebmC0F4YnXu1EHPEPxg7utL3m5uX3EaFH1/jwDxGa1EbjJCST2g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.2.6.tgz", - "integrity": "sha512-mmMlAFwZnCBk7QDA23I49T5VP2NdSsbaT4yrm14cwnlQ67t+wHWPtYj+/gbzeAbcprGbUSzWP3jBE1WKfSERnQ==", - "dependencies": { - "compress-brotli": "^1.3.8", - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libphonenumber-js": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.6.tgz", - "integrity": "sha512-CIjT100/SmntsUjsLVs2t3ufeN4KdNXUxhD07tH153pdbaCWuAjv0jK/gPuywR3IImB/U/MQM+x9RfhMs5XZiA==" - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loading-cli": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loading-cli/-/loading-cli-1.1.0.tgz", - "integrity": "sha512-r6Kj0Y3d3isT4vvJ0tFlND1CcLkpatWmlgQs/PEfnSofJSHZwAbsqexnpQEDj4nlxSXEqFWh/Wu2iQXAAZRPNQ==", - "dependencies": { - "colors-cli": "^1.0.26" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/logform": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", - "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", - "dependencies": { - "@colors/colors": "1.5.0", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/macos-release": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", - "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/mixme": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz", - "integrity": "sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==", - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multer": { - "version": "1.4.4-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", - "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/multer/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/nest-commander": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/nest-commander/-/nest-commander-2.5.0.tgz", - "integrity": "sha512-wJG3UFt8fUAMvAD9NZOW0BIF8XirYwkw6lwwW03xrT0cUtB5fxD4roCAKZbW8pGOdp5EMISq08WgDmmVpQqfkA==", - "dependencies": { - "@golevelup/nestjs-discovery": "3.0.0", - "commander": "8.3.0", - "cosmiconfig": "7.0.1", - "inquirer": "8.2.2" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0", - "@types/inquirer": "^8.1.3" - } - }, - "node_modules/nest-commander/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/nest-commander/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/nest-commander/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/nest-commander/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/nest-commander/node_modules/inquirer": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", - "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/nest-commander/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/nest-commander/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nest-commander/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nest-commander/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nest-commander/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/nest-winston": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/nest-winston/-/nest-winston-1.7.0.tgz", - "integrity": "sha512-FJ94dJ++8BEjQfK5TuqiY5g7pP48RLRss41Bm6bCCfzYgywymEI6m+HPHW9K/q2i7wO5TU6Sva51/Rvmmhxddw==", - "dependencies": { - "fast-safe-stringify": "^2.1.1" - }, - "peerDependencies": { - "@nestjs/common": "^5.0.0 || ^6.6.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "winston": "^3.0.0" - } - }, - "node_modules/ngrok": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-4.3.1.tgz", - "integrity": "sha512-s0joO2liKYiGTVARyzL8hfLIXAZT03GDK3oJqsZK6d61Es+HCx77j8E9ysUbtkMEyvBgYmIMr8taQNsvQt4/DQ==", - "hasInstallScript": true, - "dependencies": { - "@types/node": "^8.10.50", - "extract-zip": "^2.0.1", - "got": "^11.5.1", - "lodash.clonedeep": "^4.5.0", - "uuid": "^7.0.0 || ^8.0.0", - "yaml": "^1.10.0" - }, - "bin": { - "ngrok": "bin/ngrok" - }, - "engines": { - "node": ">=10.19.0 <14 || >=14.2" - }, - "optionalDependencies": { - "hpagent": "^0.1.2" - } - }, - "node_modules/ngrok/node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-fetch": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", - "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-fetch2": { - "name": "node-fetch", - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" - }, - "node_modules/nodejs-base64": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nodejs-base64/-/nodejs-base64-2.0.0.tgz", - "integrity": "sha512-rf83teAz8f251P+HQW0nZyIhIIKrTs8wz11n5+Dp1b+/oWCYSeCfNfbUqda5B0DhspBVXwJ7SPk8aghv/TFsjQ==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.15.0.tgz", - "integrity": "sha512-sFXrMiO07eDWUb/e5ni2yNvtz2hePKqSyukUxYcQv0QHjyXCe+zKP7af/bISjcvsgRBWGyivk5V3KCZ0vg8J3Q==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.0.4", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.0", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.1.7", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.1", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.0.0", - "ini": "^3.0.0", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.2", - "libnpmdiff": "^4.0.2", - "libnpmexec": "^4.0.2", - "libnpmfund": "^3.0.1", - "libnpmhook": "^8.0.2", - "libnpmorg": "^4.0.2", - "libnpmpack": "^4.0.2", - "libnpmpublish": "^6.0.2", - "libnpmsearch": "^5.0.2", - "libnpmteam": "^4.0.2", - "libnpmversion": "^3.0.1", - "make-fetch-happen": "^10.2.0", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.0.0", - "nopt": "^5.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.1", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.0", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "p-map": "^4.0.0", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.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", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "5.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.0", - "cacache": "^16.0.6", - "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.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "4.2.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/move-file": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "infer-owner": "^1.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "4.1.7", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/npm/node_modules/cacache": { - "version": "16.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "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.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/chalk": { - "version": "4.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^4.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/depd": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/dezalgo": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/diff": { - "version": "5.0.0", - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/gauge": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^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" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/glob": { - "version": "8.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.10", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/npm/node_modules/has-flag": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.0", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/ip": { - "version": "1.1.8", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^3.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.9.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "5.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.3.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "6.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "4.0.8", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^4.1.3", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "8.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "4.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "4.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "6.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "5.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "4.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "3.0.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/lru-cache": { - "version": "7.12.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "10.2.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "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.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/minimatch": { - "version": "5.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/minipass": { - "version": "3.3.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "9.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.22 || ^14.13 || >=16" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/nopt": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "4.0.0", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "1.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "5.0.0", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "9.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "5.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "7.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-profile": { - "version": "6.2.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "13.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/npmlog": { - "version": "6.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/pacote": { - "version": "13.6.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/proc-log": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "0.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "1" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/npm/node_modules/read": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/npm/node_modules/semver": { - "version": "7.3.7", - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks": { - "version": "2.6.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.11", - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/ssri": { - "version": "9.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.11", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/unique-filename": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/npm/node_modules/unique-slug": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/npm/node_modules/which": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "4.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/objects-to-csv": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/objects-to-csv/-/objects-to-csv-1.3.6.tgz", - "integrity": "sha512-383eSpS3hmgCksW85KIqBtcbgSW5DDVsCmzLoM6C3q4yzOX2rmtWxF4pbLJ76fz+ufA+4/SwAT4QdaY6IUWmAg==", - "dependencies": { - "async-csv": "^2.1.3" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-name": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", - "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", - "dependencies": { - "macos-release": "^2.5.0", - "windows-release": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/qss": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/qss/-/qss-2.0.3.tgz", - "integrity": "sha512-j48ZBT5IZbSqJiSU8EX4XrN8nXiflHvmMvv2XpFc31gh7n6EpSs75bNr6+oj3FOLWyT8m09pTmqLNl34L7/uPQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-stable-stringify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", - "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "engines": { - "node": "*" - } - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-transform": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz", - "integrity": "sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==", - "dependencies": { - "mixme": "^0.5.1" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superagent": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.3.tgz", - "integrity": "sha512-WA6et4nAvgBCS73lJvv1D0ssI5uk5Gh+TGN/kNe+B608EtcVs/yzfl+OLXTzDs7tOBDIpvgh/WUs1K2OK1zTeQ==", - "dev": true, - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=6.4.0 <13 || >=14" - } - }, - "node_modules/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/superagent/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/supertest": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.3.tgz", - "integrity": "sha512-3GSdMYTMItzsSYjnIcljxMVZKPW1J9kYHZY+7yLfD0wpPwww97GeImZC1oOk0S5+wYl2niJwuFusBJqwLqYM3g==", - "dev": true, - "dependencies": { - "methods": "^1.1.2", - "superagent": "^7.1.3" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dependencies": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" - }, - "node_modules/ts-jest": { - "version": "28.0.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.1.tgz", - "integrity": "sha512-PbkbitaT/9ZYAqqzk3UYTvCq080Seo46T3m/AdwcZ0D8WH2uBhG6PvA8oOAWsZIknzPQU66fYobvFCL8IqIhmg==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^28.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": "^28.0.0", - "jest": "^28.0.0", - "typescript": ">=4.3" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-loader": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", - "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "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 - } - } - }, - "node_modules/tsconfig-paths": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz", - "integrity": "sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==", - "dev": true, - "dependencies": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", - "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^3.9.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz", - "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/webpack": { - "version": "5.72.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", - "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/windows-release": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", - "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", - "dependencies": { - "execa": "^4.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/windows-release/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/windows-release/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/windows-release/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/winston": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", - "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", - "dependencies": { - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/winston-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/winston/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/core": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.2.tgz", - "integrity": "sha512-wav5plcnlxQAfZ+0EUt3dvVTJnJ1au2TlKVQ0jSQJdR1LA6N7QUI49N2Ua6ZnDMwruQaQkoynitMW2l1it3qYQ==", - "requires": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@angular-devkit/schematics": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.2.tgz", - "integrity": "sha512-XCLb23jmqHN0gJg9ZlICaFgfpfnCufIQp5SOsRKMKRkhjKycvDmKnfBTKDlkzb1IaUl6wQwP5k7Z69b9EX+CQw==", - "requires": { - "@angular-devkit/core": "13.3.2", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@angular-devkit/schematics-cli": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.3.2.tgz", - "integrity": "sha512-cUHZFNq2kaCaReJAU28MSu2D+WDFTqt2v03U79TryOutYdF8BV4FyfvKqCSW6WXna219GXSXPepVqDYcjvn7/w==", - "requires": { - "@angular-devkit/core": "13.3.2", - "@angular-devkit/schematics": "13.3.2", - "ansi-colors": "4.1.1", - "inquirer": "8.2.0", - "minimist": "1.2.6", - "symbol-observable": "4.0.0" - }, - "dependencies": { - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "inquirer": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", - "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true - }, - "@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", - "dev": true, - "requires": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.10", - "@babel/types": "^7.17.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - }, - "@commercetools/platform-sdk": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@commercetools/platform-sdk/-/platform-sdk-2.7.0.tgz", - "integrity": "sha512-xm3IT0WP/5NL4vmB/9TSS19+z8ghkHmEmb9n5kXu5GC+wiR/Z6pcpt/BYUR2MuRTqjsq167MThH15jHgWypaQw==", - "requires": { - "@commercetools/sdk-client-v2": "^1.4.0", - "@commercetools/sdk-middleware-auth": "^6.0.4", - "@commercetools/sdk-middleware-http": "^6.0.4", - "@commercetools/sdk-middleware-logger": "^2.1.1", - "querystring": "^0.2.1" - } - }, - "@commercetools/sdk-auth": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-auth/-/sdk-auth-3.0.13.tgz", - "integrity": "sha512-Y+E+oYwQeY4PHu4HBBeNyieQsDoG/f7axHlQXDgdnVcLkyPDHsMHYMiOT8p5MAl+VFCA7F31z9y7x/QUmyyT5Q==", - "requires": { - "@commercetools/sdk-middleware-http": "^6.1.1", - "lodash.defaultsdeep": "^4.6.0", - "qss": "2.0.3" - } - }, - "@commercetools/sdk-client-v2": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-client-v2/-/sdk-client-v2-1.4.0.tgz", - "integrity": "sha512-JYGDQVJtrPsU9keGM6HSIUAwTJtLqEWWEsaLJaDct3ciRc9orNLRn65pPhfXzZkg0kw2c6SkmG8HEEDQbOq0xg==", - "requires": { - "buffer": "^6.0.3", - "node-fetch": "^2.6.1", - "querystring": "^0.2.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@commercetools/sdk-middleware-auth": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-auth/-/sdk-middleware-auth-6.2.1.tgz", - "integrity": "sha512-JNVRVf7zssECg0i/amAG0gnFmx4Kj7rB0J9MfRlvN/54qyA6tKJOJaA5j9hYy60qKSW/NCGbVMcVlBnPJLhREQ==", - "requires": { - "node-fetch": "^2.6.7" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@commercetools/sdk-middleware-http": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-http/-/sdk-middleware-http-6.2.0.tgz", - "integrity": "sha512-3E1nV+awhP0eeFuyChxgbaPF5CWWH0PvGZO9FtNl/mirlYjGbXAHO4Ql5tG4/G+CywlXI9XVA9wKSwxG0kgwgA==" - }, - "@commercetools/sdk-middleware-logger": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-logger/-/sdk-middleware-logger-2.1.1.tgz", - "integrity": "sha512-k/Jm3lsWbszPBHtPAvu0rINTq398p4ddv0zbAH8R4p6Yc1GkBEy6tNgHPzX/eFskI/qerPy9IsW1xK8pqgtHHQ==" - }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, - "requires": { - "@cspotcode/source-map-consumer": "0.8.0" - } - }, - "@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "requires": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "@eslint/eslintrc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", - "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "@golevelup/nestjs-discovery": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-3.0.0.tgz", - "integrity": "sha512-ZvkXtobTKxXB1LJanP/l6Z/Fing88IMBr3uabQpU2IWjfsstjh02qYDSU2cfD6CSmNldX5ewW5Pd+SdK2lU8Sw==", - "requires": { - "lodash": "^4.17.15" - } - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.0.2.tgz", - "integrity": "sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA==", - "dev": true, - "requires": { - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2", - "slash": "^3.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@jest/core": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.0.3.tgz", - "integrity": "sha512-cCQW06vEZ+5r50SB06pOnSWsOBs7F+lswPYnKKfBz1ncLlj1sMqmvjgam8q40KhlZ8Ut4eNAL2Hvfx4BKIO2FA==", - "dev": true, - "requires": { - "@jest/console": "^28.0.2", - "@jest/reporters": "^28.0.3", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.0.2", - "jest-config": "^28.0.3", - "jest-haste-map": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-resolve-dependencies": "^28.0.3", - "jest-runner": "^28.0.3", - "jest-runtime": "^28.0.3", - "jest-snapshot": "^28.0.3", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "jest-watcher": "^28.0.2", - "micromatch": "^4.0.4", - "pretty-format": "^28.0.2", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "@jest/environment": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.0.2.tgz", - "integrity": "sha512-IvI7dEfqVEffDYlw9FQfVBt6kXt/OI38V7QUIur0ulOQgzpKYJDVvLzj4B1TVmHWTGW5tcnJdlZ3hqzV6/I9Qg==", - "dev": true, - "requires": { - "@jest/fake-timers": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "jest-mock": "^28.0.2" - } - }, - "@jest/expect": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.0.3.tgz", - "integrity": "sha512-VEzZr85bqNomgayQkR7hWG5HnbZYWYWagQriZsixhLmOzU6PCpMP61aeVhkCoRrg7ri5f7JDpeTPzDAajIwFHw==", - "dev": true, - "requires": { - "expect": "^28.0.2", - "jest-snapshot": "^28.0.3" - } - }, - "@jest/expect-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.0.2.tgz", - "integrity": "sha512-YryfH2zN5c7M8eLtn9oTBRj1sfD+X4cHNXJnTejqCveOS33wADEZUxJ7de5++lRvByNpRpfAnc8zTK7yrUJqgA==", - "dev": true, - "requires": { - "jest-get-type": "^28.0.2" - } - }, - "@jest/fake-timers": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.0.2.tgz", - "integrity": "sha512-R75yUv+WeybPa4ZVhX9C+8XN0TKjUoceUX+/QEaDVQGxZZOK50eD74cs7iMDTtpodh00d8iLlc9197vgF6oZjA==", - "dev": true, - "requires": { - "@jest/types": "^28.0.2", - "@sinonjs/fake-timers": "^9.1.1", - "@types/node": "*", - "jest-message-util": "^28.0.2", - "jest-mock": "^28.0.2", - "jest-util": "^28.0.2" - } - }, - "@jest/globals": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.0.3.tgz", - "integrity": "sha512-q/zXYI6CKtTSIt1WuTHBYizJhH7K8h+xG5PE3C0oawLlPIvUMDYmpj0JX0XsJwPRLCsz/fYXHZVG46AaEhSPmw==", - "dev": true, - "requires": { - "@jest/environment": "^28.0.2", - "@jest/expect": "^28.0.3", - "@jest/types": "^28.0.2" - } - }, - "@jest/reporters": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.0.3.tgz", - "integrity": "sha512-xrbIc7J/xwo+D7AY3enAR9ZWYCmJ8XIkstTukTGpKDph0gLl/TJje9jl3dssvE4KJzYqMKiSrnE5Nt68I4fTEg==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.0.2", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@jridgewell/trace-mapping": "^0.3.7", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-util": "^28.0.2", - "jest-worker": "^28.0.2", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@jest/schemas": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", - "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.23.3" - } - }, - "@jest/source-map": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", - "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.0.2.tgz", - "integrity": "sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA==", - "dev": true, - "requires": { - "@jest/console": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.0.2.tgz", - "integrity": "sha512-zhnZ8ydkZQTPL7YucB86eOlD79zPy5EGSUKiR2Iv93RVEDU6OEP33kwDBg70ywOcxeJGDRhyo09q7TafNCBiIg==", - "dev": true, - "requires": { - "@jest/test-result": "^28.0.2", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.0.3.tgz", - "integrity": "sha512-+Y0ikI7SwoW/YbK8t9oKwC70h4X2Gd0OVuz5tctRvSV/EDQU00AAkoqevXgPSSFimUmp/sp7Yl8s/1bExDqOIg==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.0.2", - "@jridgewell/trace-mapping": "^0.3.7", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.0.2", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@jest/types": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.0.2.tgz", - "integrity": "sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==" - }, - "@jridgewell/set-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", - "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz", - "integrity": "sha512-az/NhpIwP3K33ILr0T2bso+k2E/SLf8Yidd8mHl0n6sCQ4YdyC8qDhZA6kOPDNDBA56ZnIjngVl0U3jREA0BUA==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nestjs/cli": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-8.2.5.tgz", - "integrity": "sha512-b5DzZ08q/6iWvLz+n2DhEyZ3rsOurN1ec1jYQaWC5DCVQoZCwyOew48bVf01kevTK4eZyQxPwuErf7HnFAc0oQ==", - "requires": { - "@angular-devkit/core": "13.3.2", - "@angular-devkit/schematics": "13.3.2", - "@angular-devkit/schematics-cli": "13.3.2", - "@nestjs/schematics": "^8.0.3", - "chalk": "3.0.0", - "chokidar": "3.5.3", - "cli-table3": "0.6.1", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "7.2.3", - "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": "3.14.1", - "tsconfig-paths-webpack-plugin": "3.5.2", - "typescript": "4.6.2", - "webpack": "5.71.0", - "webpack-node-externals": "3.0.0" - }, - "dependencies": { - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==" - }, - "webpack": { - "version": "5.71.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz", - "integrity": "sha512-g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - } - } - } - }, - "@nestjs/common": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.4.tgz", - "integrity": "sha512-QHi7QcgH/5Jinz+SCfIZJkFHc6Cch1YsAEGFEhi6wSp6MILb0sJMQ1CX06e9tCOAjSlBwaJj4PH0eFCVau5v9Q==", - "requires": { - "axios": "0.26.1", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, - "@nestjs/config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.0.0.tgz", - "integrity": "sha512-Hi1k/1S5ogsS5c0OtNm72thiLSngijOaLDFaGI5ZPxNGpF23lctPg6ox3pYIOhXVRX/u+eiUIp71gswH2k8YNw==", - "requires": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.2", - "lodash": "4.17.21", - "uuid": "8.3.2" - } - }, - "@nestjs/core": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.7.tgz", - "integrity": "sha512-XB9uexHqzr2xkPo6QSiQWJJttyYYLmvQ5My64cFvWFi7Wk2NIus0/xUNInwX3kmFWB6pF1ab5Y2ZBvWdPwGBhw==", - "requires": { - "@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", - "tslib": "2.4.0", - "uuid": "8.3.2" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } - } - }, - "@nestjs/platform-express": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.7.tgz", - "integrity": "sha512-lPE5Ltg2NbQGRQIwXWY+4cNrXhJdycbxFDQ8mNxSIuv+LbrJBIdEB/NONk+LLn9N/8d2+I2LsIETGQrPvsejBg==", - "requires": { - "body-parser": "1.20.0", - "cors": "2.8.5", - "express": "4.18.1", - "multer": "1.4.4-lts.1", - "tslib": "2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } - } - }, - "@nestjs/schematics": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.11.tgz", - "integrity": "sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg==", - "requires": { - "@angular-devkit/core": "13.3.5", - "@angular-devkit/schematics": "13.3.5", - "fs-extra": "10.1.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "13.3.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz", - "integrity": "sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ==", - "requires": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "@angular-devkit/schematics": { - "version": "13.3.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz", - "integrity": "sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==", - "requires": { - "@angular-devkit/core": "13.3.5", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@nestjs/testing": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.4.7.tgz", - "integrity": "sha512-aedpeJFicTBeiTCvJWUG45WMMS53f5eu8t2fXsfjsU1t+WdDJqYcZyrlCzA4dL1B7MfbqaTURdvuVVHTmJO8ag==", - "dev": true, - "requires": { - "tslib": "2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", - "requires": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@sinclair/typebox": { - "version": "0.23.5", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", - "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", - "dev": true - }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", - "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-3zsplnP2djeps5P9OyarTxwRpMLoe5Ash8aL9iprw0JxB+FAHjY+ifn4yZUuW4/9hqtnmor6uvjSRzJhiVbrEQ==", - "dev": true - }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "@types/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-Pxxx3i3AyK7vKAj3LRM/vF7ETcHKiLJ/u5CnNgbz/eYj/vB3xGAYtRxI5IKtq0hpe5iFHD22BKV3n6WHUu0k4Q==", - "peer": true, - "requires": { - "@types/through": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "27.5.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz", - "integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==", - "dev": true, - "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "@types/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "16.11.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", - "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "requires": { - "@types/node": "*" - } - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/superagent": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", - "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", - "dev": true, - "requires": { - "@types/cookiejar": "*", - "@types/node": "*" - } - }, - "@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", - "dev": true, - "requires": { - "@types/superagent": "*" - } - }, - "@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "peer": true, - "requires": { - "@types/node": "*" - } - }, - "@types/yargs": { - "version": "17.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", - "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz", - "integrity": "sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/type-utils": "5.22.0", - "@typescript-eslint/utils": "5.22.0", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", - "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/typescript-estree": "5.22.0", - "debug": "^4.3.2" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", - "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz", - "integrity": "sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.22.0", - "debug": "^4.3.2", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", - "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", - "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/visitor-keys": "5.22.0", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz", - "integrity": "sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.22.0", - "@typescript-eslint/types": "5.22.0", - "@typescript-eslint/typescript-estree": "5.22.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", - "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.22.0", - "eslint-visitor-keys": "^3.0.0" - } - }, - "@voucherify/sdk": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@voucherify/sdk/-/sdk-2.0.15.tgz", - "integrity": "sha512-a7e0TeQdNZBlXxXqOu9mHTHkuYuwWtcuZsorzqECiasQJalgOH5jdG/6AIXQ62Z3tUgKEwcAoyYg/wfLA56BvA==", - "requires": { - "axios": "0.21.2", - "qs": "6.9.6" - }, - "dependencies": { - "axios": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz", - "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" - } - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@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/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@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-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@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-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@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-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@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/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": { - "ajv": "^8.0.0" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" - }, - "async-csv": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/async-csv/-/async-csv-2.1.3.tgz", - "integrity": "sha512-mpsCN+D7mzZeqrlDw7UTPhvDQDlx1i819E9fbKIt8drkgED5FSOlBv3Rk/+sXdevnO2wwlRkVOQ4kdT0AyqPqQ==", - "requires": { - "csv": "^5.1.3" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "babel-jest": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.0.3.tgz", - "integrity": "sha512-S0ADyYdcrt5fp9YldRYWCUHdk1BKt9AkvBkLWBoNAEV9NoWZPIj5+MYhPcGgTS65mfv3a+Ymf2UqgWoAVd41cA==", - "dev": true, - "requires": { - "@jest/transform": "^28.0.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.0.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz", - "integrity": "sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz", - "integrity": "sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^28.0.2", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001336", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001336.tgz", - "integrity": "sha512-/YxSlBmL7iKXTbIJ48IQTnAOBk7XmWsxhBF1PZLOko5Dt9qc4Pl+84lfqG3Tc4EuavurRn1QLoVJGxY2iSycfw==" - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" - }, - "class-validator": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", - "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", - "requires": { - "libphonenumber-js": "^1.9.43", - "validator": "^13.7.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" - }, - "cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==" - } - } - }, - "cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", - "requires": { - "colors": "1.4.0", - "string-width": "^4.2.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - }, - "dependencies": { - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "optional": true - }, - "colors-cli": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/colors-cli/-/colors-cli-1.0.28.tgz", - "integrity": "sha512-2XE8s1mB3Jr5rvirk/fFzhWY2m9S2dpZ0mWz3Yl/mzMM8hDVBawL0Rsal5hR1gJP4lgqhQfFfEmaGZpUZgEKrA==" - }, - "colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "requires": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compress-brotli": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", - "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", - "requires": { - "@types/json-buffer": "~3.0.0", - "json-buffer": "~3.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concurrently": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.1.0.tgz", - "integrity": "sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw==", - "requires": { - "chalk": "^4.1.0", - "date-fns": "^2.16.1", - "lodash": "^4.17.21", - "rxjs": "^6.6.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^16.2.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", - "dev": true - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "csv": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", - "integrity": "sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==", - "requires": { - "csv-generate": "^3.4.3", - "csv-parse": "^4.16.3", - "csv-stringify": "^5.6.5", - "stream-transform": "^2.1.3" - } - }, - "csv-generate": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz", - "integrity": "sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==" - }, - "csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" - }, - "csv-stringify": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", - "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==" - }, - "data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" - }, - "date-fns": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", - "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - } - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "requires": { - "clone": "^1.0.2" - } - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dotenv": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", - "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==" - }, - "dotenv-expand": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.2.tgz", - "integrity": "sha512-vKKAk+VOzAWOV/dPIeSYqhgC/TQY+6L6Ibkzfsr8xd1stdBsTuGu9asCOXgbYbBeS+f2Y6lqqEuw7riOA+xEUQ==" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.134", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.134.tgz", - "integrity": "sha512-OdD7M2no4Mi8PopfvoOuNcwYDJ2mNFxaBfurA6okG3fLBaMcFah9S+si84FhX+FIWLKkdaiHfl4A+5ep/gOVrg==" - }, - "emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", - "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.2.2", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", - "dev": true, - "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.0.2.tgz", - "integrity": "sha512-X0qIuI/zKv98k34tM+uGeOgAC73lhs4vROF9MkPk94C1zujtwv4Cla8SxhWn0G1OwvG9gLLL7RjFBkwGVaZ83w==", - "dev": true, - "requires": { - "@jest/expect-utils": "^28.0.2", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "diff-sequences": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", - "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", - "dev": true - }, - "jest-diff": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", - "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - } - }, - "jest-matcher-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", - "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "requires": { - "pend": "~1.2.0" - } - }, - "fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" - }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" - }, - "follow-redirects": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", - "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" - }, - "fork-ts-checker-webpack-plugin": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.3.tgz", - "integrity": "sha512-9v308zIFTIFkWJBN/4N1A5oqm/ed9hWG6GH+KYTCBjYCEJOmHoVtDIWpfrJ0eD6cPB7V53HEVoJ6bL2In8QRaw==", - "requires": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", - "dev": true, - "requires": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" - }, - "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true - } - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true - }, - "hpagent": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz", - "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==", - "optional": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "husky": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", - "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "install": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", - "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==" - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" - }, - "jest": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.0.3.tgz", - "integrity": "sha512-uS+T5J3w5xyzd1KSJCGKhCo8WTJXbNl86f5SW11wgssbandJOVLRKKUxmhdFfmKxhPeksl1hHZ0HaA8VBzp7xA==", - "dev": true, - "requires": { - "@jest/core": "^28.0.3", - "import-local": "^3.0.2", - "jest-cli": "^28.0.3" - } - }, - "jest-changed-files": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", - "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "throat": "^6.0.1" - } - }, - "jest-circus": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.0.3.tgz", - "integrity": "sha512-HJ3rUCm3A3faSy7KVH5MFCncqJLtrjEFkTPn9UIcs4Kq77+TXqHsOaI+/k73aHe6DJQigLUXq9rCYj3MYFlbIw==", - "dev": true, - "requires": { - "@jest/environment": "^28.0.2", - "@jest/expect": "^28.0.3", - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.0.2", - "jest-matcher-utils": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-runtime": "^28.0.3", - "jest-snapshot": "^28.0.3", - "jest-util": "^28.0.2", - "pretty-format": "^28.0.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "diff-sequences": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", - "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", - "dev": true - }, - "jest-diff": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", - "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - } - }, - "jest-matcher-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", - "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "jest-cli": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.0.3.tgz", - "integrity": "sha512-NCPTEONCnhYGo1qzPP4OOcGF04YasM5GZSwQLI1HtEluxa3ct4U65IbZs6DSRt8XN1Rq0jhXwv02m5lHB28Uyg==", - "dev": true, - "requires": { - "@jest/core": "^28.0.3", - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.0.3", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-config": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.0.3.tgz", - "integrity": "sha512-3gWOEHwGpNhyYOk9vnUMv94x15QcdjACm7A3lERaluwnyD6d1WZWe9RFCShgIXVOHzRfG1hWxsI2U0gKKSGgDQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.0.2", - "@jest/types": "^28.0.2", - "babel-jest": "^28.0.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.0.3", - "jest-environment-node": "^28.0.2", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-runner": "^28.0.3", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.0.2", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, - "jest-docblock": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.0.2.tgz", - "integrity": "sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.0.2.tgz", - "integrity": "sha512-/W5Wc0b+ipR36kDaLngdVEJ/5UYPOITK7rW0djTlCCQdMuWpCFJweMW4TzAoJ6GiRrljPL8FwiyOSoSHKrda2w==", - "dev": true, - "requires": { - "@jest/types": "^28.0.2", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "jest-environment-node": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.0.2.tgz", - "integrity": "sha512-o9u5UHZ+NCuIoa44KEF0Behhsz/p1wMm0WumsZfWR1k4IVoWSt3aN0BavSC5dd26VxSGQvkrCnJxxOzhhUEG3Q==", - "dev": true, - "requires": { - "@jest/environment": "^28.0.2", - "@jest/fake-timers": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "jest-mock": "^28.0.2", - "jest-util": "^28.0.2" - } - }, - "jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true - }, - "jest-haste-map": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.0.2.tgz", - "integrity": "sha512-EokdL7l5uk4TqWGawwrIt8w3tZNcbeiRxmKGEURf42pl+/rWJy3sCJlon5HBhJXZTW978jk6600BLQOI7i25Ig==", - "dev": true, - "requires": { - "@jest/types": "^28.0.2", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.0.2", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-leak-detector": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.0.2.tgz", - "integrity": "sha512-UGaSPYtxKXl/YKacq6juRAKmMp1z2os8NaU8PSC+xvNikmu3wF6QFrXrihMM4hXeMr9HuNotBrQZHmzDY8KIBQ==", - "dev": true, - "requires": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - } - } - }, - "jest-message-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.0.2.tgz", - "integrity": "sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.0.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.0.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "jest-mock": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.0.2.tgz", - "integrity": "sha512-vfnJ4zXRB0i24jOTGtQJyl26JKsgBKtqRlCnsrORZbG06FToSSn33h2x/bmE8XxqxkLWdZBRo+/65l8Vi3nD+g==", - "dev": true, - "requires": { - "@jest/types": "^28.0.2", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true - }, - "jest-resolve": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.0.3.tgz", - "integrity": "sha512-lfgjd9JhEjpjIN3HLUfdysdK+A7ePQoYmd7WL9DUEWqdnngb1rF56eee6iDXJxl/3eSolpP43VD7VrhjL3NsoQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.0.2", - "jest-validate": "^28.0.2", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.3.tgz", - "integrity": "sha512-lCgHMm0/5p0qHemrOzm7kI6JDei28xJwIf7XOEcv1HeAVHnsON8B8jO/woqlU+/GcOXb58ymieYqhk3zjGWnvQ==", - "dev": true, - "requires": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.0.3" - } - }, - "jest-runner": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.0.3.tgz", - "integrity": "sha512-4OsHMjBLtYUWCENucAQ4Za0jGfEbOFi/Fusv6dzUuaweqx8apb4+5p2LR2yvgF4StFulmxyC238tGLftfu+zBA==", - "dev": true, - "requires": { - "@jest/console": "^28.0.2", - "@jest/environment": "^28.0.2", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.0.2", - "jest-environment-node": "^28.0.2", - "jest-haste-map": "^28.0.2", - "jest-leak-detector": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-runtime": "^28.0.3", - "jest-util": "^28.0.2", - "jest-watcher": "^28.0.2", - "jest-worker": "^28.0.2", - "source-map-support": "0.5.13", - "throat": "^6.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "jest-runtime": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.0.3.tgz", - "integrity": "sha512-7FtPUmvbZEHLOdjsF6dyHg5Pe4E0DU+f3Vvv8BPzVR7mQA6nFR4clQYLAPyJGnsUvN8WRWn+b5a5SVwnj1WaGg==", - "dev": true, - "requires": { - "@jest/environment": "^28.0.2", - "@jest/fake-timers": "^28.0.2", - "@jest/globals": "^28.0.3", - "@jest/source-map": "^28.0.2", - "@jest/test-result": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-mock": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.0.3", - "jest-snapshot": "^28.0.3", - "jest-util": "^28.0.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-snapshot": { - "version": "28.0.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.0.3.tgz", - "integrity": "sha512-nVzAAIlAbrMuvVUrS1YxmAeo1TfSsDDU+K5wv/Ow56MBp+L+Y71ksAbwRp3kGCgZAz4oOXcAMPAwtT9Yh1hlQQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.0.2", - "@jest/transform": "^28.0.3", - "@jest/types": "^28.0.2", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.0.2", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.0.2", - "jest-matcher-utils": "^28.0.2", - "jest-message-util": "^28.0.2", - "jest-util": "^28.0.2", - "natural-compare": "^1.4.0", - "pretty-format": "^28.0.2", - "semver": "^7.3.5" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "diff-sequences": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", - "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", - "dev": true - }, - "jest-diff": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", - "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - } - }, - "jest-matcher-utils": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", - "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^28.0.2", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.0.2" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "jest-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.0.2.tgz", - "integrity": "sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA==", - "dev": true, - "requires": { - "@jest/types": "^28.0.2", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-validate": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.0.2.tgz", - "integrity": "sha512-nr0UOvCTtxP0YPdsk01Gk7e7c0xIiEe2nncAe3pj0wBfUvAykTVrMrdeASlAJnlEQCBuwN/GF4hKoCzbkGNCNw==", - "dev": true, - "requires": { - "@jest/types": "^28.0.2", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.0.2" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "pretty-format": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", - "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", - "dev": true, - "requires": { - "@jest/schemas": "^28.0.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", - "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.0.2.tgz", - "integrity": "sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q==", - "dev": true, - "requires": { - "@jest/test-result": "^28.0.2", - "@jest/types": "^28.0.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.0.2", - "string-length": "^4.0.1" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "jest-worker": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.0.2.tgz", - "integrity": "sha512-pijNxfjxT0tGAx+8+OzZ+eayVPCwy/rsZFhebmC0F4YnXu1EHPEPxg7utL3m5uX3EaFH1/jwDxGa1EbjJCST2g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "keyv": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.2.6.tgz", - "integrity": "sha512-mmMlAFwZnCBk7QDA23I49T5VP2NdSsbaT4yrm14cwnlQ67t+wHWPtYj+/gbzeAbcprGbUSzWP3jBE1WKfSERnQ==", - "requires": { - "compress-brotli": "^1.3.8", - "json-buffer": "3.0.1" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "libphonenumber-js": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.6.tgz", - "integrity": "sha512-CIjT100/SmntsUjsLVs2t3ufeN4KdNXUxhD07tH153pdbaCWuAjv0jK/gPuywR3IImB/U/MQM+x9RfhMs5XZiA==" - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - }, - "loading-cli": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loading-cli/-/loading-cli-1.1.0.tgz", - "integrity": "sha512-r6Kj0Y3d3isT4vvJ0tFlND1CcLkpatWmlgQs/PEfnSofJSHZwAbsqexnpQEDj4nlxSXEqFWh/Wu2iQXAAZRPNQ==", - "requires": { - "colors-cli": "^1.0.26" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "logform": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", - "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", - "requires": { - "@colors/colors": "1.5.0", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "macos-release": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", - "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==" - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", - "requires": { - "fs-monkey": "1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "mixme": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz", - "integrity": "sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multer": { - "version": "1.4.4-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", - "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", - "requires": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - } - } - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "nest-commander": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/nest-commander/-/nest-commander-2.5.0.tgz", - "integrity": "sha512-wJG3UFt8fUAMvAD9NZOW0BIF8XirYwkw6lwwW03xrT0cUtB5fxD4roCAKZbW8pGOdp5EMISq08WgDmmVpQqfkA==", - "requires": { - "@golevelup/nestjs-discovery": "3.0.0", - "commander": "8.3.0", - "cosmiconfig": "7.0.1", - "inquirer": "8.2.2" - }, - "dependencies": { - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - }, - "inquirer": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz", - "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "nest-winston": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/nest-winston/-/nest-winston-1.7.0.tgz", - "integrity": "sha512-FJ94dJ++8BEjQfK5TuqiY5g7pP48RLRss41Bm6bCCfzYgywymEI6m+HPHW9K/q2i7wO5TU6Sva51/Rvmmhxddw==", - "requires": { - "fast-safe-stringify": "^2.1.1" - } - }, - "ngrok": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-4.3.1.tgz", - "integrity": "sha512-s0joO2liKYiGTVARyzL8hfLIXAZT03GDK3oJqsZK6d61Es+HCx77j8E9ysUbtkMEyvBgYmIMr8taQNsvQt4/DQ==", - "requires": { - "@types/node": "^8.10.50", - "extract-zip": "^2.0.1", - "got": "^11.5.1", - "hpagent": "^0.1.2", - "lodash.clonedeep": "^4.5.0", - "uuid": "^7.0.0 || ^8.0.0", - "yaml": "^1.10.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - } - } - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "requires": { - "lodash": "^4.17.21" - } - }, - "node-fetch": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", - "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "node-fetch2": { - "version": "npm:node-fetch@2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" - }, - "nodejs-base64": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nodejs-base64/-/nodejs-base64-2.0.0.tgz", - "integrity": "sha512-rf83teAz8f251P+HQW0nZyIhIIKrTs8wz11n5+Dp1b+/oWCYSeCfNfbUqda5B0DhspBVXwJ7SPk8aghv/TFsjQ==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - }, - "npm": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.15.0.tgz", - "integrity": "sha512-sFXrMiO07eDWUb/e5ni2yNvtz2hePKqSyukUxYcQv0QHjyXCe+zKP7af/bISjcvsgRBWGyivk5V3KCZ0vg8J3Q==", - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.0.4", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.0", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.1.7", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.1", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.0.0", - "ini": "^3.0.0", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.2", - "libnpmdiff": "^4.0.2", - "libnpmexec": "^4.0.2", - "libnpmfund": "^3.0.1", - "libnpmhook": "^8.0.2", - "libnpmorg": "^4.0.2", - "libnpmpack": "^4.0.2", - "libnpmpublish": "^6.0.2", - "libnpmsearch": "^5.0.2", - "libnpmteam": "^4.0.2", - "libnpmversion": "^3.0.1", - "make-fetch-happen": "^10.2.0", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.0.0", - "nopt": "^5.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.1", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.0", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "p-map": "^4.0.0", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.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", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "@colors/colors": { - "version": "1.5.0", - "bundled": true, - "optional": true - }, - "@gar/promisify": { - "version": "1.1.3", - "bundled": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "bundled": true - }, - "@npmcli/arborist": { - "version": "5.3.0", - "bundled": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.0", - "cacache": "^16.0.6", - "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.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true - }, - "@npmcli/config": { - "version": "4.2.0", - "bundled": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/disparity-colors": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-styles": "^4.3.0" - } - }, - "@npmcli/fs": { - "version": "2.1.0", - "bundled": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.1", - "bundled": true, - "requires": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "bundled": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/map-workspaces": { - "version": "2.0.3", - "bundled": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@npmcli/metavuln-calculator": { - "version": "3.1.1", - "bundled": true, - "requires": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "2.0.0", - "bundled": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "bundled": true - }, - "@npmcli/node-gyp": { - "version": "2.0.0", - "bundled": true - }, - "@npmcli/package-json": { - "version": "2.0.0", - "bundled": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "3.0.0", - "bundled": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "4.1.7", - "bundled": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true - }, - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "agent-base": { - "version": "6.0.2", - "bundled": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "bundled": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "bundled": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "bundled": true - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "aproba": { - "version": "2.0.0", - "bundled": true - }, - "archy": { - "version": "1.0.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "3.0.0", - "bundled": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asap": { - "version": "2.0.6", - "bundled": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true - }, - "bin-links": { - "version": "3.0.1", - "bundled": true, - "requires": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "bundled": true - }, - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "builtins": { - "version": "5.0.1", - "bundled": true, - "requires": { - "semver": "^7.0.0" - } - }, - "cacache": { - "version": "16.1.1", - "bundled": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "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.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "bundled": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "bundled": true - }, - "cidr-regex": { - "version": "3.1.1", - "bundled": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "bundled": true - }, - "cli-columns": { - "version": "4.0.0", - "bundled": true, - "requires": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, - "cli-table3": { - "version": "0.6.2", - "bundled": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "clone": { - "version": "1.0.4", - "bundled": true - }, - "cmd-shim": { - "version": "5.0.0", - "bundled": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true - }, - "color-support": { - "version": "1.1.3", - "bundled": true - }, - "columnify": { - "version": "1.6.0", - "bundled": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - } - }, - "common-ancestor-path": { - "version": "1.0.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "debug": { - "version": "4.3.4", - "bundled": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "bundled": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "depd": { - "version": "1.1.2", - "bundled": true - }, - "dezalgo": { - "version": "1.0.4", - "bundled": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "5.0.0", - "bundled": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true - }, - "encoding": { - "version": "0.1.13", - "bundled": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "bundled": true - }, - "err-code": { - "version": "2.0.3", - "bundled": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "bundled": true - }, - "fs-minipass": { - "version": "2.1.0", - "bundled": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true - }, - "gauge": { - "version": "4.0.4", - "bundled": true, - "requires": { - "aproba": "^1.0.3 || ^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" - } - }, - "glob": { - "version": "8.0.3", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "bundled": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "bundled": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "hosted-git-info": { - "version": "5.0.0", - "bundled": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "bundled": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "bundled": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore-walk": { - "version": "5.0.1", - "bundled": true, - "requires": { - "minimatch": "^5.0.1" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "indent-string": { - "version": "4.0.0", - "bundled": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, - "ini": { - "version": "3.0.0", - "bundled": true - }, - "init-package-json": { - "version": "3.0.2", - "bundled": true, - "requires": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - } - }, - "ip": { - "version": "1.1.8", - "bundled": true - }, - "ip-regex": { - "version": "4.3.0", - "bundled": true - }, - "is-cidr": { - "version": "4.0.2", - "bundled": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, - "is-core-module": { - "version": "2.9.0", - "bundled": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true - }, - "is-lambda": { - "version": "1.0.1", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "bundled": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "bundled": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true - }, - "just-diff": { - "version": "5.0.3", - "bundled": true - }, - "just-diff-apply": { - "version": "5.3.1", - "bundled": true - }, - "libnpmaccess": { - "version": "6.0.3", - "bundled": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmdiff": { - "version": "4.0.4", - "bundled": true, - "requires": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" - } - }, - "libnpmexec": { - "version": "4.0.8", - "bundled": true, - "requires": { - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^4.1.3", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - } - }, - "libnpmfund": { - "version": "3.0.2", - "bundled": true, - "requires": { - "@npmcli/arborist": "^5.0.0" - } - }, - "libnpmhook": { - "version": "8.0.3", - "bundled": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmorg": { - "version": "4.0.3", - "bundled": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmpack": { - "version": "4.1.2", - "bundled": true, - "requires": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" - } - }, - "libnpmpublish": { - "version": "6.0.4", - "bundled": true, - "requires": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" - } - }, - "libnpmsearch": { - "version": "5.0.3", - "bundled": true, - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmteam": { - "version": "4.0.3", - "bundled": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmversion": { - "version": "3.0.6", - "bundled": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" - } - }, - "lru-cache": { - "version": "7.12.0", - "bundled": true - }, - "make-fetch-happen": { - "version": "10.2.0", - "bundled": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "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.0" - } - }, - "minimatch": { - "version": "5.1.0", - "bundled": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "3.3.4", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "bundled": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "bundled": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "bundled": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "bundled": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "bundled": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "bundled": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "bundled": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "bundled": true - }, - "mute-stream": { - "version": "0.0.8", - "bundled": true - }, - "negotiator": { - "version": "0.6.3", - "bundled": true - }, - "node-gyp": { - "version": "9.0.0", - "bundled": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "nopt": { - "version": "5.0.0", - "bundled": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "4.0.0", - "bundled": true, - "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "npm-audit-report": { - "version": "3.0.0", - "bundled": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "5.0.0", - "bundled": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true - }, - "npm-package-arg": { - "version": "9.1.0", - "bundled": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.1", - "bundled": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "7.0.1", - "bundled": true, - "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-profile": { - "version": "6.2.0", - "bundled": true, - "requires": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-registry-fetch": { - "version": "13.3.0", - "bundled": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.1", - "bundled": true - }, - "npmlog": { - "version": "6.0.2", - "bundled": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "bundled": true - }, - "p-map": { - "version": "4.0.0", - "bundled": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pacote": { - "version": "13.6.1", - "bundled": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - } - }, - "parse-conflict-json": { - "version": "2.0.2", - "bundled": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "proc-log": { - "version": "2.0.1", - "bundled": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "bundled": true - }, - "promise-call-limit": { - "version": "1.0.1", - "bundled": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true - }, - "promise-retry": { - "version": "2.0.1", - "bundled": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "requires": { - "read": "1" - } - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "3.0.0", - "bundled": true - }, - "read-package-json": { - "version": "5.0.1", - "bundled": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "bundled": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "retry": { - "version": "0.12.0", - "bundled": true - }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "semver": { - "version": "7.3.7", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true - }, - "smart-buffer": { - "version": "4.2.0", - "bundled": true - }, - "socks": { - "version": "2.6.2", - "bundled": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "bundled": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "spdx-correct": { - "version": "3.1.1", - "bundled": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "bundled": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "bundled": true - }, - "ssri": { - "version": "9.0.1", - "bundled": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "bundled": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "bundled": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true - }, - "treeverse": { - "version": "2.0.0", - "bundled": true - }, - "unique-filename": { - "version": "1.1.1", - "bundled": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "bundled": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "bundled": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "walk-up-path": { - "version": "1.0.0", - "bundled": true - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "bundled": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "4.0.1", - "bundled": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" - }, - "objects-to-csv": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/objects-to-csv/-/objects-to-csv-1.3.6.tgz", - "integrity": "sha512-383eSpS3hmgCksW85KIqBtcbgSW5DDVsCmzLoM6C3q4yzOX2rmtWxF4pbLJ76fz+ufA+4/SwAT4QdaY6IUWmAg==", - "requires": { - "async-csv": "^2.1.3" - } - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "requires": { - "fn.name": "1.x.x" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-name": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", - "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", - "requires": { - "macos-release": "^2.5.0", - "windows-release": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "qss": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/qss/-/qss-2.0.3.tgz", - "integrity": "sha512-j48ZBT5IZbSqJiSU8EX4XrN8nXiflHvmMvv2XpFc31gh7n6EpSs75bNr6+oj3FOLWyT8m09pTmqLNl34L7/uPQ==" - }, - "querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "requires": { - "resolve": "^1.1.6" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safe-stable-stringify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", - "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - } - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" - }, - "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "stream-transform": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz", - "integrity": "sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==", - "requires": { - "mixme": "^0.5.1" - } - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "superagent": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.3.tgz", - "integrity": "sha512-WA6et4nAvgBCS73lJvv1D0ssI5uk5Gh+TGN/kNe+B608EtcVs/yzfl+OLXTzDs7tOBDIpvgh/WUs1K2OK1zTeQ==", - "dev": true, - "requires": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" - }, - "dependencies": { - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "supertest": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.3.tgz", - "integrity": "sha512-3GSdMYTMItzsSYjnIcljxMVZKPW1J9kYHZY+7yLfD0wpPwww97GeImZC1oOk0S5+wYl2niJwuFusBJqwLqYM3g==", - "dev": true, - "requires": { - "methods": "^1.1.2", - "superagent": "^7.1.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "requires": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - }, - "triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" - }, - "ts-jest": { - "version": "28.0.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.1.tgz", - "integrity": "sha512-PbkbitaT/9ZYAqqzk3UYTvCq080Seo46T3m/AdwcZ0D8WH2uBhG6PvA8oOAWsZIknzPQU66fYobvFCL8IqIhmg==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^28.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^20.x" - } - }, - "ts-loader": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", - "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "0.7.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", - "yn": "3.1.1" - } - }, - "tsconfig-paths": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz", - "integrity": "sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==", - "dev": true, - "requires": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - } - } - }, - "tsconfig-paths-webpack-plugin": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", - "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - } - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz", - "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - } - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "requires": { - "defaults": "^1.0.3" - } - }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "webpack": { - "version": "5.72.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", - "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - } - }, - "webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==" - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "windows-release": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", - "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", - "requires": { - "execa": "^4.0.2" - }, - "dependencies": { - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" - } - } - }, - "winston": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", - "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", - "requires": { - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "requires": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "dependencies": { - "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 37945494..00000000 --- a/package.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "commerce-tools-integration", - "version": "5.2.2", - "description": "", - "author": "", - "private": true, - "license": "MIT", - "scripts": { - "prebuild": "rimraf dist", - "build": "nest build", - "command": "nest start --config nest-commander.json --", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "dev": "nest start --watch", - "dev:attach": "nest start --watch --config nest-dev-attached.json", - "dev:debug": "nest start --debug --watch", - "start": "node dist/main", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest", - "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json", - "prepare": "husky install", - "config": "nest start --config nest-commander.json -- config", - "api-extension-list": "nest start --config nest-commander.json -- integration-list", - "api-extension-add": "nest start --config nest-commander.json -- integration-add", - "api-extension-update": "nest start --config nest-commander.json -- integration-update", - "api-extension-delete": "nest start --config nest-commander.json -- integration-delete", - "migrate": "nest start --config nest-commander.json -- migrate" - }, - "dependencies": { - "@commercetools/platform-sdk": "^2.7.0", - "@commercetools/sdk-auth": "^3.0.13", - "@commercetools/sdk-client-v2": "^1.4.0", - "@nestjs/cli": "^8.0.0", - "@nestjs/common": "^8.0.0", - "@nestjs/config": "^2.0.0", - "@nestjs/core": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@voucherify/sdk": "^2.0.15", - "async": "^3.2.3", - "class-transformer": "^0.5.1", - "class-validator": "^0.13.2", - "cli-table": "^0.3.11", - "concurrently": "^7.1.0", - "flat": "^5.0.2", - "form-data": "^4.0.0", - "install": "^0.13.0", - "joi": "^17.6.0", - "loading-cli": "^1.1.0", - "mkdirp": "^1.0.4", - "nest-commander": "^2.5.0", - "nest-winston": "^1.7.0", - "ngrok": "^4.3.1", - "node-fetch": "^3.2.10", - "node-fetch2": "npm:node-fetch@^2.6.7", - "nodejs-base64": "^2.0.0", - "npm": "^8.15.0", - "objects-to-csv": "^1.3.6", - "reflect-metadata": "^0.1.13", - "rimraf": "^3.0.2", - "rxjs": "^7.2.0", - "winston": "^3.8.1" - }, - "devDependencies": { - "@nestjs/schematics": "^8.0.0", - "@nestjs/testing": "^8.0.0", - "@types/express": "^4.17.13", - "@types/flat": "^5.0.2", - "@types/jest": "27.5.0", - "@types/node": "^16.0.0", - "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^8.0.1", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "husky": "^7.0.4", - "jest": "28.0.3", - "prettier": "^2.3.2", - "source-map-support": "^0.5.20", - "supertest": "^6.1.3", - "ts-jest": "28.0.1", - "ts-loader": "^9.2.3", - "ts-node": "^10.0.0", - "tsconfig-paths": "4.0.0", - "typescript": "^4.3.5", - "webpack": "^5.72.0" - }, - "jest": { - "clearMocks": true, - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "testEnvironment": "node" - } -} diff --git a/src/commercetools/__mocks__/commerce-tools-connector.service.ts b/src/commercetools/__mocks__/commerce-tools-connector.service.ts deleted file mode 100644 index e1877a4e..00000000 --- a/src/commercetools/__mocks__/commerce-tools-connector.service.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { CommercetoolsConnectorService } from '../commercetools-connector.service'; - -export const getCommerceToolsConnectorServiceMockWithEmptyProductResponse = - () => { - const commerceToolsConnectoService = jest.createMockFromModule( - '../commercetools-connector.service', - ) as CommercetoolsConnectorService & { getProductMock: jest.Mock }; - const products: any = { - body: { - results: [], - }, - }; - - commerceToolsConnectoService.getProductMock = jest - .fn() - .mockReturnValue(products); - - commerceToolsConnectoService.getClient = jest.fn().mockReturnValue({ - products: jest.fn().mockReturnValue({ - get: jest.fn().mockReturnValue({ - execute: commerceToolsConnectoService.getProductMock, - }), - }), - }); - - return commerceToolsConnectoService; - }; - -type Product = { - sku: string; - price: number; - id: string; -}; -export const getCommerceToolsConnectorServiceMockWithProductResponse = ( - product: Product, -) => { - const commerceToolsConnectorService = jest.createMockFromModule( - '../commercetools-connector.service', - ) as CommercetoolsConnectorService; - - const products: any = { - body: { - results: [ - { - id: product.id, - masterData: { - current: { - variants: [ - { - sku: product.sku, - prices: [ - { - value: { - centAmount: product.price, - currencyCode: 'EUR', - }, - }, - ], - }, - ], - }, - }, - }, - ], - }, - }; - - commerceToolsConnectorService.getClient = jest.fn().mockReturnValue({ - products: jest.fn().mockReturnValue({ - get: jest.fn().mockReturnValue({ - execute: jest.fn().mockReturnValue(products), - }), - }), - }); - - return commerceToolsConnectorService; -}; diff --git a/src/commercetools/store-actions/order-paid-actions.ts b/src/commercetools/store-actions/order-paid-actions.ts deleted file mode 100644 index 412fafa9..00000000 --- a/src/commercetools/store-actions/order-paid-actions.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Payment } from '@commercetools/platform-sdk'; -import { ByProjectKeyRequestBuilder } from '@commercetools/platform-sdk/dist/declarations/src/generated/client/by-project-key-request-builder'; -import { Order as CommerceToolsOrder } from '@commercetools/platform-sdk/dist/declarations/src/generated/models/order'; -import { CUSTOM_FIELD_PREFIX } from '../../consts/voucherify'; -import { deleteObjectsFromObject } from '../utils/deleteObjectsFromObject'; -import flatten from 'flat'; - -const CUSTOM_FIELD_PREFIX_LENGTH = CUSTOM_FIELD_PREFIX.length; - -export class OrderPaidActions implements OrderPaidActions { - private ctClient: ByProjectKeyRequestBuilder; - public setCtClient(value: ByProjectKeyRequestBuilder) { - this.ctClient = value; - } - - public async findPayment(id: string): Promise { - return (await this.ctClient.payments().withId({ ID: id }).get().execute()) - ?.body; - } - - public async getCustomMetadataForOrder( - order: CommerceToolsOrder, - orderMetadataSchemaProperties: string[], - ): Promise<{ [key: string]: string }> { - const customMetaProperties = orderMetadataSchemaProperties.filter( - (key) => - key.length > CUSTOM_FIELD_PREFIX_LENGTH && - key.slice(0, CUSTOM_FIELD_PREFIX_LENGTH) === CUSTOM_FIELD_PREFIX, - ); - - const metadata = {}; - - const addToMataData = (variable: any, name: string) => { - if (typeof variable !== 'object') { - return (metadata[name] = variable); - } - if (Array.isArray(variable)) { - const newArray = []; - variable.forEach((element) => { - if (typeof variable !== 'object') { - newArray.push(element); - } else { - newArray.push(deleteObjectsFromObject(flatten(element))); - } - }); - return (metadata[name] = newArray); - } - if (typeof variable === 'object') { - return (metadata[name] = deleteObjectsFromObject(flatten(variable))); - } - return; - }; - - if (order?.custom?.fields && customMetaProperties.length) { - customMetaProperties.forEach((key) => { - if (order.custom.fields?.[key.slice(CUSTOM_FIELD_PREFIX_LENGTH)]) { - addToMataData( - order.custom.fields[key.slice(CUSTOM_FIELD_PREFIX_LENGTH)], - key, - ); - } - }); - } - - if (orderMetadataSchemaProperties.includes('payments')) { - const payments = []; - const paymentReferences = order?.paymentInfo?.payments ?? []; - for await (const paymentReference of paymentReferences) { - payments.push(await this.findPayment(paymentReference.id)); - } - metadata['payments'] = payments - .filter((payment) => payment?.id) - .map((payment) => deleteObjectsFromObject(flatten(payment))); - } - return metadata; - } -} diff --git a/src/integration/utils/mappers/getMissingProductsToAdd.ts b/src/integration/utils/mappers/getMissingProductsToAdd.ts deleted file mode 100644 index 86138b44..00000000 --- a/src/integration/utils/mappers/getMissingProductsToAdd.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { ProductsFromRedeemables, ProductToAdd } from '../../types'; - -export const getMissingProductsToAdd = ( - productsFromRedeemables: ProductsFromRedeemables[], - productsToAdd: ProductToAdd[], -): { code: string; quantity: number; product: string }[] => { - const missingProductsToAdd = []; - productsFromRedeemables.forEach((expectedProductToAdd) => { - const sameExpectedProductsToAdd = productsFromRedeemables.filter( - (expectedProductToAdd_) => - expectedProductToAdd.code === expectedProductToAdd_.code && - expectedProductToAdd.quantity === expectedProductToAdd_.quantity && - expectedProductToAdd.product === expectedProductToAdd_.product, - ); - const productsToAddSameAsExpectedProductsToAdd = productsToAdd.filter( - (expectedProductTopAdd_) => - expectedProductToAdd.code === expectedProductTopAdd_.code && - expectedProductToAdd.quantity === expectedProductTopAdd_.quantity && - expectedProductToAdd.product === expectedProductTopAdd_.product, - ); - if ( - sameExpectedProductsToAdd.length !== - productsToAddSameAsExpectedProductsToAdd.length - ) { - missingProductsToAdd.push(expectedProductToAdd); - } - }); - return missingProductsToAdd; -}; diff --git a/src/integration/utils/mappers/getProductsFromRedeemables.ts b/src/integration/utils/mappers/getProductsFromRedeemables.ts deleted file mode 100644 index 70313433..00000000 --- a/src/integration/utils/mappers/getProductsFromRedeemables.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { StackableRedeemableResponse } from '@voucherify/sdk'; -import { ProductsFromRedeemables } from '../../types'; - -export const getProductsFromRedeemables = ( - redeemables: StackableRedeemableResponse[], -): ProductsFromRedeemables[] => { - const expectedProductsToAdd = []; - redeemables.forEach((redeemable) => { - const discount = redeemable?.result?.discount; - const code = redeemable.id; - if (!discount) { - return; - } - if (!discount?.units?.length) { - return expectedProductsToAdd.push({ - code, - quantity: discount?.unit_off, - product: discount?.sku?.source_id, - }); - } - discount.units.forEach((unit) => - expectedProductsToAdd.push({ - code, - quantity: unit?.unit_off, - product: unit?.sku?.source_id, - }), - ); - }); - return expectedProductsToAdd; -}; diff --git a/test/app.e2e-spec.ts b/test/app.e2e-spec.ts deleted file mode 100644 index 50cda623..00000000 --- a/test/app.e2e-spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; -import * as request from 'supertest'; -import { AppModule } from './../src/app.module'; - -describe('AppController (e2e)', () => { - let app: INestApplication; - - beforeEach(async () => { - const moduleFixture: TestingModule = await Test.createTestingModule({ - imports: [AppModule], - }).compile(); - - app = moduleFixture.createNestApplication(); - await app.init(); - }); - - it('/ (GET)', () => { - return request(app.getHttpServer()) - .get('/') - .expect(200) - .expect('Hello World!'); - }); -}); diff --git a/.env.example b/voucherify-service/.env.example similarity index 100% rename from .env.example rename to voucherify-service/.env.example diff --git a/.eslintrc.js b/voucherify-service/.eslintrc.js similarity index 100% rename from .eslintrc.js rename to voucherify-service/.eslintrc.js diff --git a/voucherify-service/.gitignore b/voucherify-service/.gitignore new file mode 100644 index 00000000..8db923ae --- /dev/null +++ b/voucherify-service/.gitignore @@ -0,0 +1,44 @@ +# compiled output +/dist +/node_modules + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# json requests / responses +json + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# configuration +.env +.env-local +*.icloud +/label-*.json diff --git a/.husky/pre-commit b/voucherify-service/.husky/pre-commit similarity index 100% rename from .husky/pre-commit rename to voucherify-service/.husky/pre-commit diff --git a/.prettierrc b/voucherify-service/.prettierrc similarity index 100% rename from .prettierrc rename to voucherify-service/.prettierrc diff --git a/API_temp_file.md b/voucherify-service/API_temp_file.md similarity index 100% rename from API_temp_file.md rename to voucherify-service/API_temp_file.md diff --git a/voucherify-service/Procfile b/voucherify-service/Procfile new file mode 100644 index 00000000..bef5264b --- /dev/null +++ b/voucherify-service/Procfile @@ -0,0 +1 @@ +web: npm run start \ No newline at end of file diff --git a/nest-cli.json b/voucherify-service/nest-cli.json similarity index 100% rename from nest-cli.json rename to voucherify-service/nest-cli.json diff --git a/nest-commander.json b/voucherify-service/nest-commander.json similarity index 100% rename from nest-commander.json rename to voucherify-service/nest-commander.json diff --git a/nest-dev-attached.json b/voucherify-service/nest-dev-attached.json similarity index 100% rename from nest-dev-attached.json rename to voucherify-service/nest-dev-attached.json diff --git a/voucherify-service/package-lock.json b/voucherify-service/package-lock.json new file mode 100644 index 00000000..ef9128bc --- /dev/null +++ b/voucherify-service/package-lock.json @@ -0,0 +1,9490 @@ +{ + "name": "commerce-tools-integration", + "version": "6.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "commerce-tools-integration", + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "@commercetools/platform-sdk": "2.7.0", + "@commercetools/sdk-auth": "3.0.13", + "@commercetools/sdk-client-v2": "1.4.0", + "@nestjs/cli": "9.5.0", + "@nestjs/common": "9.4.3", + "@nestjs/config": "2.3.3", + "@nestjs/core": "9.4.3", + "@nestjs/platform-express": "9.4.3", + "@voucherify/sdk": "2.7.0", + "async": "3.2.3", + "class-transformer": "0.5.1", + "class-validator": "0.14.0", + "cli-table": "0.3.11", + "concurrently": "7.1.0", + "flat": "5.0.2", + "form-data": "4.0.0", + "install": "0.13.0", + "joi": "17.6.0", + "loading-cli": "1.1.0", + "mkdirp": "1.0.4", + "nest-commander": "3.8.0", + "nest-winston": "1.7.0", + "ngrok": "5.0.0-beta.2", + "node-fetch": "3.2.10", + "node-fetch2": "npm:node-fetch@2.6.7", + "nodejs-base64": "2.0.0", + "objects-to-csv": "1.3.6", + "reflect-metadata": "0.1.13", + "rimraf": "3.0.2", + "rxjs": "7.8.1", + "winston": "3.8.1" + }, + "devDependencies": { + "@nestjs/schematics": "8.0.11", + "@nestjs/testing": "9.4.3", + "@types/express": "4.17.13", + "@types/flat": "5.0.2", + "@types/jest": "27.5.0", + "@types/node": "16.11.33", + "@types/supertest": "2.0.12", + "@typescript-eslint/eslint-plugin": "5.22.0", + "@typescript-eslint/parser": "5.22.0", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-prettier": "4.0.0", + "jest": "28.0.3", + "prettier": "2.6.2", + "source-map-support": "0.5.21", + "supertest": "6.2.3", + "ts-jest": "28.0.1", + "ts-loader": "9.3.0", + "ts-node": "10.7.0", + "tsconfig-paths": "4.0.0", + "typescript": "4.9.5", + "webpack": "5.86.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.1.tgz", + "integrity": "sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.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 + } + } + }, + "node_modules/@angular-devkit/core/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@angular-devkit/core/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/@angular-devkit/core/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.0.1.tgz", + "integrity": "sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==", + "dependencies": { + "@angular-devkit/core": "16.0.1", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-16.0.1.tgz", + "integrity": "sha512-6KLA125dpgd6oJGtiO2JpZAb92uOG3njQGIt7NFcuQGW/5GO7J41vMXH9cBAfdtbV8SIggSmR/cIEE9ijfj6YQ==", + "dependencies": { + "@angular-devkit/core": "16.0.1", + "@angular-devkit/schematics": "16.0.1", + "ansi-colors": "4.1.3", + "inquirer": "8.2.4", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/@angular-devkit/schematics/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", + "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@commercetools/platform-sdk": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@commercetools/platform-sdk/-/platform-sdk-2.7.0.tgz", + "integrity": "sha512-xm3IT0WP/5NL4vmB/9TSS19+z8ghkHmEmb9n5kXu5GC+wiR/Z6pcpt/BYUR2MuRTqjsq167MThH15jHgWypaQw==", + "dependencies": { + "@commercetools/sdk-client-v2": "^1.4.0", + "@commercetools/sdk-middleware-auth": "^6.0.4", + "@commercetools/sdk-middleware-http": "^6.0.4", + "@commercetools/sdk-middleware-logger": "^2.1.1", + "querystring": "^0.2.1" + } + }, + "node_modules/@commercetools/sdk-auth": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@commercetools/sdk-auth/-/sdk-auth-3.0.13.tgz", + "integrity": "sha512-Y+E+oYwQeY4PHu4HBBeNyieQsDoG/f7axHlQXDgdnVcLkyPDHsMHYMiOT8p5MAl+VFCA7F31z9y7x/QUmyyT5Q==", + "dependencies": { + "@commercetools/sdk-middleware-http": "^6.1.1", + "lodash.defaultsdeep": "^4.6.0", + "qss": "2.0.3" + } + }, + "node_modules/@commercetools/sdk-client-v2": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@commercetools/sdk-client-v2/-/sdk-client-v2-1.4.0.tgz", + "integrity": "sha512-JYGDQVJtrPsU9keGM6HSIUAwTJtLqEWWEsaLJaDct3ciRc9orNLRn65pPhfXzZkg0kw2c6SkmG8HEEDQbOq0xg==", + "dependencies": { + "buffer": "^6.0.3", + "node-fetch": "^2.6.1", + "querystring": "^0.2.1" + } + }, + "node_modules/@commercetools/sdk-client-v2/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@commercetools/sdk-middleware-auth": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-auth/-/sdk-middleware-auth-6.2.1.tgz", + "integrity": "sha512-JNVRVf7zssECg0i/amAG0gnFmx4Kj7rB0J9MfRlvN/54qyA6tKJOJaA5j9hYy60qKSW/NCGbVMcVlBnPJLhREQ==", + "dependencies": { + "node-fetch": "^2.6.7" + } + }, + "node_modules/@commercetools/sdk-middleware-auth/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@commercetools/sdk-middleware-http": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-http/-/sdk-middleware-http-6.2.0.tgz", + "integrity": "sha512-3E1nV+awhP0eeFuyChxgbaPF5CWWH0PvGZO9FtNl/mirlYjGbXAHO4Ql5tG4/G+CywlXI9XVA9wKSwxG0kgwgA==" + }, + "node_modules/@commercetools/sdk-middleware-logger": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@commercetools/sdk-middleware-logger/-/sdk-middleware-logger-2.1.1.tgz", + "integrity": "sha512-k/Jm3lsWbszPBHtPAvu0rINTq398p4ddv0zbAH8R4p6Yc1GkBEy6tNgHPzX/eFskI/qerPy9IsW1xK8pqgtHHQ==" + }, + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.2.tgz", + "integrity": "sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.1", + "globals": "^13.9.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@golevelup/nestjs-discovery": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-3.0.0.tgz", + "integrity": "sha512-ZvkXtobTKxXB1LJanP/l6Z/Fing88IMBr3uabQpU2IWjfsstjh02qYDSU2cfD6CSmNldX5ewW5Pd+SdK2lU8Sw==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.0.2.tgz", + "integrity": "sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.0.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.0.2", + "jest-util": "^28.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.0.3.tgz", + "integrity": "sha512-cCQW06vEZ+5r50SB06pOnSWsOBs7F+lswPYnKKfBz1ncLlj1sMqmvjgam8q40KhlZ8Ut4eNAL2Hvfx4BKIO2FA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.0.2", + "@jest/reporters": "^28.0.3", + "@jest/test-result": "^28.0.2", + "@jest/transform": "^28.0.3", + "@jest/types": "^28.0.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.0.2", + "jest-config": "^28.0.3", + "jest-haste-map": "^28.0.2", + "jest-message-util": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.0.3", + "jest-resolve-dependencies": "^28.0.3", + "jest-runner": "^28.0.3", + "jest-runtime": "^28.0.3", + "jest-snapshot": "^28.0.3", + "jest-util": "^28.0.2", + "jest-validate": "^28.0.2", + "jest-watcher": "^28.0.2", + "micromatch": "^4.0.4", + "pretty-format": "^28.0.2", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "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 + } + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/@jest/environment": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.0.2.tgz", + "integrity": "sha512-IvI7dEfqVEffDYlw9FQfVBt6kXt/OI38V7QUIur0ulOQgzpKYJDVvLzj4B1TVmHWTGW5tcnJdlZ3hqzV6/I9Qg==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^28.0.2", + "@jest/types": "^28.0.2", + "@types/node": "*", + "jest-mock": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.0.3.tgz", + "integrity": "sha512-VEzZr85bqNomgayQkR7hWG5HnbZYWYWagQriZsixhLmOzU6PCpMP61aeVhkCoRrg7ri5f7JDpeTPzDAajIwFHw==", + "dev": true, + "dependencies": { + "expect": "^28.0.2", + "jest-snapshot": "^28.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.0.2.tgz", + "integrity": "sha512-YryfH2zN5c7M8eLtn9oTBRj1sfD+X4cHNXJnTejqCveOS33wADEZUxJ7de5++lRvByNpRpfAnc8zTK7yrUJqgA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.0.2.tgz", + "integrity": "sha512-R75yUv+WeybPa4ZVhX9C+8XN0TKjUoceUX+/QEaDVQGxZZOK50eD74cs7iMDTtpodh00d8iLlc9197vgF6oZjA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.0.2", + "@sinonjs/fake-timers": "^9.1.1", + "@types/node": "*", + "jest-message-util": "^28.0.2", + "jest-mock": "^28.0.2", + "jest-util": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.0.3.tgz", + "integrity": "sha512-q/zXYI6CKtTSIt1WuTHBYizJhH7K8h+xG5PE3C0oawLlPIvUMDYmpj0JX0XsJwPRLCsz/fYXHZVG46AaEhSPmw==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.0.2", + "@jest/expect": "^28.0.3", + "@jest/types": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.0.3.tgz", + "integrity": "sha512-xrbIc7J/xwo+D7AY3enAR9ZWYCmJ8XIkstTukTGpKDph0gLl/TJje9jl3dssvE4KJzYqMKiSrnE5Nt68I4fTEg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.0.2", + "@jest/test-result": "^28.0.2", + "@jest/transform": "^28.0.3", + "@jest/types": "^28.0.2", + "@jridgewell/trace-mapping": "^0.3.7", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-util": "^28.0.2", + "jest-worker": "^28.0.2", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.0" + }, + "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 + } + } + }, + "node_modules/@jest/schemas": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", + "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.23.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", + "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.0.2.tgz", + "integrity": "sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.0.2", + "@jest/types": "^28.0.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.0.2.tgz", + "integrity": "sha512-zhnZ8ydkZQTPL7YucB86eOlD79zPy5EGSUKiR2Iv93RVEDU6OEP33kwDBg70ywOcxeJGDRhyo09q7TafNCBiIg==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.0.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.0.3.tgz", + "integrity": "sha512-+Y0ikI7SwoW/YbK8t9oKwC70h4X2Gd0OVuz5tctRvSV/EDQU00AAkoqevXgPSSFimUmp/sp7Yl8s/1bExDqOIg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.0.2", + "@jridgewell/trace-mapping": "^0.3.7", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.0.2", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/types": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.0.2.tgz", + "integrity": "sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", + "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@nestjs/cli": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-9.5.0.tgz", + "integrity": "sha512-Z7q+3vNsQSG2d2r2Hl/OOj5EpfjVx3OfnJ9+KuAsOdw1sKLm7+Zc6KbhMFTd/eIvfx82ww3Nk72xdmfPYCulWA==", + "dependencies": { + "@angular-devkit/core": "16.0.1", + "@angular-devkit/schematics": "16.0.1", + "@angular-devkit/schematics-cli": "16.0.1", + "@nestjs/schematics": "^9.0.4", + "chalk": "4.1.2", + "chokidar": "3.5.3", + "cli-table3": "0.6.3", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "8.0.0", + "inquirer": "8.2.5", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "os-name": "4.0.1", + "rimraf": "4.4.1", + "shelljs": "0.8.5", + "source-map-support": "0.5.21", + "tree-kill": "1.2.2", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.0.1", + "typescript": "4.9.5", + "webpack": "5.82.1", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 12.9.0" + } + }, + "node_modules/@nestjs/cli/node_modules/@nestjs/schematics": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.2.0.tgz", + "integrity": "sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==", + "dependencies": { + "@angular-devkit/core": "16.0.1", + "@angular-devkit/schematics": "16.0.1", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.3.5" + } + }, + "node_modules/@nestjs/cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@nestjs/cli/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/cli/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/@nestjs/cli/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/cli/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nestjs/cli/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@nestjs/cli/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nestjs/cli/node_modules/webpack": { + "version": "5.82.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.1.tgz", + "integrity": "sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.14.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@nestjs/common": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-9.4.3.tgz", + "integrity": "sha512-Gd6D4IaYj01o14Bwv81ukidn4w3bPHCblMUq+SmUmWLyosK+XQmInCS09SbDDZyL8jy86PngtBLTdhJ2bXSUig==", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.5.3", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "cache-manager": "<=5", + "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 + } + } + }, + "node_modules/@nestjs/config": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-2.3.3.tgz", + "integrity": "sha512-WcBA+0sv8euzKoYpxsCAdMzADxZEeUq8ulD+T+7QBNF0Yha6KC9edkXzk5xTJcanrKL9qnP0kboAXONscHb/Kw==", + "dependencies": { + "dotenv": "16.1.4", + "dotenv-expand": "10.0.0", + "lodash": "4.17.21", + "uuid": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0", + "reflect-metadata": "^0.1.13", + "rxjs": "^6.0.0 || ^7.2.0" + } + }, + "node_modules/@nestjs/config/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@nestjs/core": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-9.4.3.tgz", + "integrity": "sha512-Qi63+wi55Jh4sDyaj5Hhx2jOpKqT386aeo+VOKsxnd+Ql9VvkO/FjmuwBGUyzkJt29ENYc+P0Sx/k5LtstNpPQ==", + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.2.0", + "tslib": "2.5.3", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "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 + } + } + }, + "node_modules/@nestjs/platform-express": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-9.4.3.tgz", + "integrity": "sha512-FpdczWoRSC0zz2dNL9u2AQLXKXRVtq4HgHklAhbL59X0uy+mcxhlSThG7DHzDMkoSnuuHY8ojDVf7mDxk+GtCw==", + "dependencies": { + "body-parser": "1.20.2", + "cors": "2.8.5", + "express": "4.18.2", + "multer": "1.4.4-lts.1", + "tslib": "2.5.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^9.0.0", + "@nestjs/core": "^9.0.0" + } + }, + "node_modules/@nestjs/schematics": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.11.tgz", + "integrity": "sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.5", + "@angular-devkit/schematics": "13.3.5", + "fs-extra": "10.1.0", + "jsonc-parser": "3.0.0", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": "^3.4.5 || ^4.3.5" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz", + "integrity": "sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^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 + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz", + "integrity": "sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.5", + "jsonc-parser": "3.0.0", + "magic-string": "0.25.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@nestjs/testing": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-9.4.3.tgz", + "integrity": "sha512-LDT8Ai2eKnTzvnPaJwWOK03qTaFap5uHHsJCv6dL0uKWk6hyF9jms8DjyVaGsaujCaXDG8izl1mDEER0OmxaZA==", + "dev": true, + "dependencies": { + "tslib": "2.5.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^9.0.0", + "@nestjs/core": "^9.0.0", + "@nestjs/microservices": "^9.0.0", + "@nestjs/platform-express": "^9.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", + "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", + "dev": true + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-3zsplnP2djeps5P9OyarTxwRpMLoe5Ash8aL9iprw0JxB+FAHjY+ifn4yZUuW4/9hqtnmor6uvjSRzJhiVbrEQ==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + }, + "node_modules/@types/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-Pxxx3i3AyK7vKAj3LRM/vF7ETcHKiLJ/u5CnNgbz/eYj/vB3xGAYtRxI5IKtq0hpe5iFHD22BKV3n6WHUu0k4Q==", + "peer": true, + "dependencies": { + "@types/through": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.5.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.0.tgz", + "integrity": "sha512-9RBFx7r4k+msyj/arpfaa0WOOEcaAZNmN+j80KFbFCoSqCJGHTz7YMAMGQW9Xmqm5w6l5c25vbSjMwlikJi5+g==", + "dev": true, + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz", + "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prettier": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", + "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/superagent": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", + "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", + "dev": true, + "dependencies": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "node_modules/@types/supertest": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", + "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "dev": true, + "dependencies": { + "@types/superagent": "*" + } + }, + "node_modules/@types/through": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", + "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/validator": { + "version": "13.7.17", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.17.tgz", + "integrity": "sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==" + }, + "node_modules/@types/yargs": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz", + "integrity": "sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/type-utils": "5.22.0", + "@typescript-eslint/utils": "5.22.0", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.22.0.tgz", + "integrity": "sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz", + "integrity": "sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz", + "integrity": "sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.22.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.22.0.tgz", + "integrity": "sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz", + "integrity": "sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/visitor-keys": "5.22.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.22.0.tgz", + "integrity": "sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.22.0", + "@typescript-eslint/types": "5.22.0", + "@typescript-eslint/typescript-estree": "5.22.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz", + "integrity": "sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.22.0", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@voucherify/sdk": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@voucherify/sdk/-/sdk-2.7.0.tgz", + "integrity": "sha512-EpPxzsCUh+asoiknTdQkidDeMq/QiLlk6K2h029wgEYzF/Ag34CngABNV6GUIu2LKpl8E61LjYtnl8aOh6tmtQ==", + "dependencies": { + "axios": "1.6.5", + "form-data": "4.0.0", + "qs": "6.9.7" + } + }, + "node_modules/@voucherify/sdk/node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" + }, + "node_modules/async-csv": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/async-csv/-/async-csv-2.1.3.tgz", + "integrity": "sha512-mpsCN+D7mzZeqrlDw7UTPhvDQDlx1i819E9fbKIt8drkgED5FSOlBv3Rk/+sXdevnO2wwlRkVOQ4kdT0AyqPqQ==", + "dependencies": { + "csv": "^5.1.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.0.3.tgz", + "integrity": "sha512-S0ADyYdcrt5fp9YldRYWCUHdk1BKt9AkvBkLWBoNAEV9NoWZPIj5+MYhPcGgTS65mfv3a+Ymf2UqgWoAVd41cA==", + "dev": true, + "dependencies": { + "@jest/transform": "^28.0.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.0.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz", + "integrity": "sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz", + "integrity": "sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^28.0.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "4.1.1", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001336", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001336.tgz", + "integrity": "sha512-/YxSlBmL7iKXTbIJ48IQTnAOBk7XmWsxhBF1PZLOko5Dt9qc4Pl+84lfqG3Tc4EuavurRn1QLoVJGxY2iSycfw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + }, + "node_modules/class-validator": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + "dependencies": { + "@types/validator": "^13.7.10", + "libphonenumber-js": "^1.10.14", + "validator": "^13.7.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cli-table/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colors-cli": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/colors-cli/-/colors-cli-1.0.28.tgz", + "integrity": "sha512-2XE8s1mB3Jr5rvirk/fFzhWY2m9S2dpZ0mWz3Yl/mzMM8hDVBawL0Rsal5hR1gJP4lgqhQfFfEmaGZpUZgEKrA==", + "bin": { + "colors": "bin/colors" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dependencies": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concurrently": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.1.0.tgz", + "integrity": "sha512-Bz0tMlYKZRUDqJlNiF/OImojMB9ruKUz6GCfmhFnSapXgPe+3xzY4byqoKG9tUZ7L2PGEUjfLPOLfIX3labnmw==", + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.0 || >=16.0.0" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csv": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", + "integrity": "sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==", + "dependencies": { + "csv-generate": "^3.4.3", + "csv-parse": "^4.16.3", + "csv-stringify": "^5.6.5", + "stream-transform": "^2.1.3" + }, + "engines": { + "node": ">= 0.1.90" + } + }, + "node_modules/csv-generate": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz", + "integrity": "sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==" + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" + }, + "node_modules/csv-stringify": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", + "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", + "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.134", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.134.tgz", + "integrity": "sha512-OdD7M2no4Mi8PopfvoOuNcwYDJ2mNFxaBfurA6okG3fLBaMcFah9S+si84FhX+FIWLKkdaiHfl4A+5ep/gOVrg==" + }, + "node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", + "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.2.2", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", + "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/espree": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.0.2.tgz", + "integrity": "sha512-X0qIuI/zKv98k34tM+uGeOgAC73lhs4vROF9MkPk94C1zujtwv4Cla8SxhWn0G1OwvG9gLLL7RjFBkwGVaZ83w==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^28.0.2", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.0.2", + "jest-message-util": "^28.0.2", + "jest-util": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/diff-sequences": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", + "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/jest-diff": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", + "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.0.2", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/jest-matcher-utils": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", + "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.0.2", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/formidable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", + "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", + "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/formidable/node_modules/qs": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", + "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", + "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hpagent": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz", + "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==", + "optional": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inquirer": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.0.3.tgz", + "integrity": "sha512-uS+T5J3w5xyzd1KSJCGKhCo8WTJXbNl86f5SW11wgssbandJOVLRKKUxmhdFfmKxhPeksl1hHZ0HaA8VBzp7xA==", + "dev": true, + "dependencies": { + "@jest/core": "^28.0.3", + "import-local": "^3.0.2", + "jest-cli": "^28.0.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-changed-files": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", + "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.0.3.tgz", + "integrity": "sha512-HJ3rUCm3A3faSy7KVH5MFCncqJLtrjEFkTPn9UIcs4Kq77+TXqHsOaI+/k73aHe6DJQigLUXq9rCYj3MYFlbIw==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.0.2", + "@jest/expect": "^28.0.3", + "@jest/test-result": "^28.0.2", + "@jest/types": "^28.0.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.0.2", + "jest-matcher-utils": "^28.0.2", + "jest-message-util": "^28.0.2", + "jest-runtime": "^28.0.3", + "jest-snapshot": "^28.0.3", + "jest-util": "^28.0.2", + "pretty-format": "^28.0.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/diff-sequences": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", + "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-diff": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", + "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.0.2", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", + "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.0.2", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/jest-cli": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.0.3.tgz", + "integrity": "sha512-NCPTEONCnhYGo1qzPP4OOcGF04YasM5GZSwQLI1HtEluxa3ct4U65IbZs6DSRt8XN1Rq0jhXwv02m5lHB28Uyg==", + "dev": true, + "dependencies": { + "@jest/core": "^28.0.3", + "@jest/test-result": "^28.0.2", + "@jest/types": "^28.0.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.0.3", + "jest-util": "^28.0.2", + "jest-validate": "^28.0.2", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "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 + } + } + }, + "node_modules/jest-config": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.0.3.tgz", + "integrity": "sha512-3gWOEHwGpNhyYOk9vnUMv94x15QcdjACm7A3lERaluwnyD6d1WZWe9RFCShgIXVOHzRfG1hWxsI2U0gKKSGgDQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.0.2", + "@jest/types": "^28.0.2", + "babel-jest": "^28.0.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.0.3", + "jest-environment-node": "^28.0.2", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.0.3", + "jest-runner": "^28.0.3", + "jest-util": "^28.0.2", + "jest-validate": "^28.0.2", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.0.2", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "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 + } + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.0.2.tgz", + "integrity": "sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.0.2.tgz", + "integrity": "sha512-/W5Wc0b+ipR36kDaLngdVEJ/5UYPOITK7rW0djTlCCQdMuWpCFJweMW4TzAoJ6GiRrljPL8FwiyOSoSHKrda2w==", + "dev": true, + "dependencies": { + "@jest/types": "^28.0.2", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/jest-environment-node": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.0.2.tgz", + "integrity": "sha512-o9u5UHZ+NCuIoa44KEF0Behhsz/p1wMm0WumsZfWR1k4IVoWSt3aN0BavSC5dd26VxSGQvkrCnJxxOzhhUEG3Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.0.2", + "@jest/fake-timers": "^28.0.2", + "@jest/types": "^28.0.2", + "@types/node": "*", + "jest-mock": "^28.0.2", + "jest-util": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.0.2.tgz", + "integrity": "sha512-EokdL7l5uk4TqWGawwrIt8w3tZNcbeiRxmKGEURf42pl+/rWJy3sCJlon5HBhJXZTW978jk6600BLQOI7i25Ig==", + "dev": true, + "dependencies": { + "@jest/types": "^28.0.2", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.0.2", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.0.2.tgz", + "integrity": "sha512-UGaSPYtxKXl/YKacq6juRAKmMp1z2os8NaU8PSC+xvNikmu3wF6QFrXrihMM4hXeMr9HuNotBrQZHmzDY8KIBQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.0.2.tgz", + "integrity": "sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.0.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.0.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/jest-mock": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.0.2.tgz", + "integrity": "sha512-vfnJ4zXRB0i24jOTGtQJyl26JKsgBKtqRlCnsrORZbG06FToSSn33h2x/bmE8XxqxkLWdZBRo+/65l8Vi3nD+g==", + "dev": true, + "dependencies": { + "@jest/types": "^28.0.2", + "@types/node": "*" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.0.3.tgz", + "integrity": "sha512-lfgjd9JhEjpjIN3HLUfdysdK+A7ePQoYmd7WL9DUEWqdnngb1rF56eee6iDXJxl/3eSolpP43VD7VrhjL3NsoQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.0.2", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.0.2", + "jest-validate": "^28.0.2", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.3.tgz", + "integrity": "sha512-lCgHMm0/5p0qHemrOzm7kI6JDei28xJwIf7XOEcv1HeAVHnsON8B8jO/woqlU+/GcOXb58ymieYqhk3zjGWnvQ==", + "dev": true, + "dependencies": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.0.3.tgz", + "integrity": "sha512-4OsHMjBLtYUWCENucAQ4Za0jGfEbOFi/Fusv6dzUuaweqx8apb4+5p2LR2yvgF4StFulmxyC238tGLftfu+zBA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.0.2", + "@jest/environment": "^28.0.2", + "@jest/test-result": "^28.0.2", + "@jest/transform": "^28.0.3", + "@jest/types": "^28.0.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.0.2", + "jest-environment-node": "^28.0.2", + "jest-haste-map": "^28.0.2", + "jest-leak-detector": "^28.0.2", + "jest-message-util": "^28.0.2", + "jest-resolve": "^28.0.3", + "jest-runtime": "^28.0.3", + "jest-util": "^28.0.2", + "jest-watcher": "^28.0.2", + "jest-worker": "^28.0.2", + "source-map-support": "0.5.13", + "throat": "^6.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.0.3.tgz", + "integrity": "sha512-7FtPUmvbZEHLOdjsF6dyHg5Pe4E0DU+f3Vvv8BPzVR7mQA6nFR4clQYLAPyJGnsUvN8WRWn+b5a5SVwnj1WaGg==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.0.2", + "@jest/fake-timers": "^28.0.2", + "@jest/globals": "^28.0.3", + "@jest/source-map": "^28.0.2", + "@jest/test-result": "^28.0.2", + "@jest/transform": "^28.0.3", + "@jest/types": "^28.0.2", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.0.2", + "jest-message-util": "^28.0.2", + "jest-mock": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.0.3", + "jest-snapshot": "^28.0.3", + "jest-util": "^28.0.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "28.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.0.3.tgz", + "integrity": "sha512-nVzAAIlAbrMuvVUrS1YxmAeo1TfSsDDU+K5wv/Ow56MBp+L+Y71ksAbwRp3kGCgZAz4oOXcAMPAwtT9Yh1hlQQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.0.2", + "@jest/transform": "^28.0.3", + "@jest/types": "^28.0.2", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.0.2", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.0.2", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.0.2", + "jest-matcher-utils": "^28.0.2", + "jest-message-util": "^28.0.2", + "jest-util": "^28.0.2", + "natural-compare": "^1.4.0", + "pretty-format": "^28.0.2", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", + "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.0.2.tgz", + "integrity": "sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.0.2", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz", + "integrity": "sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.0.2", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/jest-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.0.2.tgz", + "integrity": "sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.0.2", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.0.2.tgz", + "integrity": "sha512-nr0UOvCTtxP0YPdsk01Gk7e7c0xIiEe2nncAe3pj0wBfUvAykTVrMrdeASlAJnlEQCBuwN/GF4hKoCzbkGNCNw==", + "dev": true, + "dependencies": { + "@jest/types": "^28.0.2", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.0.2.tgz", + "integrity": "sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.0.2", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/jest-watcher": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.0.2.tgz", + "integrity": "sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.0.2", + "@jest/types": "^28.0.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.0.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-worker": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.0.2.tgz", + "integrity": "sha512-pijNxfjxT0tGAx+8+OzZ+eayVPCwy/rsZFhebmC0F4YnXu1EHPEPxg7utL3m5uX3EaFH1/jwDxGa1EbjJCST2g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.2.6.tgz", + "integrity": "sha512-mmMlAFwZnCBk7QDA23I49T5VP2NdSsbaT4yrm14cwnlQ67t+wHWPtYj+/gbzeAbcprGbUSzWP3jBE1WKfSERnQ==", + "dependencies": { + "compress-brotli": "^1.3.8", + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.10.30", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.30.tgz", + "integrity": "sha512-PLGc+xfrQrkya/YK2/5X+bPpxRmyJBHM+xxz9krUdSgk4Vs2ZwxX5/Ow0lv3r9PDlDtNWb4u+it8MY5rZ0IyGw==" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loading-cli": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loading-cli/-/loading-cli-1.1.0.tgz", + "integrity": "sha512-r6Kj0Y3d3isT4vvJ0tFlND1CcLkpatWmlgQs/PEfnSofJSHZwAbsqexnpQEDj4nlxSXEqFWh/Wu2iQXAAZRPNQ==", + "dependencies": { + "colors-cli": "^1.0.26" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logform": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "dependencies": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/macos-release": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", + "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/mixme": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz", + "integrity": "sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==", + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multer": { + "version": "1.4.4-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", + "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nest-commander": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/nest-commander/-/nest-commander-3.8.0.tgz", + "integrity": "sha512-iG9x3uhm+OQ+w+HWusJjJShsrQ75Z8uUiKeZbZsCUZQ1nQenuQdGwin9gjh9IL9MDlH1/8DWLFXGjuKkD1AdnA==", + "dependencies": { + "@golevelup/nestjs-discovery": "3.0.0", + "commander": "10.0.1", + "cosmiconfig": "8.2.0", + "inquirer": "8.2.5" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0", + "@types/inquirer": "^8.1.3" + } + }, + "node_modules/nest-commander/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/nest-commander/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/nest-winston": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/nest-winston/-/nest-winston-1.7.0.tgz", + "integrity": "sha512-FJ94dJ++8BEjQfK5TuqiY5g7pP48RLRss41Bm6bCCfzYgywymEI6m+HPHW9K/q2i7wO5TU6Sva51/Rvmmhxddw==", + "dependencies": { + "fast-safe-stringify": "^2.1.1" + }, + "peerDependencies": { + "@nestjs/common": "^5.0.0 || ^6.6.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "winston": "^3.0.0" + } + }, + "node_modules/ngrok": { + "version": "5.0.0-beta.2", + "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-5.0.0-beta.2.tgz", + "integrity": "sha512-UzsyGiJ4yTTQLCQD11k1DQaMwq2/SsztBg2b34zAqcyjS25qjDpogMKPaCKHwe/APRTHeel3iDXcVctk5CNaCQ==", + "hasInstallScript": true, + "dependencies": { + "extract-zip": "^2.0.1", + "got": "^11.8.5", + "lodash.clonedeep": "^4.5.0", + "uuid": "^7.0.0 || ^8.0.0", + "yaml": "^2.2.2" + }, + "bin": { + "ngrok": "bin/ngrok" + }, + "engines": { + "node": ">=14.2" + }, + "optionalDependencies": { + "hpagent": "^0.1.2" + } + }, + "node_modules/ngrok/node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-fetch2": { + "name": "node-fetch", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==" + }, + "node_modules/nodejs-base64": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nodejs-base64/-/nodejs-base64-2.0.0.tgz", + "integrity": "sha512-rf83teAz8f251P+HQW0nZyIhIIKrTs8wz11n5+Dp1b+/oWCYSeCfNfbUqda5B0DhspBVXwJ7SPk8aghv/TFsjQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/objects-to-csv": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/objects-to-csv/-/objects-to-csv-1.3.6.tgz", + "integrity": "sha512-383eSpS3hmgCksW85KIqBtcbgSW5DDVsCmzLoM6C3q4yzOX2rmtWxF4pbLJ76fz+ufA+4/SwAT4QdaY6IUWmAg==", + "dependencies": { + "async-csv": "^2.1.3" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-name": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", + "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", + "dependencies": { + "macos-release": "^2.5.0", + "windows-release": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", + "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "dependencies": { + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/qss": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/qss/-/qss-2.0.3.tgz", + "integrity": "sha512-j48ZBT5IZbSqJiSU8EX4XrN8nXiflHvmMvv2XpFc31gh7n6EpSs75bNr6+oj3FOLWyT8m09pTmqLNl34L7/uPQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-transform": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz", + "integrity": "sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==", + "dependencies": { + "mixme": "^0.5.1" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superagent": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.3.tgz", + "integrity": "sha512-WA6et4nAvgBCS73lJvv1D0ssI5uk5Gh+TGN/kNe+B608EtcVs/yzfl+OLXTzDs7tOBDIpvgh/WUs1K2OK1zTeQ==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "^2.5.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/superagent/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/supertest": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.3.tgz", + "integrity": "sha512-3GSdMYTMItzsSYjnIcljxMVZKPW1J9kYHZY+7yLfD0wpPwww97GeImZC1oOk0S5+wYl2niJwuFusBJqwLqYM3g==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^7.1.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.17.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.3.tgz", + "integrity": "sha512-AudpAZKmZHkG9jueayypz4duuCFJMMNGRMwaPvQKWfxKedh8Z2x3OCoDqIIi1xx5+iwx1u6Au8XQcc9Lke65Yg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz", + "integrity": "sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "node_modules/ts-jest": { + "version": "28.0.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.1.tgz", + "integrity": "sha512-PbkbitaT/9ZYAqqzk3UYTvCq080Seo46T3m/AdwcZ0D8WH2uBhG6PvA8oOAWsZIknzPQU66fYobvFCL8IqIhmg==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^28.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": "^28.0.0", + "jest": "^28.0.0", + "typescript": ">=4.3" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-loader": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", + "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", + "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "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 + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz", + "integrity": "sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==", + "dev": true, + "dependencies": { + "json5": "^2.2.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.1.tgz", + "integrity": "sha512-m5//KzLoKmqu2MVix+dgLKq70MnFi8YL8sdzQZ6DblmCdfuq/y3OqvJd5vMndg2KEVCOeNz8Es4WVZhYInteLw==", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz", + "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "5.86.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.86.0.tgz", + "integrity": "sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.14.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/windows-release": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", + "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", + "dependencies": { + "execa": "^4.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/windows-release/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/winston": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", + "dependencies": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/voucherify-service/package.json b/voucherify-service/package.json new file mode 100644 index 00000000..6d9b130d --- /dev/null +++ b/voucherify-service/package.json @@ -0,0 +1,107 @@ +{ + "name": "commerce-tools-integration", + "version": "6.0.5", + "description": "", + "author": "", + "private": true, + "license": "MIT", + "scripts": { + "gcp-build": "nest build", + "prebuild": "rimraf dist", + "build": "nest build", + "command": "nest start --config nest-commander.json --", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "dev": "nest start --watch", + "dev:attach": "nest start --watch --config nest-dev-attached.json", + "dev:debug": "nest start --debug --watch", + "start": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json", + "config": "nest start --config nest-commander.json -- config", + "api-extension-list": "nest start --config nest-commander.json -- integration-list", + "api-extension-add": "nest start --config nest-commander.json -- integration-add", + "api-extension-update": "nest start --config nest-commander.json -- integration-update", + "api-extension-delete": "nest start --config nest-commander.json -- integration-delete", + "migrate": "nest start --config nest-commander.json -- migrate", + "ct-connect-post-deploy": "npm run build && npm run config && npm run api-extension-add", + "ct-connect-pre-undeploy": "npm run api-extension-delete" + }, + "dependencies": { + "@commercetools/platform-sdk": "2.7.0", + "@commercetools/sdk-auth": "3.0.13", + "@commercetools/sdk-client-v2": "1.4.0", + "@nestjs/cli": "9.5.0", + "@nestjs/common": "9.4.3", + "@nestjs/config": "2.3.3", + "@nestjs/core": "9.4.3", + "@nestjs/platform-express": "9.4.3", + "@voucherify/sdk": "2.7.0", + "async": "3.2.3", + "class-transformer": "0.5.1", + "class-validator": "0.14.0", + "cli-table": "0.3.11", + "concurrently": "7.1.0", + "flat": "5.0.2", + "form-data": "4.0.0", + "install": "0.13.0", + "joi": "17.6.0", + "loading-cli": "1.1.0", + "mkdirp": "1.0.4", + "nest-commander": "3.8.0", + "nest-winston": "1.7.0", + "ngrok": "5.0.0-beta.2", + "node-fetch": "3.2.10", + "node-fetch2": "npm:node-fetch@2.6.7", + "nodejs-base64": "2.0.0", + "objects-to-csv": "1.3.6", + "reflect-metadata": "0.1.13", + "rimraf": "3.0.2", + "rxjs": "7.8.1", + "winston": "3.8.1" + }, + "devDependencies": { + "@nestjs/schematics": "8.0.11", + "@nestjs/testing": "9.4.3", + "@types/express": "4.17.13", + "@types/flat": "5.0.2", + "@types/jest": "27.5.0", + "@types/node": "16.11.33", + "@types/supertest": "2.0.12", + "@typescript-eslint/eslint-plugin": "5.22.0", + "@typescript-eslint/parser": "5.22.0", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-prettier": "4.0.0", + "jest": "28.0.3", + "prettier": "2.6.2", + "source-map-support": "0.5.21", + "supertest": "6.2.3", + "ts-jest": "28.0.1", + "ts-loader": "9.3.0", + "ts-node": "10.7.0", + "tsconfig-paths": "4.0.0", + "typescript": "4.9.5", + "webpack": "5.86.0" + }, + "jest": { + "clearMocks": true, + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "testRegex": "test.*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "src/**/*.(t|j)s" + ], + "coverageDirectory": "coverage", + "testEnvironment": "node" + } +} diff --git a/public/ct-order-custom-fields.png b/voucherify-service/public/ct-order-custom-fields.png similarity index 100% rename from public/ct-order-custom-fields.png rename to voucherify-service/public/ct-order-custom-fields.png diff --git a/public/ct-order.png b/voucherify-service/public/ct-order.png similarity index 100% rename from public/ct-order.png rename to voucherify-service/public/ct-order.png diff --git a/public/ct-shipping-config.png b/voucherify-service/public/ct-shipping-config.png similarity index 100% rename from public/ct-shipping-config.png rename to voucherify-service/public/ct-shipping-config.png diff --git a/public/integration-flow.jpeg b/voucherify-service/public/integration-flow.jpeg similarity index 100% rename from public/integration-flow.jpeg rename to voucherify-service/public/integration-flow.jpeg diff --git a/public/voucherify-freeshipping-config.png b/voucherify-service/public/voucherify-freeshipping-config.png similarity index 100% rename from public/voucherify-freeshipping-config.png rename to voucherify-service/public/voucherify-freeshipping-config.png diff --git a/public/voucherify-logo.svg b/voucherify-service/public/voucherify-logo.svg similarity index 100% rename from public/voucherify-logo.svg rename to voucherify-service/public/voucherify-logo.svg diff --git a/public/voucherify-redemption.png b/voucherify-service/public/voucherify-redemption.png similarity index 100% rename from public/voucherify-redemption.png rename to voucherify-service/public/voucherify-redemption.png diff --git a/public/voucherify.png b/voucherify-service/public/voucherify.png similarity index 100% rename from public/voucherify.png rename to voucherify-service/public/voucherify.png diff --git a/src/app.controller.ts b/voucherify-service/src/app.controller.ts similarity index 100% rename from src/app.controller.ts rename to voucherify-service/src/app.controller.ts diff --git a/src/app.module.ts b/voucherify-service/src/app.module.ts similarity index 99% rename from src/app.module.ts rename to voucherify-service/src/app.module.ts index 2ee001c7..3de3a54f 100644 --- a/src/app.module.ts +++ b/voucherify-service/src/app.module.ts @@ -1,6 +1,5 @@ import { Module, Logger } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; - import { AppController } from './app.controller'; import { AppService } from './app.service'; import { VoucherifyConnectorService } from './voucherify/voucherify-connector.service'; diff --git a/src/app.service.ts b/voucherify-service/src/app.service.ts similarity index 100% rename from src/app.service.ts rename to voucherify-service/src/app.service.ts diff --git a/src/cli.ts b/voucherify-service/src/cli.ts similarity index 100% rename from src/cli.ts rename to voucherify-service/src/cli.ts diff --git a/src/cli/api-extension-add.command.ts b/voucherify-service/src/cli/api-extension-add.command.ts similarity index 77% rename from src/cli/api-extension-add.command.ts rename to voucherify-service/src/cli/api-extension-add.command.ts index 6bf9bbdc..4b1f72fb 100644 --- a/src/cli/api-extension-add.command.ts +++ b/voucherify-service/src/cli/api-extension-add.command.ts @@ -8,19 +8,24 @@ import loadingCli from 'loading-cli'; description: 'Add commercetools API Extension pointing to your server (server url is taken from APP_URL environment variable)', }) -export class ApiExtensionAddCommand implements CommandRunner { +export class ApiExtensionAddCommand extends CommandRunner { constructor( private readonly registerService: ApiExtensionService, private readonly configService: ConfigService, - ) {} + ) { + super(); + } async run(): Promise { - const url = this.configService.get('APP_URL'); + const url = + this.configService.get('APP_URL') || + this.configService.get('CONNECT_SERVICE_URL'); + const apiExtensionKey = this.configService.get( 'COMMERCE_TOOLS_API_EXTENSION_KEY', ); if (!url) { - loadingCli(`Missing APP_URL configuration`).fail(); + loadingCli(`Missing APP_URL or CONNECT_SERVICE_URL configuration`).fail(); return; } diff --git a/src/cli/api-extension-delete.command.ts b/voucherify-service/src/cli/api-extension-delete.command.ts similarity index 96% rename from src/cli/api-extension-delete.command.ts rename to voucherify-service/src/cli/api-extension-delete.command.ts index a895a20c..60086a78 100644 --- a/src/cli/api-extension-delete.command.ts +++ b/voucherify-service/src/cli/api-extension-delete.command.ts @@ -13,11 +13,13 @@ type ApiExtensionDeleteCommandOptions = { description: 'Delete commercetools API Extension by "Key" value configured in COMMERCE_TOOLS_API_EXTENSION_KEY environment variable', }) -export class ApiExtensionDeleteCommand implements CommandRunner { +export class ApiExtensionDeleteCommand extends CommandRunner { constructor( private readonly registerService: ApiExtensionService, private readonly configService: ConfigService, - ) {} + ) { + super(); + } async run( passedParam: string[], options?: ApiExtensionDeleteCommandOptions, diff --git a/src/cli/api-extension-list.command.ts b/voucherify-service/src/cli/api-extension-list.command.ts similarity index 94% rename from src/cli/api-extension-list.command.ts rename to voucherify-service/src/cli/api-extension-list.command.ts index 7aa3377c..2618fed9 100644 --- a/src/cli/api-extension-list.command.ts +++ b/voucherify-service/src/cli/api-extension-list.command.ts @@ -7,8 +7,10 @@ import Table from 'cli-table'; name: 'integration-list', description: 'List registered commercetools API Extension', }) -export class ApiExtensionListCommand implements CommandRunner { - constructor(private readonly registerService: ApiExtensionService) {} +export class ApiExtensionListCommand extends CommandRunner { + constructor(private readonly registerService: ApiExtensionService) { + super(); + } async run(): Promise { const spinner = loadingCli('List registered API Extensions').start(); const extensions = await this.registerService.list(); diff --git a/src/cli/api-extension-update.command.ts b/voucherify-service/src/cli/api-extension-update.command.ts similarity index 65% rename from src/cli/api-extension-update.command.ts rename to voucherify-service/src/cli/api-extension-update.command.ts index c38e2776..4784488f 100644 --- a/src/cli/api-extension-update.command.ts +++ b/voucherify-service/src/cli/api-extension-update.command.ts @@ -6,15 +6,20 @@ import loadingCli from 'loading-cli'; @Command({ name: 'integration-update', description: - 'Remove old and add new API Extension pointing to your server. Url is taken from APP_URL environment variable. Old API Extension is recognized by API Extension "key" attribute configured by COMMERCE_TOOLS_API_EXTENSION_KEY environment variable', + 'Remove old and add new API Extension pointing to your server. Url is taken from APP_URL or CONNECT_SERVICE_URL environment variables. Old API Extension is recognized by API Extension "key" attribute configured by COMMERCE_TOOLS_API_EXTENSION_KEY environment variable', }) -export class ApiExtensionUpdateCommand implements CommandRunner { +export class ApiExtensionUpdateCommand extends CommandRunner { constructor( private readonly apiExtensionService: ApiExtensionService, private readonly configService: ConfigService, - ) {} + ) { + super(); + } async run(): Promise { - const url = this.configService.get('APP_URL'); + const url = + this.configService.get('APP_URL') || + this.configService.get('CONNECT_SERVICE_URL'); + const spinner = loadingCli(`Add API Extension for ${url}`).start(); const result = await this.apiExtensionService.update(url); if (result) { diff --git a/src/cli/config.command.ts b/voucherify-service/src/cli/config.command.ts similarity index 95% rename from src/cli/config.command.ts rename to voucherify-service/src/cli/config.command.ts index a379224f..e5f76251 100644 --- a/src/cli/config.command.ts +++ b/voucherify-service/src/cli/config.command.ts @@ -10,11 +10,13 @@ import { CustomTypesService } from '../commercetools/custom-types/custom-types.s 2. coupon tax category - needed for any coupon or gift card with a fixed amount discount `, }) -export class ConfigCommand implements CommandRunner { +export class ConfigCommand extends CommandRunner { constructor( private readonly typesService: CustomTypesService, private readonly taxCategoriesService: TaxCategoriesService, - ) {} + ) { + super(); + } async run(): Promise { const spinnerCouponsTypes = loadingCli( `[1/2] Attempt to configure required coupon types in Commercetools`, diff --git a/src/cli/migrate.command.ts b/voucherify-service/src/cli/migrate.command.ts similarity index 96% rename from src/cli/migrate.command.ts rename to voucherify-service/src/cli/migrate.command.ts index 0e1c9f6b..45eed338 100644 --- a/src/cli/migrate.command.ts +++ b/voucherify-service/src/cli/migrate.command.ts @@ -4,6 +4,7 @@ import loadingCli from 'loading-cli'; import { ProductImportService } from '../import/product-import.service'; import { OrderImportService } from '../import/order-import.service'; import { CustomerImportService } from '../import/customer-import.service'; +import { CommandMetadata } from 'nest-commander/src/command-runner.interface'; type ResourceTypeArg = { name: 'products' | 'orders' | 'customers'; @@ -24,13 +25,14 @@ interface MigrateCommandInterface { description: 'Sync resources from commercetools to Voucherify. You can add optional argument to sync not all resources, but from specific time', }) -export class MigrateCommand implements CommandRunner { +export class MigrateCommand extends CommandRunner { constructor( private readonly productImportService: ProductImportService, private readonly orderImportService: OrderImportService, private readonly customerImportService: CustomerImportService, - private readonly logger: Logger, - ) {} + ) { + super(); + } @Option({ flags: '--type [string]', diff --git a/src/commercetools/api-extension.controller.ts b/voucherify-service/src/commercetools/api-extension.controller.ts similarity index 100% rename from src/commercetools/api-extension.controller.ts rename to voucherify-service/src/commercetools/api-extension.controller.ts diff --git a/src/commercetools/api-extension.guard.ts b/voucherify-service/src/commercetools/api-extension.guard.ts similarity index 100% rename from src/commercetools/api-extension.guard.ts rename to voucherify-service/src/commercetools/api-extension.guard.ts diff --git a/src/commercetools/api-extension.service.ts b/voucherify-service/src/commercetools/api-extension.service.ts similarity index 100% rename from src/commercetools/api-extension.service.ts rename to voucherify-service/src/commercetools/api-extension.service.ts diff --git a/src/commercetools/commercetools-connector.service.ts b/voucherify-service/src/commercetools/commercetools-connector.service.ts similarity index 100% rename from src/commercetools/commercetools-connector.service.ts rename to voucherify-service/src/commercetools/commercetools-connector.service.ts diff --git a/src/commercetools/commercetools.service.ts b/voucherify-service/src/commercetools/commercetools.service.ts similarity index 97% rename from src/commercetools/commercetools.service.ts rename to voucherify-service/src/commercetools/commercetools.service.ts index 3cecf042..87b35dc7 100644 --- a/src/commercetools/commercetools.service.ts +++ b/voucherify-service/src/commercetools/commercetools.service.ts @@ -129,7 +129,8 @@ export class CommercetoolsService implements StoreInterface { }); return; } - await this.cartUpdateHandler(translateCtCartToCart(cart)); //dropping sessions from coupons that are not included in cart (because of API extension timeout) + //dropping sessions from coupons that are not included in cart (because of API extension timeout) + await this.cartUpdateHandler(translateCtCartToCart(cart)); this.logger.debug('Coupons changes were rolled back successfully'); return; } diff --git a/src/commercetools/custom-types/coupon-type-definition.ts b/voucherify-service/src/commercetools/custom-types/coupon-type-definition.ts similarity index 100% rename from src/commercetools/custom-types/coupon-type-definition.ts rename to voucherify-service/src/commercetools/custom-types/coupon-type-definition.ts diff --git a/src/commercetools/custom-types/custom-types.service.ts b/voucherify-service/src/commercetools/custom-types/custom-types.service.ts similarity index 100% rename from src/commercetools/custom-types/custom-types.service.ts rename to voucherify-service/src/commercetools/custom-types/custom-types.service.ts diff --git a/src/commercetools/dto/CartOrder.dto.ts b/voucherify-service/src/commercetools/dto/CartOrder.dto.ts similarity index 100% rename from src/commercetools/dto/CartOrder.dto.ts rename to voucherify-service/src/commercetools/dto/CartOrder.dto.ts diff --git a/src/commercetools/handle-timeout-interceptor.service.ts b/voucherify-service/src/commercetools/handle-timeout-interceptor.service.ts similarity index 94% rename from src/commercetools/handle-timeout-interceptor.service.ts rename to voucherify-service/src/commercetools/handle-timeout-interceptor.service.ts index 9edf9b77..8faf9de0 100644 --- a/src/commercetools/handle-timeout-interceptor.service.ts +++ b/voucherify-service/src/commercetools/handle-timeout-interceptor.service.ts @@ -22,7 +22,7 @@ export class HandleTimeoutInterceptor implements NestInterceptor { next: CallHandler, ): Promise> { const body = context?.switchToHttp()?.getRequest()?.body; - if (!(body.action === 'Update' && body.resource.typeId === 'cart')) { + if (!(body?.action === 'Update' && body?.resource.typeId === 'cart')) { return next.handle(); } const now = Date.now(); diff --git a/src/commercetools/store-actions/cart-update-actions.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions.ts diff --git a/src/commercetools/store-actions/cart-update-actions/CartAction.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/CartAction.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions/CartAction.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/CartAction.ts diff --git a/src/commercetools/store-actions/cart-update-actions/addDirectDiscountWithDiscountSummary.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/addDirectDiscountWithDiscountSummary.ts similarity index 89% rename from src/commercetools/store-actions/cart-update-actions/addDirectDiscountWithDiscountSummary.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/addDirectDiscountWithDiscountSummary.ts index 5897d7b2..a3e6cc20 100644 --- a/src/commercetools/store-actions/cart-update-actions/addDirectDiscountWithDiscountSummary.ts +++ b/voucherify-service/src/commercetools/store-actions/cart-update-actions/addDirectDiscountWithDiscountSummary.ts @@ -5,6 +5,12 @@ import { } from './CartAction'; import { FREE_SHIPPING_UNIT_TYPE } from '../../../consts/voucherify'; +const sortDiscounts = (discounts) => + discounts.sort((discount1, discount2) => { + if (discount1?.target?.predicate === 'true') return 1; + return -1; + }); + export default function addDirectDiscountWithDiscountSummary( cart: Cart, dataToRunCartActionsBuilder: DataToRunCartActionsBuilder, @@ -74,11 +80,7 @@ export default function addDirectDiscountWithDiscountSummary( return [ { action: 'setDirectDiscounts', - discounts: discounts.sort((discount1, discount2) => { - if (discount1?.target?.predicate === 'true') return 1; - if (discount2?.target?.predicate === 'true') return -1; - return -1; - }), + discounts: sortDiscounts(discounts), }, ]; } diff --git a/src/commercetools/store-actions/cart-update-actions/builderActions/applyDiscounts.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/builderActions/applyDiscounts.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions/builderActions/applyDiscounts.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/builderActions/applyDiscounts.ts diff --git a/src/commercetools/store-actions/cart-update-actions/builderActions/lineItemsAndTheirCustomFields.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/builderActions/lineItemsAndTheirCustomFields.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions/builderActions/lineItemsAndTheirCustomFields.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/builderActions/lineItemsAndTheirCustomFields.ts diff --git a/src/commercetools/store-actions/cart-update-actions/builderActions/setCustomFields.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/builderActions/setCustomFields.ts similarity index 86% rename from src/commercetools/store-actions/cart-update-actions/builderActions/setCustomFields.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/builderActions/setCustomFields.ts index f93c6327..19b024f6 100644 --- a/src/commercetools/store-actions/cart-update-actions/builderActions/setCustomFields.ts +++ b/voucherify-service/src/commercetools/store-actions/cart-update-actions/builderActions/setCustomFields.ts @@ -1,4 +1,4 @@ -import { Coupon, availablePromotion } from '../../../../integration/types'; +import { Coupon } from '../../../../integration/types'; import { CartAction, CartActionSetCustomFieldFreeShipping, @@ -78,12 +78,9 @@ function setCouponsLimit( function updateDiscountsCodes( dataToRunCartActionsBuilder: DataToRunCartActionsBuilder, -): - | CartActionSetCustomFieldWithCoupons[] - | CartActionSetCustomFieldWithValidationFailed[] { +): CartActionSetCustomFieldWithCoupons { const { availablePromotions, applicableCoupons, inapplicableCoupons } = dataToRunCartActionsBuilder; - const validationFailedAction = []; const oldCouponsCodes: Coupon[] = ( dataToRunCartActionsBuilder.commerceToolsCart.custom?.fields ?.discount_codes ?? [] @@ -123,21 +120,16 @@ function updateDiscountsCodes( ({ code: coupon.id, status: 'NOT_APPLIED', - errMsg: coupon.result?.error?.error?.message - ? coupon.result?.error?.error.message - : coupon.result?.error?.message, + errMsg: coupon.result?.error?.message || 'Unknown error', } as Coupon), ), ]; - return [ - { - action: 'setCustomField', - name: 'discount_codes', - value: coupons.map((coupon) => JSON.stringify(coupon)) as string[], - }, - ...validationFailedAction, - ]; + return { + action: 'setCustomField', + name: 'discount_codes', + value: coupons.map((coupon) => JSON.stringify(coupon)) as string[], + }; } export default function setCustomFields( @@ -146,7 +138,7 @@ export default function setCustomFields( const cartActions = [] as CartAction[]; cartActions.push(setSessionAsCustomField(dataToRunCartActionsBuilder)); - cartActions.push(...updateDiscountsCodes(dataToRunCartActionsBuilder)); + cartActions.push(updateDiscountsCodes(dataToRunCartActionsBuilder)); cartActions.push(addShippingProductSourceIds(dataToRunCartActionsBuilder)); cartActions.push(setCouponsLimit(dataToRunCartActionsBuilder)); diff --git a/src/commercetools/store-actions/cart-update-actions/getCartActionBuilders.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/getCartActionBuilders.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions/getCartActionBuilders.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/getCartActionBuilders.ts diff --git a/src/commercetools/store-actions/cart-update-actions/helpers/addFreeLineItems.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/helpers/addFreeLineItems.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions/helpers/addFreeLineItems.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/helpers/addFreeLineItems.ts diff --git a/src/commercetools/store-actions/cart-update-actions/helpers/fixedPrice.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/helpers/fixedPrice.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions/helpers/fixedPrice.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/helpers/fixedPrice.ts diff --git a/src/commercetools/store-actions/cart-update-actions/helpers/removeFreeLineItemsForNonApplicableCoupon.ts b/voucherify-service/src/commercetools/store-actions/cart-update-actions/helpers/removeFreeLineItemsForNonApplicableCoupon.ts similarity index 100% rename from src/commercetools/store-actions/cart-update-actions/helpers/removeFreeLineItemsForNonApplicableCoupon.ts rename to voucherify-service/src/commercetools/store-actions/cart-update-actions/helpers/removeFreeLineItemsForNonApplicableCoupon.ts diff --git a/voucherify-service/src/commercetools/store-actions/order-paid-actions.ts b/voucherify-service/src/commercetools/store-actions/order-paid-actions.ts new file mode 100644 index 00000000..a02d5493 --- /dev/null +++ b/voucherify-service/src/commercetools/store-actions/order-paid-actions.ts @@ -0,0 +1,101 @@ +import { Payment } from '@commercetools/platform-sdk'; +import { ByProjectKeyRequestBuilder } from '@commercetools/platform-sdk/dist/declarations/src/generated/client/by-project-key-request-builder'; +import { Order as CommerceToolsOrder } from '@commercetools/platform-sdk/dist/declarations/src/generated/models/order'; +import { CUSTOM_FIELD_PREFIX } from '../../consts/voucherify'; +import { deleteObjectsFromObject } from '../utils/deleteObjectsFromObject'; +import flatten from 'flat'; + +const CUSTOM_FIELD_PREFIX_LENGTH = CUSTOM_FIELD_PREFIX.length; + +const addToMetadataReduceFunction = (accumulator, key, variable) => { + if (typeof variable !== 'object') { + accumulator[key] = variable; + } else if (Array.isArray(variable)) { + accumulator[key] = variable.map((element) => { + if (typeof element !== 'object') { + return element; + } + return deleteObjectsFromObject(flatten(element)); + }); + } else if (typeof variable === 'object') { + accumulator[key] = deleteObjectsFromObject(flatten(variable)); + } + return accumulator; +}; + +const getOrderMetadataFromCustomFields = ( + order, + orderMetadataSchemaProperties, +) => { + const customMetadataProperties = orderMetadataSchemaProperties.filter( + (key) => + key.length > CUSTOM_FIELD_PREFIX_LENGTH && + key.slice(0, CUSTOM_FIELD_PREFIX_LENGTH) === CUSTOM_FIELD_PREFIX, + ); + if (!(order?.custom?.fields && customMetadataProperties.length)) { + return {}; + } + return customMetadataProperties + .filter( + (key) => order.custom.fields?.[key.slice(CUSTOM_FIELD_PREFIX_LENGTH)], + ) + .reduce( + (accumulator, key) => + addToMetadataReduceFunction( + accumulator, + key, + order.custom.fields[key.slice(CUSTOM_FIELD_PREFIX_LENGTH)], + ), + {}, + ); +}; + +const getOrderMetadata = (order, metadataProperties) => { + return metadataProperties + .filter( + (key) => + key !== 'payments' && + key.slice(0, CUSTOM_FIELD_PREFIX_LENGTH) !== CUSTOM_FIELD_PREFIX, + ) + .reduce( + (accumulator, key) => + addToMetadataReduceFunction(accumulator, key, order[key]), + {}, + ); +}; + +export class OrderPaidActions implements OrderPaidActions { + private ctClient: ByProjectKeyRequestBuilder; + + public setCtClient(value: ByProjectKeyRequestBuilder) { + this.ctClient = value; + } + + public async findPayment(id: string): Promise { + return (await this.ctClient.payments().withId({ ID: id }).get().execute()) + ?.body; + } + + public async getCustomMetadataForOrder( + order: CommerceToolsOrder, + orderMetadataSchemaProperties: string[], + ): Promise<{ [key: string]: string }> { + const metadata = { + ...getOrderMetadataFromCustomFields(order, orderMetadataSchemaProperties), + ...getOrderMetadata(order, orderMetadataSchemaProperties), + }; + + if (orderMetadataSchemaProperties.includes('payments')) { + const payments = []; + const paymentReferences = order?.paymentInfo?.payments ?? []; + for await (const paymentReference of paymentReferences) { + payments.push(await this.findPayment(paymentReference.id)); + } + metadata['payments'] = payments + .filter((payment) => payment?.id) + .map((payment) => deleteObjectsFromObject(flatten(payment))); + } + + return metadata; + } +} diff --git a/src/commercetools/tax-categories/tax-categories.service.ts b/voucherify-service/src/commercetools/tax-categories/tax-categories.service.ts similarity index 99% rename from src/commercetools/tax-categories/tax-categories.service.ts rename to voucherify-service/src/commercetools/tax-categories/tax-categories.service.ts index bf05695c..70a16808 100644 --- a/src/commercetools/tax-categories/tax-categories.service.ts +++ b/voucherify-service/src/commercetools/tax-categories/tax-categories.service.ts @@ -154,6 +154,7 @@ export class TaxCategoriesService { }, }) .execute(); + const success = [200, 201].includes(response.statusCode); if (success) { this.logger.debug({ msg: 'Updated countries for coupon tax category' }); diff --git a/src/commercetools/types.ts b/voucherify-service/src/commercetools/types.ts similarity index 100% rename from src/commercetools/types.ts rename to voucherify-service/src/commercetools/types.ts diff --git a/src/commercetools/utils/deleteObjectsFromObject.ts b/voucherify-service/src/commercetools/utils/deleteObjectsFromObject.ts similarity index 100% rename from src/commercetools/utils/deleteObjectsFromObject.ts rename to voucherify-service/src/commercetools/utils/deleteObjectsFromObject.ts diff --git a/src/commercetools/utils/deserializeCoupons.ts b/voucherify-service/src/commercetools/utils/deserializeCoupons.ts similarity index 100% rename from src/commercetools/utils/deserializeCoupons.ts rename to voucherify-service/src/commercetools/utils/deserializeCoupons.ts diff --git a/src/commercetools/utils/getCommercetoolstCurrentPriceAmount.ts b/voucherify-service/src/commercetools/utils/getCommercetoolstCurrentPriceAmount.ts similarity index 52% rename from src/commercetools/utils/getCommercetoolstCurrentPriceAmount.ts rename to voucherify-service/src/commercetools/utils/getCommercetoolstCurrentPriceAmount.ts index 08ee0389..fbbf12af 100644 --- a/src/commercetools/utils/getCommercetoolstCurrentPriceAmount.ts +++ b/voucherify-service/src/commercetools/utils/getCommercetoolstCurrentPriceAmount.ts @@ -1,6 +1,34 @@ import { Product } from '@commercetools/platform-sdk'; import { PriceSelector } from '../types'; +const filterByDistributionChannels = (priceVariant, distributionChannels) => { + if (!(distributionChannels?.length > 0) && !priceVariant?.channel) { + return true; + } + if (distributionChannels.length > 0 && !priceVariant?.channel) { + return false; + } + for (const currentChannel of distributionChannels) { + if ( + priceVariant.channel.typeId === currentChannel.typeId && + priceVariant.channel.id === currentChannel.id + ) { + return true; + } + } + return false; +}; + +const filterByCustomerGroup = (priceVariant, customerGroup) => { + if (customerGroup) { + return !!( + priceVariant?.customerGroup?.typeId === customerGroup.typeId && + priceVariant?.customerGroup?.id === customerGroup.id + ); + } + return !priceVariant?.customerGroup; +}; + export function getCommercetoolstCurrentPriceAmount( ctProduct: Product, productSkuSourceId: string, @@ -27,34 +55,12 @@ export function getCommercetoolstCurrentPriceAmount( //country return priceVariant?.country === country; }) - .filter((priceVariant) => { - //customerGroup - if (customerGroup) { - return ( - priceVariant?.customerGroup?.typeId === customerGroup.typeId && - priceVariant?.customerGroup?.id === customerGroup.id - ); - } - return !priceVariant?.customerGroup; - }) - .filter((priceVariant) => { - //distributionChannels - if (!(distributionChannels?.length > 0) && !priceVariant?.channel) { - return true; - } - if (distributionChannels.length > 0 && !priceVariant?.channel) { - return false; - } - distributionChannels.forEach((currentChannel) => { - if ( - priceVariant.channel.typeId === currentChannel.typeId && - priceVariant.channel.id === currentChannel.id - ) { - return true; - } - }); - return false; - }); + .filter((priceVariant) => + filterByCustomerGroup(priceVariant, customerGroup), + ) + .filter((priceVariant) => + filterByDistributionChannels(priceVariant, distributionChannels), + ); })?.[0]?.value?.centAmount || 0 ); } diff --git a/src/commercetools/utils/getCouponsFromCartOrOrder.ts b/voucherify-service/src/commercetools/utils/getCouponsFromCartOrOrder.ts similarity index 100% rename from src/commercetools/utils/getCouponsFromCartOrOrder.ts rename to voucherify-service/src/commercetools/utils/getCouponsFromCartOrOrder.ts diff --git a/src/commercetools/utils/mappers/getCustomerFromCtOrder.ts b/voucherify-service/src/commercetools/utils/mappers/getCustomerFromCtOrder.ts similarity index 100% rename from src/commercetools/utils/mappers/getCustomerFromCtOrder.ts rename to voucherify-service/src/commercetools/utils/mappers/getCustomerFromCtOrder.ts diff --git a/src/commercetools/utils/mappers/getPriceSelectorFromCtCart.ts b/voucherify-service/src/commercetools/utils/mappers/getPriceSelectorFromCtCart.ts similarity index 100% rename from src/commercetools/utils/mappers/getPriceSelectorFromCtCart.ts rename to voucherify-service/src/commercetools/utils/mappers/getPriceSelectorFromCtCart.ts diff --git a/src/commercetools/utils/mappers/getSessionFromCtCart.ts b/voucherify-service/src/commercetools/utils/mappers/getSessionFromCtCart.ts similarity index 100% rename from src/commercetools/utils/mappers/getSessionFromCtCart.ts rename to voucherify-service/src/commercetools/utils/mappers/getSessionFromCtCart.ts diff --git a/src/commercetools/utils/mappers/getSimpleMetadataForOrder.ts b/voucherify-service/src/commercetools/utils/mappers/getSimpleMetadataForOrder.ts similarity index 100% rename from src/commercetools/utils/mappers/getSimpleMetadataForOrder.ts rename to voucherify-service/src/commercetools/utils/mappers/getSimpleMetadataForOrder.ts diff --git a/src/commercetools/utils/mappers/mapLineItemsToIntegrationType.ts b/voucherify-service/src/commercetools/utils/mappers/mapLineItemsToIntegrationType.ts similarity index 100% rename from src/commercetools/utils/mappers/mapLineItemsToIntegrationType.ts rename to voucherify-service/src/commercetools/utils/mappers/mapLineItemsToIntegrationType.ts diff --git a/src/commercetools/utils/mappers/translateCtCartToCart.ts b/voucherify-service/src/commercetools/utils/mappers/translateCtCartToCart.ts similarity index 100% rename from src/commercetools/utils/mappers/translateCtCartToCart.ts rename to voucherify-service/src/commercetools/utils/mappers/translateCtCartToCart.ts diff --git a/src/commercetools/utils/mappers/translateCtOrderToOrder.ts b/voucherify-service/src/commercetools/utils/mappers/translateCtOrderToOrder.ts similarity index 100% rename from src/commercetools/utils/mappers/translateCtOrderToOrder.ts rename to voucherify-service/src/commercetools/utils/mappers/translateCtOrderToOrder.ts diff --git a/src/configs/appValidationPipe.ts b/voucherify-service/src/configs/appValidationPipe.ts similarity index 100% rename from src/configs/appValidationPipe.ts rename to voucherify-service/src/configs/appValidationPipe.ts diff --git a/src/configs/requestJsonLogger.ts b/voucherify-service/src/configs/requestJsonLogger.ts similarity index 100% rename from src/configs/requestJsonLogger.ts rename to voucherify-service/src/configs/requestJsonLogger.ts diff --git a/src/configs/validationSchema.ts b/voucherify-service/src/configs/validationSchema.ts similarity index 81% rename from src/configs/validationSchema.ts rename to voucherify-service/src/configs/validationSchema.ts index 7b0ebc91..b19a72f1 100644 --- a/src/configs/validationSchema.ts +++ b/voucherify-service/src/configs/validationSchema.ts @@ -1,7 +1,12 @@ import * as Joi from 'joi'; +const getRemoveTrailingSlashRegexp = () => /\/+$/; + export const ValidationSchema = Joi.object({ - APP_URL: Joi.string(), + APP_URL: Joi.string().replace(getRemoveTrailingSlashRegexp(), '').uri(), + CONNECT_SERVICE_URL: Joi.string() + .replace(getRemoveTrailingSlashRegexp(), '') + .uri(), VOUCHERIFY_APP_ID: Joi.string().required(), VOUCHERIFY_SECRET_KEY: Joi.string().required(), VOUCHERIFY_API_URL: Joi.string().required(), diff --git a/src/consts/voucherify.ts b/voucherify-service/src/consts/voucherify.ts similarity index 100% rename from src/consts/voucherify.ts rename to voucherify-service/src/consts/voucherify.ts diff --git a/src/devAttached.ts b/voucherify-service/src/devAttached.ts similarity index 100% rename from src/devAttached.ts rename to voucherify-service/src/devAttached.ts diff --git a/src/import/customer-import.service.ts b/voucherify-service/src/import/customer-import.service.ts similarity index 95% rename from src/import/customer-import.service.ts rename to voucherify-service/src/import/customer-import.service.ts index 3a035c5c..2dad9326 100644 --- a/src/import/customer-import.service.ts +++ b/voucherify-service/src/import/customer-import.service.ts @@ -3,12 +3,12 @@ import { ConfigService } from '@nestjs/config'; import { createReadStream, unlink } from 'fs'; import FormData from 'form-data'; import fetch from 'node-fetch2'; -import { CommercetoolsConnectorService } from 'src/commercetools/commercetools-connector.service'; import { Customer } from '@commercetools/platform-sdk'; import ObjectsToCsv from 'objects-to-csv'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import crypto = require('crypto'); import { OrderImportService } from './order-import.service'; +import { VoucherifyConnectorService } from '../voucherify/voucherify-connector.service'; +import { CommercetoolsConnectorService } from '../commercetools/commercetools-connector.service'; const sleep = (time: number) => { return new Promise((resolve) => { @@ -84,7 +84,7 @@ export class CustomerImportService { }); } - for await (const ordersBatch of this.orderImportService.getAllOrders( + for await (const ordersBatch of this.orderImportService.getPartialOrders( period, )) { ordersBatch.forEach((order) => { diff --git a/src/import/import.controller.ts b/voucherify-service/src/import/import.controller.ts similarity index 100% rename from src/import/import.controller.ts rename to voucherify-service/src/import/import.controller.ts diff --git a/src/import/order-import.service.ts b/voucherify-service/src/import/order-import.service.ts similarity index 91% rename from src/import/order-import.service.ts rename to voucherify-service/src/import/order-import.service.ts index fae0ee65..300b1dfc 100644 --- a/src/import/order-import.service.ts +++ b/voucherify-service/src/import/order-import.service.ts @@ -1,12 +1,12 @@ import { Injectable, Logger } from '@nestjs/common'; import { Order } from '@commercetools/platform-sdk'; import { CommercetoolsConnectorService } from '../commercetools/commercetools-connector.service'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { OrderMapper } from '../integration/utils/mappers/order'; import { CommercetoolsService } from '../commercetools/commercetools.service'; import { getSimpleMetadataForOrder } from '../commercetools/utils/mappers/getSimpleMetadataForOrder'; import { OrderPaidActions } from '../commercetools/store-actions/order-paid-actions'; import { mergeTwoObjectsIntoOne } from '../integration/utils/mergeTwoObjectsIntoOne'; +import { VoucherifyConnectorService } from '../voucherify/voucherify-connector.service'; const sleep = (time: number) => { return new Promise((resolve) => { @@ -23,7 +23,9 @@ export class OrderImportService { private readonly commercetoolsService: CommercetoolsService, ) {} - public async *getAllOrders(minDateTime?: string): AsyncGenerator { + public async *getPartialOrders( + minDateTime?: string, + ): AsyncGenerator { const ctClient = this.commerceToolsConnectorService.getClient(); const limit = 100; let page = 0; @@ -58,7 +60,7 @@ export class OrderImportService { } while (!allOrdersCollected); } - public async migrateOrders(period?: string) { + private async getAllOrders(period?: string) { const orders = []; const orderMetadataSchemaProperties = await this.voucherifyClient.getMetadataSchemaProperties('order'); @@ -66,7 +68,7 @@ export class OrderImportService { const orderActions = new OrderPaidActions(); orderActions.setCtClient(this.commerceToolsConnectorService.getClient()); - for await (const ordersBatch of this.getAllOrders(period)) { + for await (const ordersBatch of this.getPartialOrders(period)) { for (const order of ordersBatch) { if (order.paymentState !== 'Paid') { continue; @@ -89,7 +91,11 @@ export class OrderImportService { ); } } + return orders; + } + public async migrateOrders(period?: string) { + const orders = await this.getAllOrders(period); console.log(`Sending ${orders.length} orders to Voucherify\n`); const client = this.voucherifyClient.getClient(); diff --git a/src/import/product-import.service.ts b/voucherify-service/src/import/product-import.service.ts similarity index 91% rename from src/import/product-import.service.ts rename to voucherify-service/src/import/product-import.service.ts index 2df19413..fa50b4a4 100644 --- a/src/import/product-import.service.ts +++ b/voucherify-service/src/import/product-import.service.ts @@ -3,13 +3,12 @@ import { ConfigService } from '@nestjs/config'; import { createReadStream, unlink } from 'fs'; import FormData from 'form-data'; import fetch from 'node-fetch2'; -import { CommercetoolsConnectorService } from 'src/commercetools/commercetools-connector.service'; import { Product } from '@commercetools/platform-sdk'; import ObjectsToCsv from 'objects-to-csv'; - import crypto = require('crypto'); -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { getMetadata } from '../integration/utils/mappers/product'; +import { CommercetoolsConnectorService } from '../commercetools/commercetools-connector.service'; +import { VoucherifyConnectorService } from '../voucherify/voucherify-connector.service'; const sleep = (time: number) => { return new Promise((resolve) => { @@ -82,8 +81,19 @@ export class ProductImportService { for await (const productsBatch of this.getAllProducts(period)) { productsBatch.forEach((product) => { + const productNameCountry = this.configService.get( + 'COMMERCE_TOOLS_PRODUCT_NAME_COUNTRY', + ); + const names = product.masterData.current.name; + const namesKeys = Object.keys(names); + const name = productNameCountry + ? names[productNameCountry] + : namesKeys.length > 0 + ? names[namesKeys[0]] + : undefined; + products.push({ - name: product.masterData.current.name.en, + name, source_id: product.id, ...getMetadata( product.masterData.current.masterVariant.attributes, @@ -95,7 +105,7 @@ export class ProductImportService { product.masterData.current.variants.forEach((variant) => { skus.push({ product_id: product.id, - sku: product.masterData.current.name.en, + sku: name, source_id: variant.sku, price: product.masterData.current.masterVariant.price ? product.masterData.current.masterVariant.price.value @@ -107,7 +117,7 @@ export class ProductImportService { } else { skus.push({ product_id: product.id, - sku: product.masterData.current.name.en, + sku: name, source_id: product.masterData.current.masterVariant.sku, price: product.masterData.current.masterVariant.price ? product.masterData.current.masterVariant.price.value diff --git a/src/integration/integration.service.ts b/voucherify-service/src/integration/integration.service.ts similarity index 91% rename from src/integration/integration.service.ts rename to voucherify-service/src/integration/integration.service.ts index 743895c6..1bba6218 100644 --- a/src/integration/integration.service.ts +++ b/voucherify-service/src/integration/integration.service.ts @@ -45,6 +45,7 @@ import { getIncorrectPrices } from './utils/getIncorrectPrices'; import { getCodesIfProductNotFoundIn } from './utils/getCodesIfProductNotFoundIn'; import { getItemsWithCorrectedPrices } from './utils/getItemsWithPricesCorrected'; import { getProductsToAdd } from './utils/getProductsToAddWithPricesCorrected'; +import { getOrderMetadata } from './utils/getOrderMetadata'; @Injectable() export class IntegrationService { @@ -125,7 +126,7 @@ export class IntegrationService { this.configService.get('COMMERCE_TOOLS_COUPONS_LIMIT'), ); - let validatedCoupons: ValidationValidateStackableResponse = + let validatedCoupons = await this.voucherifyConnectorService.validateStackableVouchers( buildValidationsValidateStackableParamsForVoucherify( couponsAppliedAndNewLimitedByConfig, @@ -135,17 +136,27 @@ export class IntegrationService { ); const inapplicableRedeemables = getRedeemablesByStatus( - validatedCoupons.redeemables, + [ + ...validatedCoupons.redeemables, + ...(validatedCoupons?.inapplicable_redeemables || []), + ], 'INAPPLICABLE', ); + if (typeof cartUpdateActions?.setInapplicableCoupons === 'function') { + cartUpdateActions.setInapplicableCoupons(inapplicableRedeemables); + } + const inapplicableCodes = redeemablesToCodes(inapplicableRedeemables); - if (validatedCoupons.valid === false) { + if ( + //Checking if project uses partial redeemables + !Array.isArray(validatedCoupons?.inapplicable_redeemables) && + validatedCoupons.valid === false + ) { const applicableCodes = couponsAppliedAndNewLimitedByConfig.filter( (coupon) => !inapplicableCodes.includes(coupon.code), ); if (applicableCodes.length === 0) { - cartUpdateActions.setInapplicableCoupons(inapplicableRedeemables); return; } //We need to do another call to V% if there is any applicable coupon in the cart @@ -223,10 +234,9 @@ export class IntegrationService { ); } - const productsToAdd: ProductToAdd[] = getProductsToAdd( - validatedCoupons, - currentPricesOfProducts, - ); + const productsToAdd: ProductToAdd[] = validatedCoupons.order + ? getProductsToAdd(validatedCoupons, currentPricesOfProducts) + : []; this.logger.debug({ validatedCoupons, @@ -269,7 +279,7 @@ export class IntegrationService { ) { const { id, customerId } = order; - //products metadata + //schema of product metadata const productMetadataSchemaProperties = await this.voucherifyConnectorService.getMetadataSchemaProperties( 'product', @@ -280,38 +290,17 @@ export class IntegrationService { productMetadataSchemaProperties, ); - //order metadata + //schema of order metadata const orderMetadataSchemaProperties = await this.voucherifyConnectorService.getMetadataSchemaProperties( 'order', ); - let orderMetadata = {}; - - if ( - typeof order?.rawOrder === 'object' && - order?.rawOrder !== undefined && - orderMetadataSchemaProperties.length > 0 - ) { - const simpleMetadata = getSimpleMetadataForOrder( - order.rawOrder, - orderMetadataSchemaProperties, - ); - if (typeof orderPaidActions?.getCustomMetadataForOrder !== 'function') { - orderMetadata = simpleMetadata; - } else { - const customMetadata = await orderPaidActions.getCustomMetadataForOrder( - order.rawOrder, - orderMetadataSchemaProperties, - ); - if (Object.keys(customMetadata).length > 0) { - orderMetadata = mergeTwoObjectsIntoOne( - customMetadata, - simpleMetadata, - ); - } - } - } + const orderMetadata = await getOrderMetadata( + order?.rawOrder, + orderMetadataSchemaProperties, + orderPaidActions.getCustomMetadataForOrder, + ); const coupons: Coupon[] = (order.coupons ?? []).filter( (coupon) => diff --git a/src/integration/types.ts b/voucherify-service/src/integration/types.ts similarity index 99% rename from src/integration/types.ts rename to voucherify-service/src/integration/types.ts index a6421b61..f1c70854 100644 --- a/src/integration/types.ts +++ b/voucherify-service/src/integration/types.ts @@ -10,7 +10,7 @@ import { CustomerRequest } from '@voucherify/sdk/dist/types/Customers'; export type CartUpdateHandler = ( cart: Cart, storeActions?: CartUpdateActionsInterface, -) => void; +) => Promise; export type OrderRedeemHandler = ( order: Order, diff --git a/src/integration/utils/couponsOperationFunctions.ts b/voucherify-service/src/integration/utils/couponsOperationFunctions.ts similarity index 100% rename from src/integration/utils/couponsOperationFunctions.ts rename to voucherify-service/src/integration/utils/couponsOperationFunctions.ts diff --git a/src/integration/utils/getCodesIfProductNotFoundIn.ts b/voucherify-service/src/integration/utils/getCodesIfProductNotFoundIn.ts similarity index 100% rename from src/integration/utils/getCodesIfProductNotFoundIn.ts rename to voucherify-service/src/integration/utils/getCodesIfProductNotFoundIn.ts diff --git a/src/integration/utils/getIncorrectPrices.ts b/voucherify-service/src/integration/utils/getIncorrectPrices.ts similarity index 100% rename from src/integration/utils/getIncorrectPrices.ts rename to voucherify-service/src/integration/utils/getIncorrectPrices.ts diff --git a/src/integration/utils/getItemsWithPricesCorrected.ts b/voucherify-service/src/integration/utils/getItemsWithPricesCorrected.ts similarity index 100% rename from src/integration/utils/getItemsWithPricesCorrected.ts rename to voucherify-service/src/integration/utils/getItemsWithPricesCorrected.ts diff --git a/voucherify-service/src/integration/utils/getOrderMetadata.ts b/voucherify-service/src/integration/utils/getOrderMetadata.ts new file mode 100644 index 00000000..378c8873 --- /dev/null +++ b/voucherify-service/src/integration/utils/getOrderMetadata.ts @@ -0,0 +1,30 @@ +import { getSimpleMetadataForOrder } from '../../commercetools/utils/mappers/getSimpleMetadataForOrder'; +import { mergeTwoObjectsIntoOne } from './mergeTwoObjectsIntoOne'; + +export const getOrderMetadata = async ( + rawCtOrder, + orderMetadataSchemaProperties, + getCustomMetadataForOrder = undefined, +) => { + if ( + !(rawCtOrder instanceof Object) || + !orderMetadataSchemaProperties?.length + ) { + return {}; + } + const simpleMetadata = getSimpleMetadataForOrder( + rawCtOrder, + orderMetadataSchemaProperties, + ); + if (typeof getCustomMetadataForOrder !== 'function') { + return simpleMetadata; + } else { + const customMetadata = await getCustomMetadataForOrder( + rawCtOrder, + orderMetadataSchemaProperties, + ); + if (Object.keys(customMetadata).length > 0) { + return mergeTwoObjectsIntoOne(customMetadata, simpleMetadata); + } + } +}; diff --git a/src/integration/utils/getProductsToAddWithPricesCorrected.ts b/voucherify-service/src/integration/utils/getProductsToAddWithPricesCorrected.ts similarity index 100% rename from src/integration/utils/getProductsToAddWithPricesCorrected.ts rename to voucherify-service/src/integration/utils/getProductsToAddWithPricesCorrected.ts diff --git a/src/integration/utils/helperFunctions.ts b/voucherify-service/src/integration/utils/helperFunctions.ts similarity index 100% rename from src/integration/utils/helperFunctions.ts rename to voucherify-service/src/integration/utils/helperFunctions.ts diff --git a/src/integration/utils/mappers/buildRedeemStackableRequestForVoucherify.ts b/voucherify-service/src/integration/utils/mappers/buildRedeemStackableRequestForVoucherify.ts similarity index 100% rename from src/integration/utils/mappers/buildRedeemStackableRequestForVoucherify.ts rename to voucherify-service/src/integration/utils/mappers/buildRedeemStackableRequestForVoucherify.ts diff --git a/src/integration/utils/mappers/buildValidationsValidateStackableParamsForVoucherify.ts b/voucherify-service/src/integration/utils/mappers/buildValidationsValidateStackableParamsForVoucherify.ts similarity index 100% rename from src/integration/utils/mappers/buildValidationsValidateStackableParamsForVoucherify.ts rename to voucherify-service/src/integration/utils/mappers/buildValidationsValidateStackableParamsForVoucherify.ts diff --git a/src/integration/utils/mappers/order.ts b/voucherify-service/src/integration/utils/mappers/order.ts similarity index 100% rename from src/integration/utils/mappers/order.ts rename to voucherify-service/src/integration/utils/mappers/order.ts diff --git a/src/integration/utils/mappers/product.ts b/voucherify-service/src/integration/utils/mappers/product.ts similarity index 100% rename from src/integration/utils/mappers/product.ts rename to voucherify-service/src/integration/utils/mappers/product.ts diff --git a/src/integration/utils/mergeTwoObjectsIntoOne.ts b/voucherify-service/src/integration/utils/mergeTwoObjectsIntoOne.ts similarity index 100% rename from src/integration/utils/mergeTwoObjectsIntoOne.ts rename to voucherify-service/src/integration/utils/mergeTwoObjectsIntoOne.ts diff --git a/src/integration/utils/redeemableOperationFunctions.ts b/voucherify-service/src/integration/utils/redeemableOperationFunctions.ts similarity index 100% rename from src/integration/utils/redeemableOperationFunctions.ts rename to voucherify-service/src/integration/utils/redeemableOperationFunctions.ts diff --git a/src/integration/utils/replaceCodesWithInapplicableCoupons.ts b/voucherify-service/src/integration/utils/replaceCodesWithInapplicableCoupons.ts similarity index 100% rename from src/integration/utils/replaceCodesWithInapplicableCoupons.ts rename to voucherify-service/src/integration/utils/replaceCodesWithInapplicableCoupons.ts diff --git a/src/main.ts b/voucherify-service/src/main.ts similarity index 100% rename from src/main.ts rename to voucherify-service/src/main.ts diff --git a/src/misc/elapsedTime.ts b/voucherify-service/src/misc/elapsedTime.ts similarity index 100% rename from src/misc/elapsedTime.ts rename to voucherify-service/src/misc/elapsedTime.ts diff --git a/src/misc/request-json-file-logger.ts b/voucherify-service/src/misc/request-json-file-logger.ts similarity index 79% rename from src/misc/request-json-file-logger.ts rename to voucherify-service/src/misc/request-json-file-logger.ts index 4c4a7476..8560f305 100644 --- a/src/misc/request-json-file-logger.ts +++ b/voucherify-service/src/misc/request-json-file-logger.ts @@ -1,5 +1,4 @@ import * as fs from 'fs'; -import * as path from 'path'; import { RequestJsonLoggerInterface } from './request-json-logger-interface'; export class RequestJsonFileLogger implements RequestJsonLoggerInterface { @@ -11,11 +10,9 @@ export class RequestJsonFileLogger implements RequestJsonLoggerInterface { response: unknown, additional?: Record, ) { - const fileName = path.join( - process.cwd(), - this.loggingDirectory, - `${label}-${Date.now()}.json`, - ); + const fileName = `${process.cwd()}${ + this.loggingDirectory ? `/${this.loggingDirectory}` : '' + }/${label}-${Date.now()}.json`; return fs.promises.writeFile( fileName, diff --git a/src/misc/request-json-logger-interface.ts b/voucherify-service/src/misc/request-json-logger-interface.ts similarity index 100% rename from src/misc/request-json-logger-interface.ts rename to voucherify-service/src/misc/request-json-logger-interface.ts diff --git a/src/misc/sleep.ts b/voucherify-service/src/misc/sleep.ts similarity index 100% rename from src/misc/sleep.ts rename to voucherify-service/src/misc/sleep.ts diff --git a/src/voucherify/voucherify-connector.service.ts b/voucherify-service/src/voucherify/voucherify-connector.service.ts similarity index 89% rename from src/voucherify/voucherify-connector.service.ts rename to voucherify-service/src/voucherify/voucherify-connector.service.ts index c31f6780..b3bedc47 100644 --- a/src/voucherify/voucherify-connector.service.ts +++ b/voucherify-service/src/voucherify/voucherify-connector.service.ts @@ -5,6 +5,8 @@ import { RedemptionsRedeemStackableParams, ValidationsValidateStackableParams, VoucherifyServerSide, + ValidationValidateStackableResponse, + StackableRedeemableResponse, } from '@voucherify/sdk'; import { ConfigService } from '@nestjs/config'; import { @@ -32,12 +34,14 @@ export class VoucherifyConnectorService { ); private readonly apiUrl: string = this.configService.get('VOUCHERIFY_API_URL'); + getClient(): ReturnType { const start = performance.now(); const voucherify = VoucherifyServerSide({ applicationId: this.applicationId, secretKey: this.secretKey, apiUrl: this.apiUrl, + channel: `Commercetools integration-v${process.env.npm_package_version}`, }); const end = performance.now(); this.logger.debug(`V% getClient creation: ${end - start}ms`); @@ -45,7 +49,14 @@ export class VoucherifyConnectorService { return voucherify; } - async validateStackableVouchers(request: ValidationsValidateStackableParams) { + async validateStackableVouchers( + request: ValidationsValidateStackableParams, + ): Promise< + ValidationValidateStackableResponse & { + // At the momement of the implementation, Voucherifyu SDK do not recognize Partial Redeem API. + inapplicable_redeemables?: StackableRedeemableResponse[]; + } + > { const start = performance.now(); const response = await this.getClient().validations.validateStackable( request, @@ -100,7 +111,6 @@ export class VoucherifyConnectorService { elapsedTime: elapsedTime(start, end), }, ); - return response; } diff --git a/src/voucherify/voucherify.service.ts b/voucherify-service/src/voucherify/voucherify.service.ts similarity index 98% rename from src/voucherify/voucherify.service.ts rename to voucherify-service/src/voucherify/voucherify.service.ts index bf53aca7..f5af2d37 100644 --- a/src/voucherify/voucherify.service.ts +++ b/voucherify-service/src/voucherify/voucherify.service.ts @@ -61,9 +61,9 @@ export class VoucherifyService { return redeemable; }); - return (redeemables = [ + return [ ...redeemables.filter((element) => element.object !== 'promotion_tier'), ...promotionTiersWithBanner, - ]); + ]; } } diff --git a/voucherify-service/test/__mocks__/commerce-tools-connector.service.ts b/voucherify-service/test/__mocks__/commerce-tools-connector.service.ts new file mode 100644 index 00000000..8a6c73de --- /dev/null +++ b/voucherify-service/test/__mocks__/commerce-tools-connector.service.ts @@ -0,0 +1,511 @@ +import { CommercetoolsConnectorService } from '../../src/commercetools/commercetools-connector.service'; +import { ConfigService } from '@nestjs/config'; + +export const getCommerceToolsConnectorServiceMockWithEmptyProductResponse = + () => { + const commerceToolsConnectoService = jest.createMockFromModule( + '../../src/commercetools/commercetools-connector.service', + ) as CommercetoolsConnectorService & { getProductMock: jest.Mock }; + const products: any = { + body: { + results: [], + }, + }; + + commerceToolsConnectoService.getProductMock = jest + .fn() + .mockReturnValue(products); + + commerceToolsConnectoService.getClient = jest.fn().mockReturnValue({ + products: jest.fn().mockReturnValue({ + get: jest.fn().mockReturnValue({ + execute: commerceToolsConnectoService.getProductMock, + }), + }), + }); + + return commerceToolsConnectoService; + }; + +type Product = { + sku: string; + price: number; + id: string; +}; +export const getCommerceToolsConnectorServiceMockWithProductResponse = ( + product: Product, +) => { + const commerceToolsConnectorService = jest.createMockFromModule( + '../../src/commercetools/commercetools-connector.service', + ) as CommercetoolsConnectorService; + + const products: any = { + body: { + results: [ + { + id: product.id, + masterData: { + current: { + variants: [ + { + sku: product.sku, + prices: [ + { + value: { + centAmount: product.price, + currencyCode: 'EUR', + }, + }, + ], + }, + ], + }, + }, + }, + ], + }, + }; + + const getTaxCategories = jest.fn().mockReturnValue({ + statusCode: 200, + body: { + limit: 20, + offset: 0, + count: 1, + total: 1, + results: [ + { + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + version: 5, + versionModifiedAt: '2023-05-31T16:04:06.867Z', + createdAt: '2023-05-31T16:04:06.656Z', + lastModifiedAt: '2023-05-31T16:04:06.867Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + name: 'coupon', + rates: [ + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'DE', + id: '3SF4_HMk', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'AT', + id: 'lRz7jEYP', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'US', + id: 'Uw-uqD9r', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'NL', + id: 'StiKGNhA', + subRates: [], + }, + ], + }, + ], + }, + }); + const getClientResponse = { + body: { + key: 'ct-voucherify-piotr', + name: 'ct-voucherify-piotr', + countries: ['DE', 'AT', 'US', 'NL'], + currencies: ['EUR', 'USD'], + languages: ['en', 'de'], + createdAt: '2023-05-31T15:50:11.972Z', + createdBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + lastModifiedAt: '2023-06-01T13:49:43.819Z', + lastModifiedBy: { isPlatformClient: true }, + trialUntil: '2023-07', + messages: { enabled: false, deleteDaysAfterCreation: 15 }, + carts: { + deleteDaysAfterLastModification: 90, + allowAddingUnpublishedProducts: false, + countryTaxRateFallbackEnabled: false, + }, + shoppingLists: { deleteDaysAfterLastModification: 360 }, + version: 9, + searchIndexing: { + products: { + status: 'Activated', + lastModifiedAt: '2023-05-31T16:05:30.570Z', + lastModifiedBy: { isPlatformClient: true }, + }, + orders: { + status: 'Activated', + lastModifiedAt: '2023-06-01T13:49:43.817Z', + lastModifiedBy: { isPlatformClient: true }, + }, + }, + }, + statusCode: 200, + }; + const get = jest.fn().mockReturnValue({ execute: getTaxCategories }); + const taxCategories = jest.fn().mockReturnValue({ get }); + commerceToolsConnectorService.getClient = jest.fn().mockReturnValue({ + products: jest.fn().mockReturnValue({ + get: jest.fn().mockReturnValue({ + execute: jest.fn().mockReturnValue(products), + }), + }), + taxCategories, + get: jest.fn().mockReturnValue({ + execute: jest.fn().mockReturnValue(getClientResponse), + }), + }); + + return commerceToolsConnectorService; +}; + +export const getCommerceToolsConnectorServiceMockWithCouponTypes = () => { + const commerceToolsConnectoService = jest.createMockFromModule( + '../../src/commercetools/commercetools-connector.service', + ) as CommercetoolsConnectorService; + + const get = (payload) => { + if (payload?.queryArgs?.where === 'key="couponCodes"') { + return { + execute: jest.fn().mockReturnValue({ + body: { + limit: 20, + offset: 0, + count: 1, + total: 1, + results: [ + { + id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01', + version: 1, + versionModifiedAt: '2023-05-31T16:04:06.194Z', + createdAt: '2023-05-31T16:04:06.194Z', + lastModifiedAt: '2023-05-31T16:04:06.194Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + key: 'couponCodes', + name: { en: 'couponCodes' }, + description: { en: 'couponCodes' }, + resourceTypeIds: ['order'], + fieldDefinitions: [ + { + name: 'discount_codes', + label: { en: 'discount_codes' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'used_codes', + label: { en: 'used_codes' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'session', + label: { en: 'session' }, + required: false, + type: { name: 'String' }, + inputHint: 'SingleLine', + }, + { + name: 'shippingProductSourceIds', + label: { en: 'shippingProductSourceIds' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'isValidationFailed', + label: { en: 'isValidationFailed' }, + required: false, + type: { name: 'Boolean' }, + inputHint: 'SingleLine', + }, + { + name: 'couponsLimit', + label: { en: 'couponsLimit' }, + required: false, + type: { name: 'Number' }, + inputHint: 'SingleLine', + }, + ], + }, + ], + }, + statusCode: 200, + }), + }; + } + return { + execute: jest.fn().mockReturnValue({ + body: { + limit: 20, + offset: 0, + count: 1, + total: 1, + results: [ + { + id: '69840f60-bd39-4958-b3fc-85bf6c492791', + version: 1, + versionModifiedAt: '2023-05-31T16:04:06.433Z', + createdAt: '2023-05-31T16:04:06.433Z', + lastModifiedAt: '2023-05-31T16:04:06.433Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + key: 'lineItemCodesType', + name: { en: 'lineItemCodesType' }, + description: { en: 'lineItemCodesType' }, + resourceTypeIds: ['line-item'], + fieldDefinitions: [ + { + name: 'applied_codes', + label: { en: 'applied_codes' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'coupon_fixed_price', + label: { en: 'coupon_fixed_price' }, + required: false, + type: { name: 'Number' }, + inputHint: 'SingleLine', + }, + ], + }, + ], + }, + statusCode: 200, + }), + }; + }; + + commerceToolsConnectoService.getClient = jest.fn().mockReturnValue({ + types: jest.fn().mockReturnValue({ + get, + }), + }); + + return commerceToolsConnectoService; +}; + +export const getCommerceToolsConnectorServiceMockForAPIExtensionServiceTest = + () => { + const commerceToolsConnectoService = jest.createMockFromModule( + '../../src/commercetools/commercetools-connector.service', + ) as CommercetoolsConnectorService; + + const get = (payload) => { + if (payload?.queryArgs?.where === 'key="couponCodes"') { + return { + execute: jest.fn().mockReturnValue({ + body: { + limit: 20, + offset: 0, + count: 1, + total: 1, + results: [ + { + id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01', + version: 1, + versionModifiedAt: '2023-05-31T16:04:06.194Z', + createdAt: '2023-05-31T16:04:06.194Z', + lastModifiedAt: '2023-05-31T16:04:06.194Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + key: 'couponCodes', + name: { en: 'couponCodes' }, + description: { en: 'couponCodes' }, + resourceTypeIds: ['order'], + fieldDefinitions: [ + { + name: 'discount_codes', + label: { en: 'discount_codes' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'used_codes', + label: { en: 'used_codes' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'session', + label: { en: 'session' }, + required: false, + type: { name: 'String' }, + inputHint: 'SingleLine', + }, + { + name: 'shippingProductSourceIds', + label: { en: 'shippingProductSourceIds' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'isValidationFailed', + label: { en: 'isValidationFailed' }, + required: false, + type: { name: 'Boolean' }, + inputHint: 'SingleLine', + }, + { + name: 'couponsLimit', + label: { en: 'couponsLimit' }, + required: false, + type: { name: 'Number' }, + inputHint: 'SingleLine', + }, + ], + }, + ], + }, + statusCode: 200, + }), + }; + } + return { + execute: jest.fn().mockReturnValue({ + body: { + limit: 20, + offset: 0, + count: 1, + total: 1, + results: [ + { + id: '69840f60-bd39-4958-b3fc-85bf6c492791', + version: 1, + versionModifiedAt: '2023-05-31T16:04:06.433Z', + createdAt: '2023-05-31T16:04:06.433Z', + lastModifiedAt: '2023-05-31T16:04:06.433Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + key: 'lineItemCodesType', + name: { en: 'lineItemCodesType' }, + description: { en: 'lineItemCodesType' }, + resourceTypeIds: ['line-item'], + fieldDefinitions: [ + { + name: 'applied_codes', + label: { en: 'applied_codes' }, + required: false, + type: { name: 'Set', elementType: { name: 'String' } }, + inputHint: 'SingleLine', + }, + { + name: 'coupon_fixed_price', + label: { en: 'coupon_fixed_price' }, + required: false, + type: { name: 'Number' }, + inputHint: 'SingleLine', + }, + ], + }, + ], + }, + statusCode: 200, + }), + }; + }; + + const extensions = jest.fn().mockReturnValue({ + get: jest.fn().mockReturnValue({ + execute: jest.fn().mockReturnValue({ body: { results: [] } }), + }), + withId: jest.fn().mockReturnValue({ + delete: jest + .fn() + .mockReturnValue({ execute: jest.fn().mockResolvedValue({}) }), + }), + post: jest.fn().mockReturnValue({ + execute: jest.fn().mockReturnValue({ body: { id: undefined } }), + }), + }); + + commerceToolsConnectoService.getClient = jest.fn().mockReturnValue({ + extensions, + types: jest.fn().mockReturnValue({ + get, + }), + }); + + return commerceToolsConnectoService; + }; + +export const getCommerceToolsConnectorServiceMockForCommerceToolsServiceTest = ( + cart, +) => { + const commerceToolsConnectoService = jest.createMockFromModule( + '../../src/commercetools/commercetools-connector.service', + ) as CommercetoolsConnectorService; + + commerceToolsConnectoService.findCart = jest.fn().mockResolvedValue(cart); + commerceToolsConnectoService.getClient = jest.fn().mockReturnValue({}); + + return commerceToolsConnectoService; +}; + +export const getConfigForAPIExtensionServiceTest = () => { + const configService = + jest.createMockFromModule('@nestjs/config'); + configService.get = jest.fn((key) => { + if (key === 'COMMERCE_TOOLS_API_EXTENSION_KEY') { + return '12345'; + } + return null; + }); + + return configService; +}; diff --git a/voucherify-service/test/__mocks__/commercetools.service.ts b/voucherify-service/test/__mocks__/commercetools.service.ts new file mode 100644 index 00000000..73d3e23f --- /dev/null +++ b/voucherify-service/test/__mocks__/commercetools.service.ts @@ -0,0 +1,19 @@ +import { CommercetoolsService } from '../../src/commercetools/commercetools.service'; + +export const getCommerceToolsServiceMockWithMockedResponse = ( + response?: any, +) => { + const commerceToolsConnectoService = jest.createMockFromModule( + '../../src/commercetools/commercetools.service', + ) as CommercetoolsService & { getProductMock: jest.Mock }; + + commerceToolsConnectoService.handleCartUpdate = jest + .fn() + .mockReturnValue(response); + + commerceToolsConnectoService.checkIfCartStatusIsPaidAndRedeem = jest + .fn() + .mockReturnValue(response); + + return commerceToolsConnectoService; +}; diff --git a/src/integration/__tests__/__mocks__/config-service.service.ts b/voucherify-service/test/__mocks__/config-service.service.ts similarity index 100% rename from src/integration/__tests__/__mocks__/config-service.service.ts rename to voucherify-service/test/__mocks__/config-service.service.ts diff --git a/src/commercetools/tax-categories/__mocks__/tax-categories.service.ts b/voucherify-service/test/__mocks__/tax-categories.service.ts similarity index 87% rename from src/commercetools/tax-categories/__mocks__/tax-categories.service.ts rename to voucherify-service/test/__mocks__/tax-categories.service.ts index 973494f9..25aa4c6f 100644 --- a/src/commercetools/tax-categories/__mocks__/tax-categories.service.ts +++ b/voucherify-service/test/__mocks__/tax-categories.service.ts @@ -1,5 +1,5 @@ import { TaxCategory } from '@commercetools/platform-sdk'; -import { TaxCategoriesService } from '../tax-categories.service'; +import { TaxCategoriesService } from '../../src/commercetools/tax-categories/tax-categories.service'; const taxRateForCountry = (country) => ({ name: 'coupon', @@ -62,7 +62,7 @@ export const defaultGetCouponTaxCategoryResponse = { export const getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse = () => { const taxCategoriesService = jest.createMockFromModule( - '../tax-categories.service', + '../../src/commercetools/tax-categories/tax-categories.service', ) as TaxCategoriesService; taxCategoriesService.getCouponTaxCategoryAndUpdateItIfNeeded = jest @@ -77,7 +77,7 @@ export const getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse = export const getTaxCategoryServiceMockWithNotDefinedTaxCategoryResponse = () => { const taxCategoriesService = jest.createMockFromModule( - '../tax-categories.service', + '../../src/commercetools/tax-categories/tax-categories.service', ) as TaxCategoriesService; taxCategoriesService.addCountryToCouponTaxCategory = jest.fn(); diff --git a/src/commercetools/custom-types/__mocks__/types.service.ts b/voucherify-service/test/__mocks__/types.service.ts similarity index 89% rename from src/commercetools/custom-types/__mocks__/types.service.ts rename to voucherify-service/test/__mocks__/types.service.ts index f2017e8b..eee6afcb 100644 --- a/src/commercetools/custom-types/__mocks__/types.service.ts +++ b/voucherify-service/test/__mocks__/types.service.ts @@ -1,5 +1,5 @@ import { Type } from '@commercetools/platform-sdk'; -import { CustomTypesService } from '../custom-types.service'; +import { CustomTypesService } from '../../src/commercetools/custom-types/custom-types.service'; export const defaultTypeId = '5aa76235-9d61-41c7-9d57-278b2bcc2f75'; @@ -73,7 +73,7 @@ const defaultGetTypeResponse = { export const getTypesServiceMockWithConfiguredCouponTypeResponse = () => { const typesService = jest.createMockFromModule( - '../custom-types.service', + '../../src/commercetools/custom-types/custom-types.service', ) as CustomTypesService; typesService.findCouponType = jest @@ -85,7 +85,7 @@ export const getTypesServiceMockWithConfiguredCouponTypeResponse = () => { export const getTypesServiceMockWithNotDefinedCouponTypeResponse = () => { const typesService = jest.createMockFromModule( - '../custom-types.service', + '../../src/commercetools/custom-types/custom-types.service', ) as CustomTypesService; typesService.findCouponType = jest.fn().mockResolvedValue(null); diff --git a/src/voucherify/__mocks__/voucherify-connector.service.ts b/voucherify-service/test/__mocks__/voucherify-connector.service.ts similarity index 78% rename from src/voucherify/__mocks__/voucherify-connector.service.ts rename to voucherify-service/test/__mocks__/voucherify-connector.service.ts index 6597876d..414a17ba 100644 --- a/src/voucherify/__mocks__/voucherify-connector.service.ts +++ b/voucherify-service/test/__mocks__/voucherify-connector.service.ts @@ -1,11 +1,11 @@ -import { VoucherifyConnectorService } from '../voucherify-connector.service'; +import { VoucherifyConnectorService } from '../../src/voucherify/voucherify-connector.service'; export const getVoucherifyConnectorServiceMockWithDefinedResponse = ( response: any, promotions: any[] = [], ) => { const voucherifyConnectorService = jest.createMockFromModule( - '../voucherify-connector.service', + '../../src/voucherify/voucherify-connector.service', ) as VoucherifyConnectorService; voucherifyConnectorService.releaseValidationSession = jest diff --git a/src/integration/__tests__/README.md b/voucherify-service/test/__tests__/README.md similarity index 100% rename from src/integration/__tests__/README.md rename to voucherify-service/test/__tests__/README.md diff --git a/src/integration/__tests__/addAmountCouponAfterPercentageCoupon/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/add-amount-coupon-after-percentage-coupon/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/addAmountCouponAfterPercentageCoupon/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/add-amount-coupon-after-percentage-coupon/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/addAmountCouponAfterPercentageCoupon/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/add-amount-coupon-after-percentage-coupon/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/addAmountCouponAfterPercentageCoupon/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/add-amount-coupon-after-percentage-coupon/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/addAmountCouponAfterPercentageCoupon/test.spec.ts b/voucherify-service/test/__tests__/add-amount-coupon-after-percentage-coupon/test.spec.ts similarity index 89% rename from src/integration/__tests__/addAmountCouponAfterPercentageCoupon/test.spec.ts rename to voucherify-service/test/__tests__/add-amount-coupon-after-percentage-coupon/test.spec.ts index 16cd9474..4f675ef9 100644 --- a/src/integration/__tests__/addAmountCouponAfterPercentageCoupon/test.spec.ts +++ b/voucherify-service/test/__tests__/add-amount-coupon-after-percentage-coupon/test.spec.ts @@ -1,15 +1,15 @@ import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, defaultGetCouponTaxCategoryResponse, -} from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +} from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('When another -20€ amount voucher is provided after -10% coupon in one session', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/addFreeProductWhenProductAlreadyInCart/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/add-free-product-when-product-already-in-cart/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/addFreeProductWhenProductAlreadyInCart/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/add-free-product-when-product-already-in-cart/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/addFreeProductWhenProductAlreadyInCart/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/add-free-product-when-product-already-in-cart/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/addFreeProductWhenProductAlreadyInCart/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/add-free-product-when-product-already-in-cart/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/addFreeProductWhenProductAlreadyInCart/test.spec.ts b/voucherify-service/test/__tests__/add-free-product-when-product-already-in-cart/test.spec.ts similarity index 90% rename from src/integration/__tests__/addFreeProductWhenProductAlreadyInCart/test.spec.ts rename to voucherify-service/test/__tests__/add-free-product-when-product-already-in-cart/test.spec.ts index f4baa2fb..c49a874f 100644 --- a/src/integration/__tests__/addFreeProductWhenProductAlreadyInCart/test.spec.ts +++ b/voucherify-service/test/__tests__/add-free-product-when-product-already-in-cart/test.spec.ts @@ -1,15 +1,15 @@ import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, defaultGetCouponTaxCategoryResponse, -} from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +} from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('when adding new product to the cart with free product already applied (via coupon)', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/addFreeProduct/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/add-free-product-with-direct-discount/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/addFreeProduct/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/add-free-product-with-direct-discount/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/addFreeProduct/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/add-free-product-with-direct-discount/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/addFreeProduct/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/add-free-product-with-direct-discount/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/addFreeProductWithDirectDiscount/test.spec.ts b/voucherify-service/test/__tests__/add-free-product-with-direct-discount/test.spec.ts similarity index 90% rename from src/integration/__tests__/addFreeProductWithDirectDiscount/test.spec.ts rename to voucherify-service/test/__tests__/add-free-product-with-direct-discount/test.spec.ts index 4f28e41d..981dfbb7 100644 --- a/src/integration/__tests__/addFreeProductWithDirectDiscount/test.spec.ts +++ b/voucherify-service/test/__tests__/add-free-product-with-direct-discount/test.spec.ts @@ -1,14 +1,14 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { getConfigServiceMockWithConfiguredDirectDiscount } from '../__mocks__/config-service.service'; +import { getConfigServiceMockWithConfiguredDirectDiscount } from '../../__mocks__/config-service.service'; import { ConfigService } from '@nestjs/config'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('when applying discount code which adds free product to the cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/addFreeProductWithDirectDiscount/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/add-free-product/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/addFreeProductWithDirectDiscount/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/add-free-product/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/addFreeProductWithDirectDiscount/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/add-free-product/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/addFreeProductWithDirectDiscount/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/add-free-product/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/addFreeProduct/test.spec.ts b/voucherify-service/test/__tests__/add-free-product/test.spec.ts similarity index 91% rename from src/integration/__tests__/addFreeProduct/test.spec.ts rename to voucherify-service/test/__tests__/add-free-product/test.spec.ts index f8d4261b..32de5679 100644 --- a/src/integration/__tests__/addFreeProduct/test.spec.ts +++ b/voucherify-service/test/__tests__/add-free-product/test.spec.ts @@ -1,15 +1,15 @@ import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, defaultGetCouponTaxCategoryResponse, -} from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +} from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('when applying discount code which adds free product to the cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/addMissingItems/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/add-missing-items/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/addMissingItems/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/add-missing-items/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/addMissingItems/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/add-missing-items/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/addMissingItems/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/add-missing-items/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/addMissingItems/test.spec.ts b/voucherify-service/test/__tests__/add-missing-items/test.spec.ts similarity index 92% rename from src/integration/__tests__/addMissingItems/test.spec.ts rename to voucherify-service/test/__tests__/add-missing-items/test.spec.ts index 77b433e8..4566a844 100644 --- a/src/integration/__tests__/addMissingItems/test.spec.ts +++ b/voucherify-service/test/__tests__/add-missing-items/test.spec.ts @@ -1,15 +1,15 @@ import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, defaultGetCouponTaxCategoryResponse, -} from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +} from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('when applying coupon code for a free product with `ADD_MISSING_ITEMS` effect and having that product already in cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/cart-service.factory.ts b/voucherify-service/test/__tests__/cart-service.factory.ts similarity index 54% rename from src/integration/__tests__/cart-service.factory.ts rename to voucherify-service/test/__tests__/cart-service.factory.ts index 88235fce..206ace2d 100644 --- a/src/integration/__tests__/cart-service.factory.ts +++ b/voucherify-service/test/__tests__/cart-service.factory.ts @@ -1,14 +1,14 @@ import { Test } from '@nestjs/testing'; -import { IntegrationService } from '../integration.service'; -import { CustomTypesService } from '../../commercetools/custom-types/custom-types.service'; -import { TaxCategoriesService } from '../../commercetools/tax-categories/tax-categories.service'; -import { VoucherifyConnectorService } from '../../voucherify/voucherify-connector.service'; -import { CommercetoolsConnectorService } from '../../commercetools/commercetools-connector.service'; +import { IntegrationService } from '../../src/integration/integration.service'; +import { CustomTypesService } from '../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../src/commercetools/tax-categories/tax-categories.service'; +import { VoucherifyConnectorService } from '../../src/voucherify/voucherify-connector.service'; +import { CommercetoolsConnectorService } from '../../src/commercetools/commercetools-connector.service'; import { ConfigService } from '@nestjs/config'; import { ModuleMocker, MockFunctionMetadata } from 'jest-mock'; -import { CommercetoolsService } from '../../commercetools/commercetools.service'; -import { VoucherifyService } from '../../voucherify/voucherify.service'; +import { CommercetoolsService } from '../../src/commercetools/commercetools.service'; +import { VoucherifyService } from '../../src/voucherify/voucherify.service'; const moduleMocker = new ModuleMocker(global); @@ -27,33 +27,38 @@ export async function buildCartServiceWithMockedDependencies({ commerceToolsConnectorService, configService, }: BuildCartServiceWithMockedDependenciesProps) { + const baseProviders = [ + CommercetoolsService, + VoucherifyService, + IntegrationService, + { + provide: TaxCategoriesService, + useValue: taxCategoriesService, + }, + { + provide: CustomTypesService, + useValue: typesService, + }, + { + provide: VoucherifyConnectorService, + useValue: voucherifyConnectorService || {}, + }, + { + provide: CommercetoolsConnectorService, + useValue: commerceToolsConnectorService || {}, + }, + ]; const module = await Test.createTestingModule({ controllers: [], - providers: [ - CommercetoolsService, - VoucherifyService, - IntegrationService, - { - provide: TaxCategoriesService, - useValue: taxCategoriesService, - }, - { - provide: CustomTypesService, - useValue: typesService, - }, - { - provide: VoucherifyConnectorService, - useValue: voucherifyConnectorService || {}, - }, - { - provide: CommercetoolsConnectorService, - useValue: commerceToolsConnectorService || {}, - }, - { - provide: ConfigService, - useValue: configService, - }, - ], + providers: configService + ? [ + ...baseProviders, + { + provide: ConfigService, + useValue: configService, + }, + ] + : [...baseProviders, ConfigService], }) .useMocker((token) => { if (typeof token === 'function') { diff --git a/src/integration/__tests__/customTypes/test.spec.ts b/voucherify-service/test/__tests__/custom-types/test.spec.ts similarity index 91% rename from src/integration/__tests__/customTypes/test.spec.ts rename to voucherify-service/test/__tests__/custom-types/test.spec.ts index c274634e..ae769b7e 100644 --- a/src/integration/__tests__/customTypes/test.spec.ts +++ b/voucherify-service/test/__tests__/custom-types/test.spec.ts @@ -1,8 +1,8 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../__mocks__/tax-categories.service'; import { getTypesServiceMockWithConfiguredCouponTypeResponse, getTypesServiceMockWithNotDefinedCouponTypeResponse, -} from '../../../commercetools/custom-types/__mocks__/types.service'; +} from '../../__mocks__/types.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; describe('Cart custom custom-types', () => { it('Should add custom coupon type for initialized cart', async () => { diff --git a/src/integration/__tests__/discountForSpecificProduct/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/discount-for-specific-product/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/discountForSpecificProduct/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/discount-for-specific-product/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/discountForSpecificProduct/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/discount-for-specific-product/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/discountForSpecificProduct/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/discount-for-specific-product/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/discountForSpecificProduct/test.spec.ts b/voucherify-service/test/__tests__/discount-for-specific-product/test.spec.ts similarity index 89% rename from src/integration/__tests__/discountForSpecificProduct/test.spec.ts rename to voucherify-service/test/__tests__/discount-for-specific-product/test.spec.ts index 64c8c426..7c0a90e8 100644 --- a/src/integration/__tests__/discountForSpecificProduct/test.spec.ts +++ b/voucherify-service/test/__tests__/discount-for-specific-product/test.spec.ts @@ -1,15 +1,15 @@ import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, defaultGetCouponTaxCategoryResponse, -} from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +} from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('when applying discount code on a specific product in the cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/inexistentCoupon/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/inexistent-coupon/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/inexistentCoupon/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/inexistent-coupon/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/inexistentCoupon/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/inexistent-coupon/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/inexistentCoupon/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/inexistent-coupon/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/inexistentCoupon/test.spec.ts b/voucherify-service/test/__tests__/inexistent-coupon/test.spec.ts similarity index 86% rename from src/integration/__tests__/inexistentCoupon/test.spec.ts rename to voucherify-service/test/__tests__/inexistent-coupon/test.spec.ts index 4b2a6672..dbc7c172 100644 --- a/src/integration/__tests__/inexistentCoupon/test.spec.ts +++ b/voucherify-service/test/__tests__/inexistent-coupon/test.spec.ts @@ -1,13 +1,13 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('When trying to apply inexistent coupon code', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedOneUnitType/test.spec.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedOneUnitType/test.spec.ts similarity index 89% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedOneUnitType/test.spec.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedOneUnitType/test.spec.ts index d76c435b..985a7bd1 100644 --- a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedOneUnitType/test.spec.ts +++ b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedOneUnitType/test.spec.ts @@ -1,15 +1,15 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../../commerceTools/tax-categories/__mocks__/tax-categories.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../../commerceTools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../__mocks__/tax-categories.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { getConfigServiceMockWithConfiguredDirectDiscount } from '../../__mocks__/config-service.service'; +import { getConfigServiceMockWithConfiguredDirectDiscount } from '../../../__mocks__/config-service.service'; import { ConfigService } from '@nestjs/config'; import { Cart } from '@commercetools/platform-sdk'; -import { CommercetoolsService } from '../../../../commercetools/commercetools.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../../commercetools/custom-types/__mocks__/types.service'; +import { CommercetoolsService } from '../../../../src/commercetools/commercetools.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../__mocks__/types.service'; +import { VoucherifyConnectorService } from '../../../../src/voucherify/voucherify-connector.service'; describe('when applying discount code which adds free product to the cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTenPercentCoupon/test.spec.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTenPercentCoupon/test.spec.ts similarity index 90% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTenPercentCoupon/test.spec.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTenPercentCoupon/test.spec.ts index 43e8cd93..6142d7ac 100644 --- a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTenPercentCoupon/test.spec.ts +++ b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTenPercentCoupon/test.spec.ts @@ -1,15 +1,15 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../../commerceTools/tax-categories/__mocks__/tax-categories.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../../commerceTools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../__mocks__/tax-categories.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { getConfigServiceMockWithConfiguredDirectDiscount } from '../../__mocks__/config-service.service'; +import { getConfigServiceMockWithConfiguredDirectDiscount } from '../../../__mocks__/config-service.service'; import { ConfigService } from '@nestjs/config'; import { Cart } from '@commercetools/platform-sdk'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../../commercetools/custom-types/__mocks__/types.service'; -import { CommercetoolsService } from '../../../../commercetools/commercetools.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../__mocks__/types.service'; +import { CommercetoolsService } from '../../../../src/commercetools/commercetools.service'; +import { VoucherifyConnectorService } from '../../../../src/voucherify/voucherify-connector.service'; describe('when applying discount code which adds free product to the cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTwoUnitType/test.spec.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTwoUnitType/test.spec.ts similarity index 90% rename from src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTwoUnitType/test.spec.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTwoUnitType/test.spec.ts index d1057cdd..4bd939a1 100644 --- a/src/integration/__tests__/multipleCouponsAppliedWithDirectDiscount/couponsWithAddedTwoUnitType/test.spec.ts +++ b/voucherify-service/test/__tests__/multiple-coupons-applied-with-direct-discount/couponsWithAddedTwoUnitType/test.spec.ts @@ -1,15 +1,15 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../../commerceTools/tax-categories/__mocks__/tax-categories.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../../commerceTools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../__mocks__/tax-categories.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { getConfigServiceMockWithConfiguredDirectDiscount } from '../../__mocks__/config-service.service'; +import { getConfigServiceMockWithConfiguredDirectDiscount } from '../../../__mocks__/config-service.service'; import { ConfigService } from '@nestjs/config'; import { Cart } from '@commercetools/platform-sdk'; -import { CommercetoolsService } from '../../../../commercetools/commercetools.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../../commercetools/custom-types/__mocks__/types.service'; +import { CommercetoolsService } from '../../../../src/commercetools/commercetools.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../__mocks__/types.service'; +import { VoucherifyConnectorService } from '../../../../src/voucherify/voucherify-connector.service'; describe('when applying discount code which adds free product to the cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedOneUnitType/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedOneUnitType/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedOneUnitType/test.spec.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedOneUnitType/test.spec.ts similarity index 87% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedOneUnitType/test.spec.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedOneUnitType/test.spec.ts index e17a4039..0ba99530 100644 --- a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedOneUnitType/test.spec.ts +++ b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedOneUnitType/test.spec.ts @@ -1,12 +1,12 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../../commerceTools/tax-categories/__mocks__/tax-categories.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../../commerceTools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../__mocks__/tax-categories.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsService } from '../../../../commercetools/commercetools.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../../commercetools/custom-types/__mocks__/types.service'; +import { CommercetoolsService } from '../../../../src/commercetools/commercetools.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../__mocks__/types.service'; +import { VoucherifyConnectorService } from '../../../../src/voucherify/voucherify-connector.service'; describe('when adding new product to the cart with free product already applied (via coupon)', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTenPercentCoupon/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTenPercentCoupon/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTenPercentCoupon/test.spec.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTenPercentCoupon/test.spec.ts similarity index 89% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTenPercentCoupon/test.spec.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTenPercentCoupon/test.spec.ts index 14e7e6d1..7564de70 100644 --- a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTenPercentCoupon/test.spec.ts +++ b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTenPercentCoupon/test.spec.ts @@ -1,15 +1,15 @@ import { defaultGetCouponTaxCategoryResponse, getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, -} from '../../../../commerceTools/tax-categories/__mocks__/tax-categories.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../../commerceTools/__mocks__/commerce-tools-connector.service'; +} from '../../../__mocks__/tax-categories.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsService } from '../../../../commercetools/commercetools.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../../commercetools/custom-types/__mocks__/types.service'; +import { CommercetoolsService } from '../../../../src/commercetools/commercetools.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../__mocks__/types.service'; +import { VoucherifyConnectorService } from '../../../../src/voucherify/voucherify-connector.service'; describe('when adding new product to the cart with free product already applied (via coupon)', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTwoUnitType/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTwoUnitType/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTwoUnitType/test.spec.ts b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTwoUnitType/test.spec.ts similarity index 90% rename from src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTwoUnitType/test.spec.ts rename to voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTwoUnitType/test.spec.ts index 73905fdb..75073f1f 100644 --- a/src/integration/__tests__/multipleCouponsAppliedWithLineItem/couponsWithAddedTwoUnitType/test.spec.ts +++ b/voucherify-service/test/__tests__/multiple-coupons-applied-with-line-item/couponsWithAddedTwoUnitType/test.spec.ts @@ -1,15 +1,15 @@ import { defaultGetCouponTaxCategoryResponse, getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, -} from '../../../../commerceTools/tax-categories/__mocks__/tax-categories.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../../commerceTools/__mocks__/commerce-tools-connector.service'; +} from '../../../__mocks__/tax-categories.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsService } from '../../../../commercetools/commercetools.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../../commercetools/custom-types/__mocks__/types.service'; +import { CommercetoolsService } from '../../../../src/commercetools/commercetools.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../__mocks__/types.service'; +import { VoucherifyConnectorService } from '../../../../src/voucherify/voucherify-connector.service'; describe('when adding new product to the cart with free product already applied (via coupon)', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/newAmountCouponInNewSession/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/new-amount-coupon-in-new-session/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/newAmountCouponInNewSession/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/new-amount-coupon-in-new-session/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/newAmountCouponInNewSession/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/new-amount-coupon-in-new-session/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/newAmountCouponInNewSession/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/new-amount-coupon-in-new-session/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/newAmountCouponInNewSession/test.spec.ts b/voucherify-service/test/__tests__/new-amount-coupon-in-new-session/test.spec.ts similarity index 88% rename from src/integration/__tests__/newAmountCouponInNewSession/test.spec.ts rename to voucherify-service/test/__tests__/new-amount-coupon-in-new-session/test.spec.ts index ad17904c..0f913d33 100644 --- a/src/integration/__tests__/newAmountCouponInNewSession/test.spec.ts +++ b/voucherify-service/test/__tests__/new-amount-coupon-in-new-session/test.spec.ts @@ -1,16 +1,16 @@ import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, defaultGetCouponTaxCategoryResponse, -} from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +} from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; -import { CommercetoolsConnectorService } from 'src/commercetools/commercetools-connector.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { CommercetoolsConnectorService } from '../../../src/commercetools/commercetools-connector.service'; describe('When one -20€ amount voucher is provided in new session', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/cart-with-custom-line-item.snapshot.ts b/voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/cart-with-custom-line-item.snapshot.ts similarity index 100% rename from src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/cart-with-custom-line-item.snapshot.ts rename to voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/cart-with-custom-line-item.snapshot.ts diff --git a/src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/cart-with-unknown-custom-line-item.snapshot.ts b/voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/cart-with-unknown-custom-line-item.snapshot.ts similarity index 100% rename from src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/cart-with-unknown-custom-line-item.snapshot.ts rename to voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/cart-with-unknown-custom-line-item.snapshot.ts diff --git a/src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/noCouponCodesNorPreviousSession/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/noCouponCodesNorPreviousSession/test.spec.ts b/voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/test.spec.ts similarity index 94% rename from src/integration/__tests__/noCouponCodesNorPreviousSession/test.spec.ts rename to voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/test.spec.ts index 8153fb4d..312076c8 100644 --- a/src/integration/__tests__/noCouponCodesNorPreviousSession/test.spec.ts +++ b/voucherify-service/test/__tests__/no-coupon-codes-nor-previous-session/test.spec.ts @@ -1,7 +1,7 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; diff --git a/src/integration/__tests__/oneTimeCoupoinUsedInAnotherSession/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/one-time-coupon-used-in-another-session/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/oneTimeCoupoinUsedInAnotherSession/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/one-time-coupon-used-in-another-session/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/oneTimeCoupoinUsedInAnotherSession/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/one-time-coupon-used-in-another-session/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/oneTimeCoupoinUsedInAnotherSession/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/one-time-coupon-used-in-another-session/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/oneTimeCoupoinUsedInAnotherSession/test.spec.ts b/voucherify-service/test/__tests__/one-time-coupon-used-in-another-session/test.spec.ts similarity index 85% rename from src/integration/__tests__/oneTimeCoupoinUsedInAnotherSession/test.spec.ts rename to voucherify-service/test/__tests__/one-time-coupon-used-in-another-session/test.spec.ts index f99bdf47..d77d4ed2 100644 --- a/src/integration/__tests__/oneTimeCoupoinUsedInAnotherSession/test.spec.ts +++ b/voucherify-service/test/__tests__/one-time-coupon-used-in-another-session/test.spec.ts @@ -1,12 +1,12 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('When one-time -20€ amount voucher is provided in another cart within another session', () => { let commercetoolsService: CommercetoolsService; diff --git a/src/integration/__tests__/customTypes/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/partial-redeem/snapshots/cart.snapshot.ts similarity index 87% rename from src/integration/__tests__/customTypes/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/partial-redeem/snapshots/cart.snapshot.ts index b2703c02..2cf00a9f 100644 --- a/src/integration/__tests__/customTypes/snapshots/cart.snapshot.ts +++ b/voucherify-service/test/__tests__/partial-redeem/snapshots/cart.snapshot.ts @@ -1,22 +1,24 @@ import { CartOrigin, CartState, + CustomFields, LineItem, RoundingMode, TaxCalculationMode, TaxMode, Cart, } from '@commercetools/platform-sdk'; + export const cart = { id: 'cart-id', type: 'Cart', createdAt: new Date().toISOString(), - version: 1, + version: 2, lastModifiedAt: new Date().toISOString(), country: 'DE', lineItems: [ { - id: 'line-item-id-1', + id: 'line-item-id-3', productId: 'product-id', name: { en: 'Some product' }, productType: { typeId: 'product-type', id: 'product-type-id' }, @@ -85,8 +87,8 @@ export const cart = { }, }, lineItemMode: 'Standard', - }, - ] as LineItem[], + } as LineItem, + ], customLineItems: [], totalPrice: { type: 'centPrecision', @@ -100,8 +102,15 @@ export const cart = { taxCalculationMode: {}, refusedGifts: [], origin: {}, - custom: { + custom: { type: { typeId: 'type', id: '5aa76235-9d61-41c7-9d57-278b2bcc2f75' }, - fields: {}, + fields: { + discount_codes: [ + '{"code":"PERC10","status":"APPLIED","value":2650}', + '{"code":"AMOUNT20","status":"NEW"}', + '{"code":"NOT-EXISTING","status":"NEW"}', + ], + session: 'existing-session-id', + }, }, } as Cart; diff --git a/voucherify-service/test/__tests__/partial-redeem/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/partial-redeem/snapshots/voucherifyResponse.snapshot.ts new file mode 100644 index 00000000..0f6100c7 --- /dev/null +++ b/voucherify-service/test/__tests__/partial-redeem/snapshots/voucherifyResponse.snapshot.ts @@ -0,0 +1,136 @@ +export const voucherifyResponse = { + valid: true, + redeemables: [ + { + order: { + id: 'e66e763f-589a-4cb8-b478-7bac59f75814', + source_id: 'cart-id', + created_at: '2022-07-07T11:26:37.521Z', + amount: 26500, + discount_amount: 2650, + total_discount_amount: 2650, + initial_amount: 26500, + applied_discount_amount: 2650, + total_applied_discount_amount: 2650, + items: [ + { + sku_id: 'product-sku1', + product_id: 'product-id', + related_object: 'product', + quantity: 1, + price: 26500, + amount: 26500, + object: 'order_item', + }, + ], + metadata: {}, + object: 'order', + items_discount_amount: 0, + items_applied_discount_amount: 0, + }, + applicable_to: { data: [], total: 0, object: 'list' }, + inapplicable_to: { data: [], total: 0, object: 'list' }, + metadata: {}, + id: 'PERC10', + status: 'APPLICABLE', + object: 'voucher', + result: { + discount: { + type: 'PERCENT', + effect: 'APPLY_TO_ORDER', + percent_off: 10, + }, + }, + }, + { + order: { + id: 'e66e763f-589a-4cb8-b478-7bac59f75814', + source_id: 'cart-id', + created_at: '2022-07-07T11:26:37.521Z', + amount: 26500, + discount_amount: 4650, + total_discount_amount: 4650, + initial_amount: 26500, + applied_discount_amount: 2000, + total_applied_discount_amount: 4650, + items: [ + { + sku_id: 'product-sku1', + product_id: 'product-id', + related_object: 'product', + quantity: 1, + price: 26500, + amount: 26500, + object: 'order_item', + }, + ], + metadata: {}, + object: 'order', + items_discount_amount: 0, + items_applied_discount_amount: 0, + }, + applicable_to: { data: [], total: 0, object: 'list' }, + inapplicable_to: { data: [], total: 0, object: 'list' }, + metadata: {}, + id: 'AMOUNT20', + status: 'APPLICABLE', + object: 'voucher', + result: { + discount: { + type: 'AMOUNT', + effect: 'APPLY_TO_ORDER', + amount_off: 2000, + }, + }, + }, + ], + inapplicable_redeemables: [ + { + status: 'INAPPLICABLE', + id: 'NOT-EXISTING', + object: 'voucher', + result: { + error: { + code: 404, + key: 'not_found', + message: 'Resource not found', + details: 'Cannot find voucher with id NOT-EXISTING', + request_id: 'v-123123123123', + }, + }, + }, + ], + order: { + id: 'e66e763f-589a-4cb8-b478-7bac59f75814', + source_id: 'cart-id', + created_at: '2022-07-07T11:26:37.521Z', + amount: 26500, + discount_amount: 4650, + total_discount_amount: 4650, + initial_amount: 26500, + applied_discount_amount: 4650, + total_applied_discount_amount: 4650, + items: [ + { + sku_id: 'product-sku1', + product_id: 'product-id', + related_object: 'product', + quantity: 1, + price: 26500, + amount: 26500, + object: 'order_item', + }, + ], + metadata: {}, + object: 'order', + items_discount_amount: 0, + items_applied_discount_amount: 0, + }, + tracking_id: 'track_zTa+v4d+mc0ixHNURqEvtCLxvdT5orvdtWeqzafQxfA5XDblMYxS/w==', + session: { + key: 'existing-session-id', + type: 'LOCK', + ttl: 7, + ttl_unit: 'DAYS', + }, +}; diff --git a/voucherify-service/test/__tests__/partial-redeem/test.spec.ts b/voucherify-service/test/__tests__/partial-redeem/test.spec.ts new file mode 100644 index 00000000..c666a5e6 --- /dev/null +++ b/voucherify-service/test/__tests__/partial-redeem/test.spec.ts @@ -0,0 +1,58 @@ +import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; +import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; +import { cart } from './snapshots/cart.snapshot'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../__mocks__/tax-categories.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; + +describe('When partial redeem is enabled and trying to apply inexistent coupon code', () => { + let commercetoolsService: CommercetoolsService; + let voucherifyConnectorService: VoucherifyConnectorService; + + beforeEach(async () => { + const typesService = getTypesServiceMockWithConfiguredCouponTypeResponse(); + const taxCategoriesService = + getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse(); + voucherifyConnectorService = + getVoucherifyConnectorServiceMockWithDefinedResponse(voucherifyResponse); + const commerceToolsConnectorService = + getCommerceToolsConnectorServiceMockWithEmptyProductResponse(); + + ({ commercetoolsService } = await buildCartServiceWithMockedDependencies({ + typesService, + taxCategoriesService, + voucherifyConnectorService, + commerceToolsConnectorService, + })); + }); + + it('should call voucherify exactly once', async () => { + await commercetoolsService.handleCartUpdate(cart); + + expect( + voucherifyConnectorService.validateStackableVouchers, + ).toBeCalledTimes(1); + }); + + it('Should return only one `setCustomField` action with information about failure', async () => { + const result = await commercetoolsService.handleCartUpdate(cart); + expect( + result.actions.find( + (actionItem) => + actionItem.action === 'setCustomField' && + actionItem.name === 'discount_codes', + ), + ).toEqual({ + action: 'setCustomField', + name: 'discount_codes', + value: [ + '{"code":"PERC10","status":"APPLIED","type":"voucher","value":2650}', + '{"code":"AMOUNT20","status":"APPLIED","type":"voucher","value":2000}', + '{"code":"NOT-EXISTING","status":"NOT_APPLIED","errMsg":"Resource not found"}', + ], + }); + }); +}); diff --git a/src/integration/__tests__/promotions/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/promotions/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/promotions/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/promotions/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/promotions/snapshots/voucherify-promotions.snapshot.ts b/voucherify-service/test/__tests__/promotions/snapshots/voucherify-promotions.snapshot.ts similarity index 100% rename from src/integration/__tests__/promotions/snapshots/voucherify-promotions.snapshot.ts rename to voucherify-service/test/__tests__/promotions/snapshots/voucherify-promotions.snapshot.ts diff --git a/src/integration/__tests__/promotions/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/promotions/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/promotions/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/promotions/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/promotions/test.spec.ts b/voucherify-service/test/__tests__/promotions/test.spec.ts similarity index 81% rename from src/integration/__tests__/promotions/test.spec.ts rename to voucherify-service/test/__tests__/promotions/test.spec.ts index 9cc9fcaf..2fbce47e 100644 --- a/src/integration/__tests__/promotions/test.spec.ts +++ b/voucherify-service/test/__tests__/promotions/test.spec.ts @@ -1,14 +1,15 @@ -import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../../commerceTools/tax-categories/__mocks__/tax-categories.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../../commerceTools/__mocks__/commerce-tools-connector.service'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../../__mocks__/tax-categories.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; import { promotions } from './snapshots/voucherify-promotions.snapshot'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -describe('when adding a promottion to a cart', () => { +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; + +describe('when adding a promotion to a cart', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; const SKU_ID = 'gift-sku-id'; diff --git a/src/integration/__tests__/updatedItemsQuantity/snapshots/cart.snapshot.ts b/voucherify-service/test/__tests__/updated-items-quantity/snapshots/cart.snapshot.ts similarity index 100% rename from src/integration/__tests__/updatedItemsQuantity/snapshots/cart.snapshot.ts rename to voucherify-service/test/__tests__/updated-items-quantity/snapshots/cart.snapshot.ts diff --git a/src/integration/__tests__/updatedItemsQuantity/snapshots/voucherifyResponse.snapshot.ts b/voucherify-service/test/__tests__/updated-items-quantity/snapshots/voucherifyResponse.snapshot.ts similarity index 100% rename from src/integration/__tests__/updatedItemsQuantity/snapshots/voucherifyResponse.snapshot.ts rename to voucherify-service/test/__tests__/updated-items-quantity/snapshots/voucherifyResponse.snapshot.ts diff --git a/src/integration/__tests__/updatedItemsQuantity/test.spec.ts b/voucherify-service/test/__tests__/updated-items-quantity/test.spec.ts similarity index 90% rename from src/integration/__tests__/updatedItemsQuantity/test.spec.ts rename to voucherify-service/test/__tests__/updated-items-quantity/test.spec.ts index 79322694..611d7675 100644 --- a/src/integration/__tests__/updatedItemsQuantity/test.spec.ts +++ b/voucherify-service/test/__tests__/updated-items-quantity/test.spec.ts @@ -1,15 +1,15 @@ import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse, defaultGetCouponTaxCategoryResponse, -} from '../../../commercetools/tax-categories/__mocks__/tax-categories.service'; -import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../../commercetools/custom-types/__mocks__/types.service'; -import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../../voucherify/__mocks__/voucherify-connector.service'; -import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../../commercetools/__mocks__/commerce-tools-connector.service'; +} from '../../__mocks__/tax-categories.service'; +import { getTypesServiceMockWithConfiguredCouponTypeResponse } from '../../__mocks__/types.service'; +import { getVoucherifyConnectorServiceMockWithDefinedResponse } from '../../__mocks__/voucherify-connector.service'; +import { getCommerceToolsConnectorServiceMockWithEmptyProductResponse } from '../../__mocks__/commerce-tools-connector.service'; import { buildCartServiceWithMockedDependencies } from '../cart-service.factory'; -import { CommercetoolsService } from '../../../commercetools/commercetools.service'; -import { VoucherifyConnectorService } from 'src/voucherify/voucherify-connector.service'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; import { voucherifyResponse } from './snapshots/voucherifyResponse.snapshot'; import { cart } from './snapshots/cart.snapshot'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; describe('When two discount codes (percentage and amount) are already applied and quantity of items have been updated', () => { let commercetoolsService: CommercetoolsService; let voucherifyConnectorService: VoucherifyConnectorService; diff --git a/voucherify-service/test/__unit_tests__/api-extension.service.spec.ts b/voucherify-service/test/__unit_tests__/api-extension.service.spec.ts new file mode 100644 index 00000000..b1189ab1 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/api-extension.service.spec.ts @@ -0,0 +1,89 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigService } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../src/commercetools/commercetools-connector.service'; +import { ApiExtensionService } from '../../src/commercetools/api-extension.service'; +import { + getCommerceToolsConnectorServiceMockForAPIExtensionServiceTest, + getConfigForAPIExtensionServiceTest, +} from '../__mocks__/commerce-tools-connector.service'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +const moduleMocker = new ModuleMocker(global); + +describe('ApiExtensionService', () => { + let service: ApiExtensionService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ApiExtensionService, + { + provide: CommercetoolsConnectorService, + useValue: + getCommerceToolsConnectorServiceMockForAPIExtensionServiceTest(), + }, + Logger, + RequestJsonLogger, + { + provide: ConfigService, + useValue: getConfigForAPIExtensionServiceTest(), + }, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + service = module.get(ApiExtensionService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); + + it('should be defined', () => { + expect(service.list).toBeDefined(); + expect(service.removeById).toBeDefined(); + expect(service.removeByAttr).toBeDefined(); + expect(service.add).toBeDefined(); + expect(service.update).toBeDefined(); + }); + + it('should be defined', async () => { + const result = await service.list(); + expect(result).toBeDefined(); + }); + + it('should be pass with no error', async () => { + const result1 = await service.removeById('1234'); + expect(result1).toBeFalsy(); + const result2 = await service.removeById('123'); + expect(result2).toBeFalsy(); + }); + + it('should be pass with no error', async () => { + const result1 = await service.removeByAttr('key', '1234'); + expect(result1).toBeFalsy(); + const result2 = await service.removeByAttr('key', '123'); + expect(result2).toBeFalsy(); + }); + + it('should be pass with no error', async () => { + const result = await service.add('sss.sss/ss', '1234'); + expect(result).toBeFalsy(); + }); + + it('should be pass with no error', async () => { + const result = await service.update('sss.sss/ss'); + expect(result).toBeFalsy(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/api-extension/api-extension-1.controller.spec.ts b/voucherify-service/test/__unit_tests__/api-extension/api-extension-1.controller.spec.ts new file mode 100644 index 00000000..47c84d83 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/api-extension/api-extension-1.controller.spec.ts @@ -0,0 +1,61 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { Logger } from '@nestjs/common'; +import { ApiExtensionController } from '../../../src/commercetools/api-extension.controller'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { getCommerceToolsServiceMockWithMockedResponse } from '../../__mocks__/commercetools.service'; +import { cart } from '../payloads/api-extension.controller.spec.payloads'; + +describe('ApiExtensionController', () => { + let controller: ApiExtensionController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ApiExtensionController, + Logger, + { + provide: CommercetoolsService, + useValue: getCommerceToolsServiceMockWithMockedResponse(), + }, + ], + }).compile(); + + controller = module.get(ApiExtensionController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); + + it('should handleApiExtensionRequest with cart payload with no errors', async () => { + const responseExpress = { + status: jest + .fn() + .mockReturnValue({ json: jest.fn().mockReturnValue(undefined) }), + }; + + expect( + await controller.handleApiExtensionRequest( + cart as any, + responseExpress as any, + ), + ).toEqual(undefined); + }); + + it('should handleApiExtensionRequest with order payload with no errors', async () => { + const responseExpress = { + status: jest + .fn() + .mockReturnValue({ json: jest.fn().mockReturnValue(undefined) }), + }; + const order = { ...cart }; + order.resource.typeId = 'order'; + + expect( + await controller.handleApiExtensionRequest( + order as any, + responseExpress as any, + ), + ).toEqual(undefined); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/api-extension/api-extension-2.controller.spec.ts b/voucherify-service/test/__unit_tests__/api-extension/api-extension-2.controller.spec.ts new file mode 100644 index 00000000..2a64211d --- /dev/null +++ b/voucherify-service/test/__unit_tests__/api-extension/api-extension-2.controller.spec.ts @@ -0,0 +1,94 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { Logger } from '@nestjs/common'; +import { ApiExtensionController } from '../../../src/commercetools/api-extension.controller'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { getCommerceToolsServiceMockWithMockedResponse } from '../../__mocks__/commercetools.service'; +import { cart } from '../payloads/api-extension.controller.spec.payloads'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +const moduleMocker = new ModuleMocker(global); + +describe('ApiExtensionController2', () => { + it('should execute responseExpress with { actions: [] }', async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ApiExtensionController, + Logger, + { + provide: CommercetoolsService, + useValue: getCommerceToolsServiceMockWithMockedResponse({ + actions: [], + }), + }, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + const controller = module.get( + ApiExtensionController, + ); + + const json = jest.fn().mockReturnValue(undefined); + + const responseExpress = { + status: jest.fn().mockReturnValue({ json }), + }; + + await controller.handleApiExtensionRequest( + cart as any, + responseExpress as any, + ); + expect(json).toBeCalledWith({}); + }); + + it('should execute responseExpress with { actions: [1, 23] }', async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ApiExtensionController, + Logger, + { + provide: CommercetoolsService, + useValue: getCommerceToolsServiceMockWithMockedResponse({ + status: 200, + actions: [1, 23], + }), + }, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + const controller = module.get( + ApiExtensionController, + ); + + const json = jest.fn().mockReturnValue(undefined); + + const responseExpress = { + status: jest.fn().mockReturnValue({ json }), + }; + + await controller.handleApiExtensionRequest( + cart as any, + responseExpress as any, + ); + expect(json).toBeCalledWith({ actions: [1, 23] }); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/api-extension/api-extension-3.controller.spec.ts b/voucherify-service/test/__unit_tests__/api-extension/api-extension-3.controller.spec.ts new file mode 100644 index 00000000..5d5a576f --- /dev/null +++ b/voucherify-service/test/__unit_tests__/api-extension/api-extension-3.controller.spec.ts @@ -0,0 +1,37 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { Logger } from '@nestjs/common'; +import { ApiExtensionController } from '../../../src/commercetools/api-extension.controller'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { cart } from '../payloads/api-extension.controller.spec.payloads'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +describe('ApiExtensionController', () => { + it('should execute responseExpress with { actions: [] } after an error occurs', async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ApiExtensionController, + Logger, + { + provide: CommercetoolsService, + useValue: {}, + }, + ], + }).compile(); + + const controller = module.get( + ApiExtensionController, + ); + + const json = jest.fn().mockReturnValue(undefined); + + const responseExpress = { + status: jest.fn().mockReturnValue({ json }), + }; + + await controller.handleApiExtensionRequest( + cart as any, + responseExpress as any, + ); + expect(json).toBeCalledWith({ actions: [] }); + }); +}); diff --git a/src/__tests__/app.controller.spec.ts b/voucherify-service/test/__unit_tests__/app.controller.spec.ts similarity index 84% rename from src/__tests__/app.controller.spec.ts rename to voucherify-service/test/__unit_tests__/app.controller.spec.ts index 6375c475..88fdc9ff 100644 --- a/src/__tests__/app.controller.spec.ts +++ b/voucherify-service/test/__unit_tests__/app.controller.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { AppController } from '../app.controller'; -import { AppService } from '../app.service'; +import { AppController } from '../../src/app.controller'; +import { AppService } from '../../src/app.service'; describe('AppController', () => { let appController: AppController; diff --git a/voucherify-service/test/__unit_tests__/cli/api-extension-add.command.spec.ts b/voucherify-service/test/__unit_tests__/cli/api-extension-add.command.spec.ts new file mode 100644 index 00000000..1ce45102 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/cli/api-extension-add.command.spec.ts @@ -0,0 +1,55 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigModule } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../../src/commercetools/commercetools-connector.service'; +import { ApiExtensionService } from '../../../src/commercetools/api-extension.service'; +import { MigrateCommand } from '../../../src/cli/migrate.command'; +import { ProductImportService } from '../../../src/import/product-import.service'; +import { OrderImportService } from '../../../src/import/order-import.service'; +import { CustomerImportService } from '../../../src/import/customer-import.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { OrderMapper } from '../../../src/integration/utils/mappers/order'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { CustomTypesService } from '../../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../../src/commercetools/tax-categories/tax-categories.service'; +import { ApiExtensionUpdateCommand } from '../../../src/cli/api-extension-update.command'; +import { ApiExtensionListCommand } from '../../../src/cli/api-extension-list.command'; +import { ApiExtensionDeleteCommand } from '../../../src/cli/api-extension-delete.command'; +import { ApiExtensionAddCommand } from '../../../src/cli/api-extension-add.command'; + +describe('ApiExtensionAddCommand', () => { + let command: ApiExtensionAddCommand; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [ConfigModule.forRoot()], + providers: [ + ApiExtensionAddCommand, + ApiExtensionService, + MigrateCommand, + ProductImportService, + OrderImportService, + CustomerImportService, + CommercetoolsConnectorService, + VoucherifyConnectorService, + CommercetoolsService, + CustomTypesService, + TaxCategoriesService, + OrderMapper, + Logger, + RequestJsonLogger, + ], + }).compile(); + + command = module.get(ApiExtensionAddCommand); + }); + + it('should be defined', () => { + expect(command).toBeDefined(); + }); + + it('should be defined', () => { + expect(command.run).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/cli/api-extension-delete.command.spec.ts b/voucherify-service/test/__unit_tests__/cli/api-extension-delete.command.spec.ts new file mode 100644 index 00000000..ec773c64 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/cli/api-extension-delete.command.spec.ts @@ -0,0 +1,79 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigModule } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../../src/commercetools/commercetools-connector.service'; +import { ApiExtensionService } from '../../../src/commercetools/api-extension.service'; +import { MigrateCommand } from '../../../src/cli/migrate.command'; +import { ProductImportService } from '../../../src/import/product-import.service'; +import { OrderImportService } from '../../../src/import/order-import.service'; +import { CustomerImportService } from '../../../src/import/customer-import.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { OrderMapper } from '../../../src/integration/utils/mappers/order'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { CustomTypesService } from '../../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../../src/commercetools/tax-categories/tax-categories.service'; +import { ApiExtensionUpdateCommand } from '../../../src/cli/api-extension-update.command'; +import { ApiExtensionListCommand } from '../../../src/cli/api-extension-list.command'; +import { ApiExtensionDeleteCommand } from '../../../src/cli/api-extension-delete.command'; +import { + getCommerceToolsConnectorServiceMockForAPIExtensionServiceTest, + getConfigForAPIExtensionServiceTest, +} from '../../__mocks__/commerce-tools-connector.service'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +const moduleMocker = new ModuleMocker(global); + +describe('ApiExtensionDeleteCommand', () => { + let command: ApiExtensionDeleteCommand; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + { + provide: ConfigModule, + useValue: getConfigForAPIExtensionServiceTest(), + }, + ApiExtensionDeleteCommand, + ApiExtensionService, + MigrateCommand, + ProductImportService, + OrderImportService, + CustomerImportService, + { + provide: CommercetoolsConnectorService, + useValue: + getCommerceToolsConnectorServiceMockForAPIExtensionServiceTest(), + }, + VoucherifyConnectorService, + CommercetoolsService, + CustomTypesService, + TaxCategoriesService, + OrderMapper, + Logger, + RequestJsonLogger, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + command = module.get(ApiExtensionDeleteCommand); + }); + + it('should be defined', () => { + expect(command).toBeDefined(); + }); + + it('should be defined', async () => { + await command.run([], { id: '123' }); + expect(command.run).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/cli/api-extension-list.command.spec.ts b/voucherify-service/test/__unit_tests__/cli/api-extension-list.command.spec.ts new file mode 100644 index 00000000..42f36725 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/cli/api-extension-list.command.spec.ts @@ -0,0 +1,79 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigModule } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../../src/commercetools/commercetools-connector.service'; +import { ApiExtensionService } from '../../../src/commercetools/api-extension.service'; +import { MigrateCommand } from '../../../src/cli/migrate.command'; +import { ProductImportService } from '../../../src/import/product-import.service'; +import { OrderImportService } from '../../../src/import/order-import.service'; +import { CustomerImportService } from '../../../src/import/customer-import.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { OrderMapper } from '../../../src/integration/utils/mappers/order'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { CustomTypesService } from '../../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../../src/commercetools/tax-categories/tax-categories.service'; +import { ApiExtensionUpdateCommand } from '../../../src/cli/api-extension-update.command'; +import { ApiExtensionListCommand } from '../../../src/cli/api-extension-list.command'; +import { + getCommerceToolsConnectorServiceMockForAPIExtensionServiceTest, + getConfigForAPIExtensionServiceTest, +} from '../../__mocks__/commerce-tools-connector.service'; +import { ApiExtensionDeleteCommand } from '../../../src/cli/api-extension-delete.command'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +const moduleMocker = new ModuleMocker(global); + +describe('ApiExtensionListCommand', () => { + let command: ApiExtensionListCommand; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + { + provide: ConfigModule, + useValue: getConfigForAPIExtensionServiceTest(), + }, + ApiExtensionListCommand, + ApiExtensionService, + MigrateCommand, + ProductImportService, + OrderImportService, + CustomerImportService, + { + provide: CommercetoolsConnectorService, + useValue: + getCommerceToolsConnectorServiceMockForAPIExtensionServiceTest(), + }, + VoucherifyConnectorService, + CommercetoolsService, + CustomTypesService, + TaxCategoriesService, + OrderMapper, + Logger, + RequestJsonLogger, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + command = module.get(ApiExtensionListCommand); + }); + + it('should be defined', () => { + expect(command).toBeDefined(); + }); + + it('should be defined', () => { + command.run(); + expect(command.run).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/cli/api-extension-update.command.spec.ts b/voucherify-service/test/__unit_tests__/cli/api-extension-update.command.spec.ts new file mode 100644 index 00000000..c8b7f2b3 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/cli/api-extension-update.command.spec.ts @@ -0,0 +1,65 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigModule } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../../src/commercetools/commercetools-connector.service'; +import { ApiExtensionService } from '../../../src/commercetools/api-extension.service'; +import { MigrateCommand } from '../../../src/cli/migrate.command'; +import { ProductImportService } from '../../../src/import/product-import.service'; +import { OrderImportService } from '../../../src/import/order-import.service'; +import { CustomerImportService } from '../../../src/import/customer-import.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { OrderMapper } from '../../../src/integration/utils/mappers/order'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { CustomTypesService } from '../../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../../src/commercetools/tax-categories/tax-categories.service'; +import { ApiExtensionUpdateCommand } from '../../../src/cli/api-extension-update.command'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +const moduleMocker = new ModuleMocker(global); + +describe('ApiExtensionUpdateCommand', () => { + let command: ApiExtensionUpdateCommand; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ConfigModule, + ApiExtensionUpdateCommand, + ApiExtensionService, + MigrateCommand, + ProductImportService, + OrderImportService, + CustomerImportService, + CommercetoolsConnectorService, + VoucherifyConnectorService, + CommercetoolsService, + CustomTypesService, + TaxCategoriesService, + OrderMapper, + Logger, + RequestJsonLogger, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + command = module.get(ApiExtensionUpdateCommand); + }); + + it('should be defined', () => { + expect(command).toBeDefined(); + }); + + it('should be defined', () => { + expect(command.run).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/cli/config.command.spec.ts b/voucherify-service/test/__unit_tests__/cli/config.command.spec.ts new file mode 100644 index 00000000..b59330af --- /dev/null +++ b/voucherify-service/test/__unit_tests__/cli/config.command.spec.ts @@ -0,0 +1,51 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigModule } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../../src/commercetools/commercetools-connector.service'; +import { ApiExtensionService } from '../../../src/commercetools/api-extension.service'; +import { MigrateCommand } from '../../../src/cli/migrate.command'; +import { ProductImportService } from '../../../src/import/product-import.service'; +import { OrderImportService } from '../../../src/import/order-import.service'; +import { CustomerImportService } from '../../../src/import/customer-import.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { OrderMapper } from '../../../src/integration/utils/mappers/order'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { CustomTypesService } from '../../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../../src/commercetools/tax-categories/tax-categories.service'; +import { ConfigCommand } from '../../../src/cli/config.command'; + +describe('ConfigCommand', () => { + let command: ConfigCommand; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [ConfigModule.forRoot()], + providers: [ + MigrateCommand, + ProductImportService, + OrderImportService, + CustomerImportService, + CommercetoolsConnectorService, + VoucherifyConnectorService, + CommercetoolsService, + CustomTypesService, + TaxCategoriesService, + ConfigCommand, + OrderMapper, + Logger, + RequestJsonLogger, + ], + }).compile(); + + command = module.get(ConfigCommand); + }); + + it('should be defined', () => { + expect(command).toBeDefined(); + }); + + it('should be defined', () => { + expect(command.run).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/cli/migrate.command.spec.ts b/voucherify-service/test/__unit_tests__/cli/migrate.command.spec.ts new file mode 100644 index 00000000..0654a5c1 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/cli/migrate.command.spec.ts @@ -0,0 +1,69 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigModule } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../../src/commercetools/commercetools-connector.service'; +import { ApiExtensionService } from '../../../src/commercetools/api-extension.service'; +import { MigrateCommand } from '../../../src/cli/migrate.command'; +import { ProductImportService } from '../../../src/import/product-import.service'; +import { OrderImportService } from '../../../src/import/order-import.service'; +import { CustomerImportService } from '../../../src/import/customer-import.service'; +import { VoucherifyConnectorService } from '../../../src/voucherify/voucherify-connector.service'; +import { OrderMapper } from '../../../src/integration/utils/mappers/order'; +import { CommercetoolsService } from '../../../src/commercetools/commercetools.service'; +import { CustomTypesService } from '../../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../../src/commercetools/tax-categories/tax-categories.service'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +const moduleMocker = new ModuleMocker(global); + +describe('MigrateCommand', () => { + let command: MigrateCommand; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ConfigModule, + MigrateCommand, + ProductImportService, + OrderImportService, + CustomerImportService, + CommercetoolsConnectorService, + VoucherifyConnectorService, + CommercetoolsService, + CustomTypesService, + TaxCategoriesService, + OrderMapper, + Logger, + RequestJsonLogger, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + command = module.get(MigrateCommand); + }); + + it('should be defined', () => { + expect(command).toBeDefined(); + }); + + it('should be defined', () => { + expect(command.parseType).toBeDefined(); + expect(command.parseDays).toBeDefined(); + expect(command.parseDays('1')).toString(); + expect(command.parseHours('1')).toBeDefined(); + expect(command.parseMs('1')).toBeDefined(); + expect(command.parseDate('2022-02-02')).toBeDefined(); + expect(command.parseLongDate('2022-02-02T10:10:10')).toBeDefined(); + expect(command.run).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/commercetools.service.spec.ts b/voucherify-service/test/__unit_tests__/commercetools.service.spec.ts new file mode 100644 index 00000000..177957c5 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/commercetools.service.spec.ts @@ -0,0 +1,261 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigService } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../src/configs/requestJsonLogger'; +import { CustomTypesService } from '../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../src/commercetools/tax-categories/tax-categories.service'; +import { CommercetoolsConnectorService } from '../../src/commercetools/commercetools-connector.service'; +import { CommercetoolsService } from '../../src/commercetools/commercetools.service'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; +import { getCommerceToolsConnectorServiceMockForCommerceToolsServiceTest } from '../__mocks__/commerce-tools-connector.service'; +import { cart } from './payloads/commercetools.service.spec.payloads'; +import { getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse } from '../__mocks__/tax-categories.service'; + +const moduleMocker = new ModuleMocker(global); + +describe('CommerceToolsService', () => { + let service: CommercetoolsService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + { + provide: ConfigService, + useValue: getConfigForCommerceToolsServiceTest(), + }, + CommercetoolsService, + { + provide: CommercetoolsConnectorService, + useValue: + getCommerceToolsConnectorServiceMockForCommerceToolsServiceTest( + cart, + ), + }, + { provide: Logger, useValue: getLoggerForCommerceToolsServiceTest() }, + CustomTypesService, + { + provide: TaxCategoriesService, + useValue: + getTaxCategoryServiceMockWithConfiguredTaxCategoryResponse(), + }, + RequestJsonLogger, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + service = module.get(CommercetoolsService); + service.setCartUpdateListener(jest.fn().mockReturnValue(undefined)); + service.setOrderPaidListener(jest.fn().mockReturnValue(undefined)); + }); + + it('all service methods should be defined', () => { + expect(service.handleCartUpdate).toBeDefined(); + expect(service.handleAPIExtensionTimeoutOnCartUpdate).toBeDefined(); + expect(service.checkIfCartStatusIsPaidAndRedeem).toBeDefined(); + expect(service.setCustomTypeForInitializedCart).toBeDefined(); + }); + + it('expect to return undefined when building response time is lower than maxCartUpdateResponseTimeWithoutCheckingIfApiExtensionTimedOut', async () => { + const result = await service.handleAPIExtensionTimeoutOnCartUpdate( + cart as any, + 0, + ); + expect(result).toBeUndefined(); + }); + + it('expect to return undefined when higher version of cart was found', async () => { + const copyOfCart = { ...cart }; + copyOfCart.version = 5; + const result = await service.handleAPIExtensionTimeoutOnCartUpdate( + cart as any, + 2, + ); + expect(result).toBeUndefined(); + }); + + it('expect to return undefined when cartUpdateHandler is not a function', async () => { + service.setCartUpdateListener(undefined); + const result = await service.handleAPIExtensionTimeoutOnCartUpdate( + cart as any, + 2, + ); + expect(result).toBeUndefined(); + }); + + it('expect to return undefined when cartUpdateHandler is a function, this.cartUpdateHandler to be called 1 time', async () => { + const mockFunction = jest.fn().mockResolvedValue(undefined); + service.setCartUpdateListener(mockFunction); + const result = await service.handleAPIExtensionTimeoutOnCartUpdate( + cart as any, + 2, + ); + expect(result).toBeUndefined(); + }); + + it('Expect to return empty actions and return status false when setCartUpdateListener is not configured', async () => { + service.setCartUpdateListener(undefined); + const result = await service.handleCartUpdate(cart as any); + expect(result).toEqual({ + status: false, + actions: [], + }); + }); + + it('Expect to build actions and return status true for correct CT cart when setCartUpdateListener is configured', async () => { + const mockFunction = (cart, cartUpdateActions) => { + cartUpdateActions.setSessionKey('ssn_7j0LyRRIH7u9NaJVNmHkCtmky7Qezmnt'); + cartUpdateActions.setTotalDiscountAmount(1000); + cartUpdateActions.setApplicableCoupons([ + { + status: 'APPLICABLE', + id: '10off', + object: 'voucher', + order: { + source_id: '66567cb6-68e0-44fa-9cf5-3dee728dc396', + amount: 37000, + discount_amount: 1000, + total_discount_amount: 1000, + total_amount: 36000, + applied_discount_amount: 1000, + total_applied_discount_amount: 1000, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 1, + amount: 18500, + price: 18500, + subtotal_amount: 18500, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { + sku: 'Jeans Cycle dark blue', + metadata: {}, + override: true, + }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 1, + amount: 18500, + price: 18500, + subtotal_amount: 18500, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { + sku: 'Jeans Cycle dark blue', + metadata: {}, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + applicable_to: { + data: [], + total: 0, + data_ref: 'data', + object: 'list', + }, + inapplicable_to: { + data: [], + total: 0, + data_ref: 'data', + object: 'list', + }, + result: { + discount: { + type: 'AMOUNT', + effect: 'APPLY_TO_ORDER', + amount_off: 1000, + is_dynamic: false, + }, + }, + }, + ]); + }; + service.setCartUpdateListener(mockFunction as any); + const result = await service.handleCartUpdate(cart as any); + expect(result).toEqual({ + status: true, + actions: [ + { + action: 'setDirectDiscounts', + discounts: [ + { + target: { type: 'lineItems', predicate: 'true' }, + value: { + type: 'absolute', + money: [{ centAmount: 1000, currencyCode: 'USD' }], + }, + }, + ], + }, + { + action: 'setLineItemCustomType', + lineItemId: 'd52307c5-1cc4-400b-9459-121da2d261e5', + type: { key: 'lineItemCodesType' }, + fields: {}, + }, + { + action: 'setCustomField', + name: 'session', + value: 'ssn_7j0LyRRIH7u9NaJVNmHkCtmky7Qezmnt', + }, + { + action: 'setCustomField', + name: 'discount_codes', + value: [ + '{"code":"10off","status":"APPLIED","type":"voucher","value":1000}', + ], + }, + { + action: 'setCustomField', + name: 'shippingProductSourceIds', + value: [], + }, + { action: 'setCustomField', name: 'couponsLimit', value: 5 }, + ], + }); + }); +}); + +const getConfigForCommerceToolsServiceTest = () => { + const configService = + jest.createMockFromModule('@nestjs/config'); + configService.get = jest.fn((key) => { + if ( + key === + 'MAX_CART_UPDATE_RESPONSE_TIME_WITHOUT_CHECKING_IF_API_EXTENSION_TIMED_OUT' + ) { + return 1; + } + if (key === 'APPLY_CART_DISCOUNT_AS_CT_DIRECT_DISCOUNT') { + return 'true'; + } + return null; + }); + return configService; +}; + +const getLoggerForCommerceToolsServiceTest = () => { + const logger = jest.createMockFromModule('@nestjs/common') as Logger; + + logger.error = jest.fn().mockReturnValue(undefined); + logger.debug = jest.fn().mockReturnValue(undefined); + + return logger; +}; diff --git a/voucherify-service/test/__unit_tests__/configs.spec.ts b/voucherify-service/test/__unit_tests__/configs.spec.ts new file mode 100644 index 00000000..bb27cf51 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/configs.spec.ts @@ -0,0 +1,38 @@ +import { AppValidationPipe } from '../../src/configs/appValidationPipe'; +import { ValidationSchema } from '../../src/configs/validationSchema'; + +describe('ConfigsTest', () => { + it('AppValidationPipe should be defined and return value', async () => { + const result = AppValidationPipe; + expect(AppValidationPipe).toBeDefined(); + expect(result).toBeInstanceOf(Object); + }); + + it('ValidationSchema should be defined and return value', async () => { + const result = ValidationSchema; + expect(result).toBeDefined(); + expect(result).toBeInstanceOf(Object); + }); + + it('ValidationSchema should remove trailing slash from APP_URL and CONNECT_SERVICE_URL', async () => { + const exampleConfig = { + // required configs + VOUCHERIFY_APP_ID: 'someId', + VOUCHERIFY_SECRET_KEY: 'someSecret', + VOUCHERIFY_API_URL: 'https://dev.api.voucherify.io', + COMMERCE_TOOLS_PROJECT_KEY: 'asdasd', + COMMERCE_TOOLS_AUTH_URL: + 'https://auth.europe-west1.gcp.commercetools.com', + COMMERCE_TOOLS_API_URL: 'https://api.europe-west1.gcp.commercetools.com', + COMMERCE_TOOLS_ID: 'someId', + COMMERCE_TOOLS_SECRET: 'someSecret', + // what we test + APP_URL: 'https://some-domain.com/', + CONNECT_SERVICE_URL: 'https://some-other-domain.com/', + }; + const { error, value } = ValidationSchema.validate(exampleConfig); + expect(error).toBeUndefined(); + expect(value?.APP_URL).toEqual('https://some-domain.com'); + expect(value?.CONNECT_SERVICE_URL).toEqual('https://some-other-domain.com'); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/ctMappers.spec.ts b/voucherify-service/test/__unit_tests__/ctMappers.spec.ts new file mode 100644 index 00000000..2e660875 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/ctMappers.spec.ts @@ -0,0 +1,51 @@ +import { + getSimpleMetadataForOrderAllMetadataSchemaProperties, + getSimpleMetadataForOrderRawOrder, +} from './payloads/ctMappers.spec.payloads'; +import { getSimpleMetadataForOrder } from '../../src/commercetools/utils/mappers/getSimpleMetadataForOrder'; +import { mergeTwoObjectsIntoOne } from '../../src/integration/utils/mergeTwoObjectsIntoOne'; +import { + firstObject, + secondObject, +} from './payloads/mergeTwoObjectsIntoOne.spec.payload'; + +describe('CT Mappers Test', () => { + it('should map getSimpleMetadataForOrder correctly', () => { + const result = getSimpleMetadataForOrder( + getSimpleMetadataForOrderRawOrder as any, + getSimpleMetadataForOrderAllMetadataSchemaProperties, + ); + expect(result).toEqual({ + billingAddress: { + city: 'Kraków', + country: 'DE', + email: 'piotrzielinski@gmail.com', + firstName: 'Piotr', + lastName: 'Zieliński', + phone: '+48796120506', + postalCode: '32-000', + streetName: 'Porcelanowa', + }, + }); + }); + + it('should merge two objects into one correctly', () => { + const result = mergeTwoObjectsIntoOne(firstObject, secondObject); + expect(result).toEqual({ + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + version: '5', + versionModifiedAt: '2023-05-31T16:04:06.867Z', + createdAt: '2023-05-31T16:04:06.656Z', + lastModifiedAt: '2023-05-31T16:04:06.867Z', + name: 'coupon', + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/ctUtils.spec.ts b/voucherify-service/test/__unit_tests__/ctUtils.spec.ts new file mode 100644 index 00000000..38d80af4 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/ctUtils.spec.ts @@ -0,0 +1,36 @@ +import { getCommercetoolstCurrentPriceAmount } from '../../src/commercetools/utils/getCommercetoolstCurrentPriceAmount'; +import { + deserializeCouponsSerializedDiscountOrCode, + getCommercetoolstCurrentPriceAmountCtProduct, + getCommercetoolstCurrentPriceAmountProductPriceSelector, + getCommercetoolstCurrentPriceAmountProductSkuSourceId, + getCommercetoolstCurrentPriceAmountResult, +} from './payloads/ctUtils.spec.payloads'; +import { deserializeCoupons } from '../../src/commercetools/utils/deserializeCoupons'; + +describe('CT Utils Test', () => { + it('should getCommercetoolstCurrentPriceAmount correctly', () => { + const result = getCommercetoolstCurrentPriceAmount( + getCommercetoolstCurrentPriceAmountCtProduct as any, + getCommercetoolstCurrentPriceAmountProductSkuSourceId, + getCommercetoolstCurrentPriceAmountProductPriceSelector, + ); + expect(result).toEqual(getCommercetoolstCurrentPriceAmountResult); + }); + + it('should deserializeCoupons correctly', () => { + expect( + deserializeCoupons(deserializeCouponsSerializedDiscountOrCode), + ).toEqual({ + code: 'unit1', + status: 'APPLIED', + type: 'voucher', + value: 37375, + }); + + expect(deserializeCoupons('test')).toEqual({ + code: 'test', + status: 'NEW', + }); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/custom-types.service.spec.ts b/voucherify-service/test/__unit_tests__/custom-types.service.spec.ts new file mode 100644 index 00000000..4700ea64 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/custom-types.service.spec.ts @@ -0,0 +1,70 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConfigModule } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../src/configs/requestJsonLogger'; +import { CommercetoolsConnectorService } from '../../src/commercetools/commercetools-connector.service'; +import { MigrateCommand } from '../../src/cli/migrate.command'; +import { ProductImportService } from '../../src/import/product-import.service'; +import { OrderImportService } from '../../src/import/order-import.service'; +import { CustomerImportService } from '../../src/import/customer-import.service'; +import { VoucherifyConnectorService } from '../../src/voucherify/voucherify-connector.service'; +import { OrderMapper } from '../../src/integration/utils/mappers/order'; +import { CommercetoolsService } from '../../src/commercetools/commercetools.service'; +import { CustomTypesService } from '../../src/commercetools/custom-types/custom-types.service'; +import { TaxCategoriesService } from '../../src/commercetools/tax-categories/tax-categories.service'; +import { ConfigCommand } from '../../src/cli/config.command'; +import { getCommerceToolsConnectorServiceMockWithCouponTypes } from '../__mocks__/commerce-tools-connector.service'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; + +const moduleMocker = new ModuleMocker(global); + +describe('ConfigCommand', () => { + let command: CustomTypesService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + ConfigModule, + MigrateCommand, + ProductImportService, + OrderImportService, + CustomerImportService, + { + provide: CommercetoolsConnectorService, + useValue: getCommerceToolsConnectorServiceMockWithCouponTypes(), + }, + VoucherifyConnectorService, + CommercetoolsService, + CustomTypesService, + TaxCategoriesService, + ConfigCommand, + OrderMapper, + Logger, + RequestJsonLogger, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + command = module.get(CustomTypesService); + }); + + it('should be defined', () => { + expect(command).toBeDefined(); + }); + + it('should be defined', () => { + command.findCouponType('test'); + expect(command.findCouponType).toBeDefined(); + command.configureCouponTypes(); + expect(command.configureCouponTypes).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/fixedPrice.spec.ts b/voucherify-service/test/__unit_tests__/fixedPrice.spec.ts new file mode 100644 index 00000000..904c3a3f --- /dev/null +++ b/voucherify-service/test/__unit_tests__/fixedPrice.spec.ts @@ -0,0 +1,34 @@ +import { replaceCodesWithInapplicableCoupons } from '../../src/integration/utils/replaceCodesWithInapplicableCoupons'; +import mapValidateCouponsResultToLineProductsWithFixedAmount from '../../src/commercetools/store-actions/cart-update-actions/helpers/fixedPrice'; +import { dataToRunCartActionsBuilder } from './payloads/fixedPrice.spec.payloads'; + +describe('replaceCodesWithInapplicableCoupons', () => { + it('should map code to result', async () => { + expect( + mapValidateCouponsResultToLineProductsWithFixedAmount( + dataToRunCartActionsBuilder as any, + ), + ).toEqual([ + { + action: 'setLineItemCustomType', + lineItemId: '093db141-0a2b-472d-b520-556b8c7ac307', + type: { key: 'lineItemCodesType' }, + fields: {}, + }, + { + action: 'setLineItemCustomType', + lineItemId: '883ca605-dcb1-4f83-84e4-d75742bd38f8', + type: { key: 'lineItemCodesType' }, + fields: {}, + }, + { + action: 'setLineItemCustomType', + lineItemId: '86a2607b-55cb-4ea6-8d00-3cc53c4a2c33', + type: { key: 'lineItemCodesType' }, + fields: { + coupon_fixed_price: 10000, + }, + }, + ]); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/getOrderMetadata.spec.ts b/voucherify-service/test/__unit_tests__/getOrderMetadata.spec.ts new file mode 100644 index 00000000..386c68b0 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/getOrderMetadata.spec.ts @@ -0,0 +1,43 @@ +import { getOrderMetadata } from '../../src/integration/utils/getOrderMetadata'; +import { cart } from './payloads/commercetools.service.spec.payloads'; +import { OrderPaidActions } from '../../src/commercetools/store-actions/order-paid-actions'; + +describe('Get order metadata', () => { + it('should getOrderMetadata correctly (while no custom function is provided)', async () => { + const result = await getOrderMetadata(cart as any, [ + 'country', + 'shippingMode', + 'type', + ]); + expect(result).toEqual({ + country: 'US', + shippingMode: 'Single', + type: 'Cart', + }); + }); + + it('should getOrderMetadata correctly (while orderPaidActions.getCustomMetadataForOrder function is provided)', async () => { + const orderPaidActions = new OrderPaidActions(); + const result = await getOrderMetadata( + cart as any, + [ + 'country', + 'shippingMode', + 'type', + 'custom_filed_discount_codes', + 'custom_filed_session', + ], + orderPaidActions.getCustomMetadataForOrder, + ); + expect(result).toEqual({ + country: 'US', + shippingMode: 'Single', + type: 'Cart', + custom_filed_discount_codes: [ + '{"code":"PERC10","status":"APPLIED","value":2650}', + '{"code":"AMOUNT20","status":"APPLIED","value":2000}', + ], + custom_filed_session: 'existing-session-id', + }); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/handle-timeout-interceptor.service.spec.ts b/voucherify-service/test/__unit_tests__/handle-timeout-interceptor.service.spec.ts new file mode 100644 index 00000000..2452b1b7 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/handle-timeout-interceptor.service.spec.ts @@ -0,0 +1,69 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { Logger } from '@nestjs/common'; +import { CommercetoolsService } from '../../src/commercetools/commercetools.service'; +import { getCommerceToolsServiceMockWithMockedResponse } from '../__mocks__/commercetools.service'; +import { cart } from './payloads/api-extension.controller.spec.payloads'; +import { HandleTimeoutInterceptor } from '../../src/commercetools/handle-timeout-interceptor.service'; + +describe('CommerceToolsController', () => { + let interceptor: HandleTimeoutInterceptor; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + HandleTimeoutInterceptor, + Logger, + { + provide: CommercetoolsService, + useValue: getCommerceToolsServiceMockWithMockedResponse(), + }, + ], + }).compile(); + + interceptor = module.get( + HandleTimeoutInterceptor, + ); + }); + + it('should be defined', () => { + expect(interceptor).toBeDefined(); + }); + + it('should intercept with cart payload with no errors', async () => { + const next = { + handle: jest + .fn() + .mockReturnValue({ pipe: jest.fn().mockReturnValue(undefined) }), + }; + + const context = { + switchToHttp: jest.fn().mockReturnValue({ + getRequest: jest.fn().mockReturnValue({ body: cart }), + }), + }; + + expect(await interceptor.intercept(context as any, next as any)).toEqual( + undefined, + ); + }); + + it('should intercept with order payload with no errors', async () => { + const next = { + handle: jest + .fn() + .mockReturnValue({ pipe: jest.fn().mockReturnValue(undefined) }), + }; + + const order = { ...cart }; + order.resource.typeId = 'order'; + + const context = { + switchToHttp: jest.fn().mockReturnValue({ + getRequest: jest.fn().mockReturnValue({ body: order }), + }), + }; + + const result = await interceptor.intercept(context as any, next as any); + expect(result?.pipe).toBeDefined(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/integrationMappers.spec.ts b/voucherify-service/test/__unit_tests__/integrationMappers.spec.ts new file mode 100644 index 00000000..fdcc3a80 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/integrationMappers.spec.ts @@ -0,0 +1,26 @@ +import { + getOrderObjectOrder, + getOrderObjectResponse, + buildRedeemStackableRequestForVoucherifyItems, + buildRedeemStackableRequestForVoucherifyOrder, + buildRedeemStackableRequestForVoucherifyResponse, +} from './payloads/integrationMappers.spec.payloads'; +import { buildRedeemStackableRequestForVoucherify } from '../../src/integration/utils/mappers/buildRedeemStackableRequestForVoucherify'; +import { OrderMapper } from '../../src/integration/utils/mappers/order'; + +describe('Integration Mappers Test', () => { + it('Should map order correctly', () => { + const orderMapper = new OrderMapper(); + const result = orderMapper.getOrderObject(getOrderObjectOrder as any); + expect(result).toEqual(getOrderObjectResponse); + }); + + it('should map order with items to V% redeem', async () => { + const result = buildRedeemStackableRequestForVoucherify( + buildRedeemStackableRequestForVoucherifyOrder as any, + buildRedeemStackableRequestForVoucherifyItems as any, + {}, + ); + expect(result).toEqual(buildRedeemStackableRequestForVoucherifyResponse); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/order-paid-actions.spec.ts b/voucherify-service/test/__unit_tests__/order-paid-actions.spec.ts new file mode 100644 index 00000000..40d16e59 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/order-paid-actions.spec.ts @@ -0,0 +1,531 @@ +import { OrderPaidActions } from '../../src/commercetools/store-actions/order-paid-actions'; +import { + order, + orderMetadataSchemaProperties, +} from './payloads/order-paid-actions-pailoads'; + +describe('OrderPaidActions', () => { + it('should getCustomMetadataForOrder correctly', async () => { + const orderPaidActions = new OrderPaidActions(); + const ctClient = { + payments: jest.fn().mockReturnValue({ + withId: jest.fn().mockReturnValue({ + get: jest.fn().mockReturnValue({ + execute: jest + .fn() + .mockResolvedValue({ body: { payments: 'found', id: 123 } }), + }), + }), + }), + }; + orderPaidActions.setCtClient(ctClient as any); + const result = await orderPaidActions.getCustomMetadataForOrder( + order as any, + [...orderMetadataSchemaProperties, 'payments'], + ); + expect(result).toEqual({ + custom_filed_shippingInfo: { + shippingMethodName: 'Standard US', + 'price.type': 'centPrecision', + 'price.currencyCode': 'USD', + 'price.centAmount': 0, + 'price.fractionDigits': 2, + 'shippingRate.price.type': 'centPrecision', + 'shippingRate.price.currencyCode': 'USD', + 'shippingRate.price.centAmount': 300, + 'shippingRate.price.fractionDigits': 2, + 'shippingRate.freeAbove.type': 'centPrecision', + 'shippingRate.freeAbove.currencyCode': 'USD', + 'shippingRate.freeAbove.centAmount': 20000, + 'shippingRate.freeAbove.fractionDigits': 2, + 'taxRate.name': '10% incl.', + 'taxRate.amount': 0.1, + 'taxRate.includedInPrice': true, + 'taxRate.country': 'US', + 'taxRate.id': '_JMEWRo5', + 'taxCategory.typeId': 'tax-category', + 'taxCategory.id': '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + 'shippingMethod.typeId': 'shipping-method', + 'shippingMethod.id': '4ec3254f-4ce4-4338-803d-1e42e6f552c6', + 'taxedPrice.totalNet.type': 'centPrecision', + 'taxedPrice.totalNet.currencyCode': 'USD', + 'taxedPrice.totalNet.centAmount': 0, + 'taxedPrice.totalNet.fractionDigits': 2, + 'taxedPrice.totalGross.type': 'centPrecision', + 'taxedPrice.totalGross.currencyCode': 'USD', + 'taxedPrice.totalGross.centAmount': 0, + 'taxedPrice.totalGross.fractionDigits': 2, + 'taxedPrice.totalTax.type': 'centPrecision', + 'taxedPrice.totalTax.currencyCode': 'USD', + 'taxedPrice.totalTax.centAmount': 0, + 'taxedPrice.totalTax.fractionDigits': 2, + shippingMethodState: 'MatchesCart', + }, + payments: [{ payments: 'found', id: 123 }], + taxedPrice: { + 'totalNet.type': 'centPrecision', + 'totalNet.currencyCode': 'USD', + 'totalNet.centAmount': 33636, + 'totalNet.fractionDigits': 2, + 'totalGross.type': 'centPrecision', + 'totalGross.currencyCode': 'USD', + 'totalGross.centAmount': 37000, + 'totalGross.fractionDigits': 2, + 'taxPortions.0.rate': 0.1, + 'taxPortions.0.amount.type': 'centPrecision', + 'taxPortions.0.amount.currencyCode': 'USD', + 'taxPortions.0.amount.centAmount': 3364, + 'taxPortions.0.amount.fractionDigits': 2, + 'taxPortions.0.name': '10% incl.', + 'totalTax.type': 'centPrecision', + 'totalTax.currencyCode': 'USD', + 'totalTax.centAmount': 3364, + 'totalTax.fractionDigits': 2, + }, + lineItems: [ + { + id: 'd52307c5-1cc4-400b-9459-121da2d261e5', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + 'name.en': 'Jeans Cycle dark blue', + 'name.de': 'Jeans Cycle dunkelblau', + 'productType.typeId': 'product-type', + 'productType.id': 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + 'productType.version': 1, + 'productSlug.en': 'cycle-jeans-T225B0440880-darkblue', + 'productSlug.de': 'cycle-jeans-T225B0440880-dunkelblau', + 'variant.id': 1, + 'variant.sku': 'M0E20000000EE54', + 'variant.key': 'M0E20000000EE54', + 'variant.prices.0.id': 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + 'variant.prices.0.value.type': 'centPrecision', + 'variant.prices.0.value.currencyCode': 'EUR', + 'variant.prices.0.value.centAmount': 18500, + 'variant.prices.0.value.fractionDigits': 2, + 'variant.prices.1.id': '3d14867a-66d2-4766-a05d-b66bfd258121', + 'variant.prices.1.value.type': 'centPrecision', + 'variant.prices.1.value.currencyCode': 'EUR', + 'variant.prices.1.value.centAmount': 12131, + 'variant.prices.1.value.fractionDigits': 2, + 'variant.prices.1.customerGroup.typeId': 'customer-group', + 'variant.prices.1.customerGroup.id': + '0c826f37-d10d-439c-bf46-ce9e17deab74', + 'variant.prices.2.id': '1728926f-e928-4eba-8aab-8338406b0f38', + 'variant.prices.2.value.type': 'centPrecision', + 'variant.prices.2.value.currencyCode': 'USD', + 'variant.prices.2.value.centAmount': 18500, + 'variant.prices.2.value.fractionDigits': 2, + 'variant.prices.2.country': 'US', + 'variant.prices.3.id': '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + 'variant.prices.3.value.type': 'centPrecision', + 'variant.prices.3.value.currencyCode': 'USD', + 'variant.prices.3.value.centAmount': 12131, + 'variant.prices.3.value.fractionDigits': 2, + 'variant.prices.3.customerGroup.typeId': 'customer-group', + 'variant.prices.3.customerGroup.id': + '0c826f37-d10d-439c-bf46-ce9e17deab74', + 'variant.prices.4.id': '268bd270-188d-480e-91ce-62f5ce36cd44', + 'variant.prices.4.value.type': 'centPrecision', + 'variant.prices.4.value.currencyCode': 'EUR', + 'variant.prices.4.value.centAmount': 14800, + 'variant.prices.4.value.fractionDigits': 2, + 'variant.prices.4.country': 'DE', + 'variant.prices.5.id': '79e2adaf-1f35-44cf-b6b6-959730676fe2', + 'variant.prices.5.value.type': 'centPrecision', + 'variant.prices.5.value.currencyCode': 'EUR', + 'variant.prices.5.value.centAmount': 14800, + 'variant.prices.5.value.fractionDigits': 2, + 'variant.prices.5.country': 'IT', + 'variant.prices.6.id': '4a76b969-9927-4499-95f3-70ba1986d792', + 'variant.prices.6.value.type': 'centPrecision', + 'variant.prices.6.value.currencyCode': 'EUR', + 'variant.prices.6.value.centAmount': 14800, + 'variant.prices.6.value.fractionDigits': 2, + 'variant.prices.6.country': 'GB', + 'variant.prices.7.id': '85475aaa-0a2a-4469-a766-1f214477c7c6', + 'variant.prices.7.value.type': 'centPrecision', + 'variant.prices.7.value.currencyCode': 'EUR', + 'variant.prices.7.value.centAmount': 16132, + 'variant.prices.7.value.fractionDigits': 2, + 'variant.prices.7.country': 'DE', + 'variant.prices.7.channel.typeId': 'channel', + 'variant.prices.7.channel.id': 'd4e8a815-830f-43bf-8506-77de565bf3f3', + 'variant.prices.8.id': 'ea15846d-304b-492c-bf9a-4f203d3ce218', + 'variant.prices.8.value.type': 'centPrecision', + 'variant.prices.8.value.currencyCode': 'EUR', + 'variant.prices.8.value.centAmount': 20165, + 'variant.prices.8.value.fractionDigits': 2, + 'variant.prices.8.channel.typeId': 'channel', + 'variant.prices.8.channel.id': '68506b79-8d88-47ab-b77d-5b54cb6eec03', + 'variant.prices.9.id': '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + 'variant.prices.9.value.type': 'centPrecision', + 'variant.prices.9.value.currencyCode': 'EUR', + 'variant.prices.9.value.centAmount': 16280, + 'variant.prices.9.value.fractionDigits': 2, + 'variant.prices.9.country': 'DE', + 'variant.prices.9.channel.typeId': 'channel', + 'variant.prices.9.channel.id': '075f15ed-e66a-49a6-8d61-786145ac1a7a', + 'variant.prices.10.id': 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + 'variant.prices.10.value.type': 'centPrecision', + 'variant.prices.10.value.currencyCode': 'EUR', + 'variant.prices.10.value.centAmount': 13468, + 'variant.prices.10.value.fractionDigits': 2, + 'variant.prices.10.country': 'DE', + 'variant.prices.10.channel.typeId': 'channel', + 'variant.prices.10.channel.id': + 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + 'variant.prices.11.id': 'bcdbfe78-1906-445d-882e-cf4431eb84df', + 'variant.prices.11.value.type': 'centPrecision', + 'variant.prices.11.value.currencyCode': 'EUR', + 'variant.prices.11.value.centAmount': 13616, + 'variant.prices.11.value.fractionDigits': 2, + 'variant.prices.11.country': 'DE', + 'variant.prices.11.channel.typeId': 'channel', + 'variant.prices.11.channel.id': + 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + 'variant.prices.12.id': '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + 'variant.prices.12.value.type': 'centPrecision', + 'variant.prices.12.value.currencyCode': 'USD', + 'variant.prices.12.value.centAmount': 16132, + 'variant.prices.12.value.fractionDigits': 2, + 'variant.prices.12.country': 'US', + 'variant.prices.12.channel.typeId': 'channel', + 'variant.prices.12.channel.id': + '2259d32b-2c7a-4941-842a-d81fb3c878e7', + 'variant.prices.13.id': '33958888-3989-49db-b64e-124fd35aacc4', + 'variant.prices.13.value.type': 'centPrecision', + 'variant.prices.13.value.currencyCode': 'USD', + 'variant.prices.13.value.centAmount': 20165, + 'variant.prices.13.value.fractionDigits': 2, + 'variant.prices.13.channel.typeId': 'channel', + 'variant.prices.13.channel.id': + '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + 'variant.prices.14.id': '76ed4a2f-ea55-4d05-8393-1616dca4c679', + 'variant.prices.14.value.type': 'centPrecision', + 'variant.prices.14.value.currencyCode': 'USD', + 'variant.prices.14.value.centAmount': 16280, + 'variant.prices.14.value.fractionDigits': 2, + 'variant.prices.14.country': 'US', + 'variant.prices.14.channel.typeId': 'channel', + 'variant.prices.14.channel.id': + 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + 'variant.prices.15.id': 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + 'variant.prices.15.value.type': 'centPrecision', + 'variant.prices.15.value.currencyCode': 'USD', + 'variant.prices.15.value.centAmount': 13468, + 'variant.prices.15.value.fractionDigits': 2, + 'variant.prices.15.country': 'US', + 'variant.prices.15.channel.typeId': 'channel', + 'variant.prices.15.channel.id': + '3def0285-22e1-401c-916b-56efb977f18e', + 'variant.prices.16.id': 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + 'variant.prices.16.value.type': 'centPrecision', + 'variant.prices.16.value.currencyCode': 'USD', + 'variant.prices.16.value.centAmount': 13616, + 'variant.prices.16.value.fractionDigits': 2, + 'variant.prices.16.country': 'US', + 'variant.prices.16.channel.typeId': 'channel', + 'variant.prices.16.channel.id': + 'db86818a-f58b-4df4-8b61-46de85d13a00', + 'variant.images.0.url': + 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + 'variant.images.0.dimensions.w': 0, + 'variant.images.0.dimensions.h': 0, + 'variant.attributes.0.name': 'articleNumberManufacturer', + 'variant.attributes.0.value': 'WPT492 T225 B044 0880 001', + 'variant.attributes.1.name': 'articleNumberMax', + 'variant.attributes.1.value': '81338', + 'variant.attributes.2.name': 'matrixId', + 'variant.attributes.2.value': 'M0E20000000EE54', + 'variant.attributes.3.name': 'baseId', + 'variant.attributes.3.value': '81338', + 'variant.attributes.4.name': 'designer', + 'variant.attributes.4.value.key': 'cycle', + 'variant.attributes.4.value.label': 'Cycle', + 'variant.attributes.5.name': 'madeInItaly', + 'variant.attributes.5.value.key': 'yes', + 'variant.attributes.5.value.label': 'yes', + 'variant.attributes.6.name': 'commonSize', + 'variant.attributes.6.value.key': 'xxs', + 'variant.attributes.6.value.label': 'XXS', + 'variant.attributes.7.name': 'size', + 'variant.attributes.7.value': '24', + 'variant.attributes.8.name': 'color', + 'variant.attributes.8.value.key': 'blue', + 'variant.attributes.8.value.label.de': 'blau', + 'variant.attributes.8.value.label.it': 'blu', + 'variant.attributes.8.value.label.en': 'blue', + 'variant.attributes.9.name': 'colorFreeDefinition', + 'variant.attributes.9.value.en': 'dark blue', + 'variant.attributes.9.value.de': 'dunkelblau', + 'variant.attributes.10.name': 'style', + 'variant.attributes.10.value.key': 'sporty', + 'variant.attributes.10.value.label': 'sporty', + 'variant.attributes.11.name': 'gender', + 'variant.attributes.11.value.key': 'women', + 'variant.attributes.11.value.label': 'Damen', + 'variant.attributes.12.name': 'season', + 'variant.attributes.12.value': 's15', + 'price.id': '1728926f-e928-4eba-8aab-8338406b0f38', + 'price.value.type': 'centPrecision', + 'price.value.currencyCode': 'USD', + 'price.value.centAmount': 18500, + 'price.value.fractionDigits': 2, + 'price.country': 'US', + quantity: 1, + 'taxRate.name': '10% incl.', + 'taxRate.amount': 0.1, + 'taxRate.includedInPrice': true, + 'taxRate.country': 'US', + 'taxRate.id': '_JMEWRo5', + addedAt: '2023-06-14T11:48:15.511Z', + lastModifiedAt: '2023-06-14T11:48:15.511Z', + 'state.0.quantity': 1, + 'state.0.state.typeId': 'state', + 'state.0.state.id': 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + priceMode: 'Platform', + lineItemMode: 'Standard', + 'totalPrice.type': 'centPrecision', + 'totalPrice.currencyCode': 'USD', + 'totalPrice.centAmount': 18500, + 'totalPrice.fractionDigits': 2, + 'taxedPrice.totalNet.type': 'centPrecision', + 'taxedPrice.totalNet.currencyCode': 'USD', + 'taxedPrice.totalNet.centAmount': 16818, + 'taxedPrice.totalNet.fractionDigits': 2, + 'taxedPrice.totalGross.type': 'centPrecision', + 'taxedPrice.totalGross.currencyCode': 'USD', + 'taxedPrice.totalGross.centAmount': 18500, + 'taxedPrice.totalGross.fractionDigits': 2, + 'taxedPrice.totalTax.type': 'centPrecision', + 'taxedPrice.totalTax.currencyCode': 'USD', + 'taxedPrice.totalTax.centAmount': 1682, + 'taxedPrice.totalTax.fractionDigits': 2, + 'custom.type.typeId': 'type', + 'custom.type.id': '69840f60-bd39-4958-b3fc-85bf6c492791', + }, + { + id: '9d0b608c-f02d-43c2-8417-dcecb43ecc88', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + 'name.en': 'Jeans Cycle dark blue', + 'name.de': 'Jeans Cycle dunkelblau', + 'productType.typeId': 'product-type', + 'productType.id': 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + 'productType.version': 1, + 'productSlug.en': 'cycle-jeans-T225B0440880-darkblue', + 'productSlug.de': 'cycle-jeans-T225B0440880-dunkelblau', + 'variant.id': 1, + 'variant.sku': 'M0E20000000EE54', + 'variant.key': 'M0E20000000EE54', + 'variant.prices.0.id': 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + 'variant.prices.0.value.type': 'centPrecision', + 'variant.prices.0.value.currencyCode': 'EUR', + 'variant.prices.0.value.centAmount': 18500, + 'variant.prices.0.value.fractionDigits': 2, + 'variant.prices.1.id': '3d14867a-66d2-4766-a05d-b66bfd258121', + 'variant.prices.1.value.type': 'centPrecision', + 'variant.prices.1.value.currencyCode': 'EUR', + 'variant.prices.1.value.centAmount': 12131, + 'variant.prices.1.value.fractionDigits': 2, + 'variant.prices.1.customerGroup.typeId': 'customer-group', + 'variant.prices.1.customerGroup.id': + '0c826f37-d10d-439c-bf46-ce9e17deab74', + 'variant.prices.2.id': '1728926f-e928-4eba-8aab-8338406b0f38', + 'variant.prices.2.value.type': 'centPrecision', + 'variant.prices.2.value.currencyCode': 'USD', + 'variant.prices.2.value.centAmount': 18500, + 'variant.prices.2.value.fractionDigits': 2, + 'variant.prices.2.country': 'US', + 'variant.prices.3.id': '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + 'variant.prices.3.value.type': 'centPrecision', + 'variant.prices.3.value.currencyCode': 'USD', + 'variant.prices.3.value.centAmount': 12131, + 'variant.prices.3.value.fractionDigits': 2, + 'variant.prices.3.customerGroup.typeId': 'customer-group', + 'variant.prices.3.customerGroup.id': + '0c826f37-d10d-439c-bf46-ce9e17deab74', + 'variant.prices.4.id': '268bd270-188d-480e-91ce-62f5ce36cd44', + 'variant.prices.4.value.type': 'centPrecision', + 'variant.prices.4.value.currencyCode': 'EUR', + 'variant.prices.4.value.centAmount': 14800, + 'variant.prices.4.value.fractionDigits': 2, + 'variant.prices.4.country': 'DE', + 'variant.prices.5.id': '79e2adaf-1f35-44cf-b6b6-959730676fe2', + 'variant.prices.5.value.type': 'centPrecision', + 'variant.prices.5.value.currencyCode': 'EUR', + 'variant.prices.5.value.centAmount': 14800, + 'variant.prices.5.value.fractionDigits': 2, + 'variant.prices.5.country': 'IT', + 'variant.prices.6.id': '4a76b969-9927-4499-95f3-70ba1986d792', + 'variant.prices.6.value.type': 'centPrecision', + 'variant.prices.6.value.currencyCode': 'EUR', + 'variant.prices.6.value.centAmount': 14800, + 'variant.prices.6.value.fractionDigits': 2, + 'variant.prices.6.country': 'GB', + 'variant.prices.7.id': '85475aaa-0a2a-4469-a766-1f214477c7c6', + 'variant.prices.7.value.type': 'centPrecision', + 'variant.prices.7.value.currencyCode': 'EUR', + 'variant.prices.7.value.centAmount': 16132, + 'variant.prices.7.value.fractionDigits': 2, + 'variant.prices.7.country': 'DE', + 'variant.prices.7.channel.typeId': 'channel', + 'variant.prices.7.channel.id': 'd4e8a815-830f-43bf-8506-77de565bf3f3', + 'variant.prices.8.id': 'ea15846d-304b-492c-bf9a-4f203d3ce218', + 'variant.prices.8.value.type': 'centPrecision', + 'variant.prices.8.value.currencyCode': 'EUR', + 'variant.prices.8.value.centAmount': 20165, + 'variant.prices.8.value.fractionDigits': 2, + 'variant.prices.8.channel.typeId': 'channel', + 'variant.prices.8.channel.id': '68506b79-8d88-47ab-b77d-5b54cb6eec03', + 'variant.prices.9.id': '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + 'variant.prices.9.value.type': 'centPrecision', + 'variant.prices.9.value.currencyCode': 'EUR', + 'variant.prices.9.value.centAmount': 16280, + 'variant.prices.9.value.fractionDigits': 2, + 'variant.prices.9.country': 'DE', + 'variant.prices.9.channel.typeId': 'channel', + 'variant.prices.9.channel.id': '075f15ed-e66a-49a6-8d61-786145ac1a7a', + 'variant.prices.10.id': 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + 'variant.prices.10.value.type': 'centPrecision', + 'variant.prices.10.value.currencyCode': 'EUR', + 'variant.prices.10.value.centAmount': 13468, + 'variant.prices.10.value.fractionDigits': 2, + 'variant.prices.10.country': 'DE', + 'variant.prices.10.channel.typeId': 'channel', + 'variant.prices.10.channel.id': + 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + 'variant.prices.11.id': 'bcdbfe78-1906-445d-882e-cf4431eb84df', + 'variant.prices.11.value.type': 'centPrecision', + 'variant.prices.11.value.currencyCode': 'EUR', + 'variant.prices.11.value.centAmount': 13616, + 'variant.prices.11.value.fractionDigits': 2, + 'variant.prices.11.country': 'DE', + 'variant.prices.11.channel.typeId': 'channel', + 'variant.prices.11.channel.id': + 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + 'variant.prices.12.id': '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + 'variant.prices.12.value.type': 'centPrecision', + 'variant.prices.12.value.currencyCode': 'USD', + 'variant.prices.12.value.centAmount': 16132, + 'variant.prices.12.value.fractionDigits': 2, + 'variant.prices.12.country': 'US', + 'variant.prices.12.channel.typeId': 'channel', + 'variant.prices.12.channel.id': + '2259d32b-2c7a-4941-842a-d81fb3c878e7', + 'variant.prices.13.id': '33958888-3989-49db-b64e-124fd35aacc4', + 'variant.prices.13.value.type': 'centPrecision', + 'variant.prices.13.value.currencyCode': 'USD', + 'variant.prices.13.value.centAmount': 20165, + 'variant.prices.13.value.fractionDigits': 2, + 'variant.prices.13.channel.typeId': 'channel', + 'variant.prices.13.channel.id': + '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + 'variant.prices.14.id': '76ed4a2f-ea55-4d05-8393-1616dca4c679', + 'variant.prices.14.value.type': 'centPrecision', + 'variant.prices.14.value.currencyCode': 'USD', + 'variant.prices.14.value.centAmount': 16280, + 'variant.prices.14.value.fractionDigits': 2, + 'variant.prices.14.country': 'US', + 'variant.prices.14.channel.typeId': 'channel', + 'variant.prices.14.channel.id': + 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + 'variant.prices.15.id': 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + 'variant.prices.15.value.type': 'centPrecision', + 'variant.prices.15.value.currencyCode': 'USD', + 'variant.prices.15.value.centAmount': 13468, + 'variant.prices.15.value.fractionDigits': 2, + 'variant.prices.15.country': 'US', + 'variant.prices.15.channel.typeId': 'channel', + 'variant.prices.15.channel.id': + '3def0285-22e1-401c-916b-56efb977f18e', + 'variant.prices.16.id': 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + 'variant.prices.16.value.type': 'centPrecision', + 'variant.prices.16.value.currencyCode': 'USD', + 'variant.prices.16.value.centAmount': 13616, + 'variant.prices.16.value.fractionDigits': 2, + 'variant.prices.16.country': 'US', + 'variant.prices.16.channel.typeId': 'channel', + 'variant.prices.16.channel.id': + 'db86818a-f58b-4df4-8b61-46de85d13a00', + 'variant.images.0.url': + 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + 'variant.images.0.dimensions.w': 0, + 'variant.images.0.dimensions.h': 0, + 'variant.attributes.0.name': 'articleNumberManufacturer', + 'variant.attributes.0.value': 'WPT492 T225 B044 0880 001', + 'variant.attributes.1.name': 'articleNumberMax', + 'variant.attributes.1.value': '81338', + 'variant.attributes.2.name': 'matrixId', + 'variant.attributes.2.value': 'M0E20000000EE54', + 'variant.attributes.3.name': 'baseId', + 'variant.attributes.3.value': '81338', + 'variant.attributes.4.name': 'designer', + 'variant.attributes.4.value.key': 'cycle', + 'variant.attributes.4.value.label': 'Cycle', + 'variant.attributes.5.name': 'madeInItaly', + 'variant.attributes.5.value.key': 'yes', + 'variant.attributes.5.value.label': 'yes', + 'variant.attributes.6.name': 'commonSize', + 'variant.attributes.6.value.key': 'xxs', + 'variant.attributes.6.value.label': 'XXS', + 'variant.attributes.7.name': 'size', + 'variant.attributes.7.value': '24', + 'variant.attributes.8.name': 'color', + 'variant.attributes.8.value.key': 'blue', + 'variant.attributes.8.value.label.de': 'blau', + 'variant.attributes.8.value.label.it': 'blu', + 'variant.attributes.8.value.label.en': 'blue', + 'variant.attributes.9.name': 'colorFreeDefinition', + 'variant.attributes.9.value.en': 'dark blue', + 'variant.attributes.9.value.de': 'dunkelblau', + 'variant.attributes.10.name': 'style', + 'variant.attributes.10.value.key': 'sporty', + 'variant.attributes.10.value.label': 'sporty', + 'variant.attributes.11.name': 'gender', + 'variant.attributes.11.value.key': 'women', + 'variant.attributes.11.value.label': 'Damen', + 'variant.attributes.12.name': 'season', + 'variant.attributes.12.value': 's15', + 'price.id': '1728926f-e928-4eba-8aab-8338406b0f38', + 'price.value.type': 'centPrecision', + 'price.value.currencyCode': 'USD', + 'price.value.centAmount': 18500, + 'price.value.fractionDigits': 2, + 'price.country': 'US', + quantity: 1, + 'taxRate.name': '10% incl.', + 'taxRate.amount': 0.1, + 'taxRate.includedInPrice': true, + 'taxRate.country': 'US', + 'taxRate.id': '_JMEWRo5', + addedAt: '2023-06-15T08:20:31.622Z', + lastModifiedAt: '2023-06-15T08:20:31.622Z', + 'state.0.quantity': 1, + 'state.0.state.typeId': 'state', + 'state.0.state.id': 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + priceMode: 'Platform', + lineItemMode: 'Standard', + 'totalPrice.type': 'centPrecision', + 'totalPrice.currencyCode': 'USD', + 'totalPrice.centAmount': 18500, + 'totalPrice.fractionDigits': 2, + 'taxedPrice.totalNet.type': 'centPrecision', + 'taxedPrice.totalNet.currencyCode': 'USD', + 'taxedPrice.totalNet.centAmount': 16818, + 'taxedPrice.totalNet.fractionDigits': 2, + 'taxedPrice.totalGross.type': 'centPrecision', + 'taxedPrice.totalGross.currencyCode': 'USD', + 'taxedPrice.totalGross.centAmount': 18500, + 'taxedPrice.totalGross.fractionDigits': 2, + 'taxedPrice.totalTax.type': 'centPrecision', + 'taxedPrice.totalTax.currencyCode': 'USD', + 'taxedPrice.totalTax.centAmount': 1682, + 'taxedPrice.totalTax.fractionDigits': 2, + 'custom.type.typeId': 'type', + 'custom.type.id': '69840f60-bd39-4958-b3fc-85bf6c492791', + }, + ], + }); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/payloads/api-extension.controller.spec.payloads.ts b/voucherify-service/test/__unit_tests__/payloads/api-extension.controller.spec.payloads.ts new file mode 100644 index 00000000..7c5294d2 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/api-extension.controller.spec.payloads.ts @@ -0,0 +1,418 @@ +export const cart = { + action: 'Update', + resource: { + typeId: 'cart', + id: '4760fd36-a68a-45d1-b356-fc2b56fa4f31', + obj: { + type: 'Cart', + id: '4760fd36-a68a-45d1-b356-fc2b56fa4f31', + version: 6, + versionModifiedAt: '2023-06-14T11:48:15.413Z', + lastMessageSequenceNumber: 1, + createdAt: '2023-06-14T11:48:15.413Z', + lastModifiedAt: '2023-06-14T11:48:15.413Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + }, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + lineItems: [ + { + id: 'd52307c5-1cc4-400b-9459-121da2d261e5', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-14T11:48:15.511Z', + lastModifiedAt: '2023-06-14T11:48:15.511Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + }, + ], + cartState: 'Active', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + country: 'US', + shippingMode: 'Single', + shippingAddress: { country: 'US' }, + shipping: [], + customLineItems: [], + discountCodes: [], + directDiscounts: [], + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: {}, + }, + inventoryMode: 'None', + taxMode: 'Platform', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + deleteDaysAfterLastModification: 90, + refusedGifts: [], + origin: 'Customer', + itemShippingAddresses: [], + totalLineItemQuantity: 1, + }, + }, +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/commercetools.service.spec.payloads.ts b/voucherify-service/test/__unit_tests__/payloads/commercetools.service.spec.payloads.ts new file mode 100644 index 00000000..50425333 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/commercetools.service.spec.payloads.ts @@ -0,0 +1,417 @@ +export const cart = { + type: 'Cart', + id: '4760fd36-a68a-45d1-b356-fc2b56fa4f31', + version: 6, + versionModifiedAt: '2023-06-14T11:48:15.413Z', + lastMessageSequenceNumber: 1, + createdAt: '2023-06-14T11:48:15.413Z', + lastModifiedAt: '2023-06-14T11:48:15.413Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + }, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + lineItems: [ + { + id: 'd52307c5-1cc4-400b-9459-121da2d261e5', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-14T11:48:15.511Z', + lastModifiedAt: '2023-06-14T11:48:15.511Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + }, + ], + cartState: 'Active', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + country: 'US', + shippingMode: 'Single', + shippingAddress: { country: 'US' }, + shipping: [], + customLineItems: [], + discountCodes: [], + directDiscounts: [], + custom: { + type: { typeId: 'type', id: '5aa76235-9d61-41c7-9d57-278b2bcc2f75' }, + fields: { + discount_codes: [ + '{"code":"PERC10","status":"APPLIED","value":2650}', + '{"code":"AMOUNT20","status":"APPLIED","value":2000}', + ], + session: 'existing-session-id', + }, + }, + inventoryMode: 'None', + taxMode: 'Platform', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + deleteDaysAfterLastModification: 90, + refusedGifts: [], + origin: 'Customer', + itemShippingAddresses: [], + totalLineItemQuantity: 1, +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/ctMappers.spec.payloads.ts b/voucherify-service/test/__unit_tests__/payloads/ctMappers.spec.payloads.ts new file mode 100644 index 00000000..f9ccd5af --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/ctMappers.spec.payloads.ts @@ -0,0 +1,2954 @@ +export const getSimpleMetadataForOrderRawOrder = { + type: 'Order', + id: '0e33558f-6e2e-4756-8cb0-379cf68c3ec1', + version: 2, + versionModifiedAt: '2023-06-01T16:09:40.217Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-01T16:09:40.094Z', + lastModifiedAt: '2023-06-01T16:09:40.094Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + }, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29600, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20100, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29600, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: 'coupon', + }, + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 9500, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 9500, + fractionDigits: 2, + }, + }, + country: 'DE', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard EU', + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4e09f55b-f33b-47a1-a236-a9785c8da88d', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + shipping: [], + lineItems: [ + { + id: 'b88061f5-a3ea-44d2-aa7c-00e4e3029b78', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 2, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T16:09:20.981Z', + lastModifiedAt: '2023-06-01T16:09:30.359Z', + state: [ + { + quantity: 2, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29600, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24874, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29600, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 4726, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + { + id: 'ab9ef647-7d34-4068-8dee-3d99ae551db8', + productId: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + productKey: '82378', + name: { + en: 'Casual jacket Michael Kors beige', + de: 'Freizeitjacke Michael Kors beige', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-casualjacket-CS52DHK2J1-beige', + de: 'michael-kors-freizeitjacke-CS52DHK2J1-beige', + }, + variant: { + id: 5, + sku: 'M0E20000000ELDF', + key: 'M0E20000000ELDF', + prices: [ + { + id: '9d02d6c5-5793-4a51-a88b-b1bd3c4970e9', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'cb422d9d-7527-4e1d-a0b0-ac1ff30266f5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '331e4996-09f3-4bb9-8aad-5aa4f01d1a68', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '7be70a12-5b99-4a70-953a-f83042e56619', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '9494781f-e323-4557-bcbe-cf583636a1d0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1e9fd61b-7a7e-46ad-9bb9-9d34229864f3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ddd4409a-86f8-415d-9347-88212b24019c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '4a3da5ee-4f9b-43f0-8e28-0b8ac6df763d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'fa819a8e-1661-427f-a898-d2064a986dc0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f067ab39-6d98-4634-9d93-054dd3b5e076', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '149eb570-9181-4e71-b860-701caa981009', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '9355974a-1e96-4f81-8c78-181dc74235d5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'fe5c6dd3-1ec0-4061-a516-54f28effb72f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'f7948370-f8bf-4b13-b74f-f6a1781e2593', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '90f95175-1c19-4378-9c9e-52113b16862e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'beige', de: 'beige' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + assets: [], + }, + price: { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T16:09:29.431Z', + lastModifiedAt: '2023-06-01T16:09:39.975Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25126, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 4774, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: { + applied_codes: [ + '{"code":"unit1","type":"UNIT","effect":"ADD_MISSING_ITEMS","quantity":1,"totalDiscountQuantity":1}', + ], + }, + }, + }, + ], + customLineItems: [ + { + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + id: 'ee91bc8b-6b80-4d3c-a942-c05dbdcc39c1', + name: { en: 'Coupon codes discount', de: 'Gutscheincodes rabatt' }, + money: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + slug: 'Voucher, ', + quantity: 1, + discountedPricePerQuantity: [], + taxCategory: { + typeId: 'tax-category', + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + }, + taxRate: { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'DE', + id: '3SF4_HMk', + subRates: [], + }, + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + perMethodTaxRate: [], + priceMode: 'Standard', + }, + ], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: '4aa041de-edd2-4b65-90ca-e55ba26a1336' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [ + '{"code":"unit1","status":"APPLIED","type":"voucher","value":29900}', + ], + shippingProductSourceIds: ['253ec97b-f8ac-4a14-94e2-150f5ab0510a'], + session: 'ssn_IU00aC1TMDiVrJSR31FqIohgxElo4uxP', + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + itemShippingAddresses: [], + refusedGifts: [], +}; + +export const getSimpleMetadataForOrderAllMetadataSchemaProperties = [ + 'location_id', + 'payment_mean', + 'booking_end_date', + 'booking_start_date', + 'billingAddress', +]; + +export const translateCtOrderToOrderOrderObject = { + type: 'Order', + id: '9537a7d8-d982-4107-b245-a19640656c38', + version: 2, + versionModifiedAt: '2023-06-01T16:24:58.356Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-01T16:24:58.182Z', + lastModifiedAt: '2023-06-01T16:24:58.182Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + }, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16234, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: 'coupon', + }, + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 8766, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 8766, + fractionDigits: 2, + }, + }, + country: 'DE', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard EU', + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4e09f55b-f33b-47a1-a236-a9785c8da88d', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + shipping: [], + lineItems: [ + { + id: 'ecb98d28-4fb3-4378-94bc-89bd74c2d126', + productId: 'd5c95d66-13c8-4729-9248-de8b7544d333', + productKey: '82398', + name: { + en: 'Slip-On Shoes “Olivia” Michael Kors black', + de: 'Slip-On Schuhe „Olivia“ Michael Kors schwarz', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-slip-on-olivia-43S5OLFP1L-black', + de: 'michael-kors-slip-on-olivia-43S5OLFP1L-schwarz', + }, + variant: { + id: 1, + sku: 'M0E20000000ELIV', + key: 'M0E20000000ELIV', + prices: [ + { + id: '60f68239-2e2f-4c75-bff5-6e5405b11b9a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 15625, + fractionDigits: 2, + }, + }, + { + id: '993661a3-6e60-46c8-b71d-a2e57fac94da', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '50ecf507-a22f-4ce1-a8cf-c7f88a7a32a3', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 15625, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: 'f3a18448-4816-4b3e-90a8-6deec8479f9d', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '6a7f9ffe-7da3-42ab-a2f4-222397430db1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'a5322692-49f3-4601-930f-9b5b5fcc28ea', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '4cb6e207-65da-4db3-a84b-5ca805e18b18', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '8e2df96a-90e3-446c-a673-d881f27f4f9b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'deb05b45-9e7f-4740-83db-8a9e96235724', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '28958de9-a79e-42c6-9a0c-5cd7ac0d24f6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '1c307d7a-60e7-4b48-8f21-4e3e5631ef63', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '05c025de-c950-4916-9d1b-3dd903c2e362', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '5f22d547-b831-4124-9556-7844b1af4518', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '8a3ebd9a-834d-43ef-9f27-78f2142cce98', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'b9a901b0-f5d2-424b-b854-b0eafa985ee8', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'be05566e-689a-416b-886f-7a8b31559d00', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082398_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'black', de: 'schwarz' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 2, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T16:24:41.000Z', + lastModifiedAt: '2023-06-01T16:24:47.282Z', + state: [ + { + quantity: 2, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 21008, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 3992, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + { + id: 'c57ecc0f-e007-4ee0-bfbe-5f94fb03f906', + productId: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + productKey: '82378', + name: { + en: 'Casual jacket Michael Kors beige', + de: 'Freizeitjacke Michael Kors beige', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-casualjacket-CS52DHK2J1-beige', + de: 'michael-kors-freizeitjacke-CS52DHK2J1-beige', + }, + variant: { + id: 5, + sku: 'M0E20000000ELDF', + key: 'M0E20000000ELDF', + prices: [ + { + id: '9d02d6c5-5793-4a51-a88b-b1bd3c4970e9', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'cb422d9d-7527-4e1d-a0b0-ac1ff30266f5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '331e4996-09f3-4bb9-8aad-5aa4f01d1a68', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '7be70a12-5b99-4a70-953a-f83042e56619', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '9494781f-e323-4557-bcbe-cf583636a1d0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1e9fd61b-7a7e-46ad-9bb9-9d34229864f3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ddd4409a-86f8-415d-9347-88212b24019c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '4a3da5ee-4f9b-43f0-8e28-0b8ac6df763d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'fa819a8e-1661-427f-a898-d2064a986dc0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f067ab39-6d98-4634-9d93-054dd3b5e076', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '149eb570-9181-4e71-b860-701caa981009', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '9355974a-1e96-4f81-8c78-181dc74235d5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'fe5c6dd3-1ec0-4061-a516-54f28effb72f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'f7948370-f8bf-4b13-b74f-f6a1781e2593', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '90f95175-1c19-4378-9c9e-52113b16862e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'beige', de: 'beige' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + assets: [], + }, + price: { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T16:24:46.154Z', + lastModifiedAt: '2023-06-01T16:24:58.058Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25126, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 4774, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: { + applied_codes: [ + '{"code":"unit1","type":"UNIT","effect":"ADD_MISSING_ITEMS","quantity":1,"totalDiscountQuantity":1}', + ], + }, + }, + }, + ], + customLineItems: [ + { + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + id: 'ab0910cb-43e9-4587-92d3-f963df002cb7', + name: { en: 'Coupon codes discount', de: 'Gutscheincodes rabatt' }, + money: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + slug: 'Voucher, ', + quantity: 1, + discountedPricePerQuantity: [], + taxCategory: { + typeId: 'tax-category', + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + }, + taxRate: { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'DE', + id: '3SF4_HMk', + subRates: [], + }, + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + perMethodTaxRate: [], + priceMode: 'Standard', + }, + ], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: 'fae18a02-ab9c-4468-9e90-d8fb13889444' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [ + '{"code":"unit1","status":"APPLIED","type":"voucher","value":29900}', + ], + shippingProductSourceIds: ['253ec97b-f8ac-4a14-94e2-150f5ab0510a'], + session: 'ssn_VbEtLkyW8ZSOaVlN39qUk0StMO5ZZYwJ', + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + itemShippingAddresses: [], + refusedGifts: [], +}; + +export const translateCtOrderToOrderResponse = { + id: '9537a7d8-d982-4107-b245-a19640656c38', + customer: { + source_id: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + address: { + city: 'Kraków', + country: 'DE', + postal_code: '32-000', + line_1: 'Porcelanowa', + }, + phone: '+48796120506', + }, + customerId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + status: 'PAID', + coupons: [ + { code: 'unit1', status: 'APPLIED', type: 'voucher', value: 29900 }, + ], + items: [ + { + source_id: 'M0E20000000ELIV', + quantity: 2, + price: 12500, + amount: 25000, + name: 'Slip-On Shoes “Olivia” Michael Kors black', + sku: 'Slip-On Shoes “Olivia” Michael Kors black', + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'black', de: 'schwarz' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + }, + { + source_id: 'M0E20000000ELDF', + quantity: 1, + price: 29900, + amount: 29900, + name: 'Casual jacket Michael Kors beige', + sku: 'Casual jacket Michael Kors beige', + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'beige', de: 'beige' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + }, + ], + sessionKey: 'ssn_VbEtLkyW8ZSOaVlN39qUk0StMO5ZZYwJ', + rawOrder: { + type: 'Order', + id: '9537a7d8-d982-4107-b245-a19640656c38', + version: 2, + versionModifiedAt: '2023-06-01T16:24:58.356Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-01T16:24:58.182Z', + lastModifiedAt: '2023-06-01T16:24:58.182Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + }, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16234, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: 'coupon', + }, + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 8766, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 8766, + fractionDigits: 2, + }, + }, + country: 'DE', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard EU', + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4e09f55b-f33b-47a1-a236-a9785c8da88d', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + shipping: [], + lineItems: [ + { + id: 'ecb98d28-4fb3-4378-94bc-89bd74c2d126', + productId: 'd5c95d66-13c8-4729-9248-de8b7544d333', + productKey: '82398', + name: { + en: 'Slip-On Shoes “Olivia” Michael Kors black', + de: 'Slip-On Schuhe „Olivia“ Michael Kors schwarz', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-slip-on-olivia-43S5OLFP1L-black', + de: 'michael-kors-slip-on-olivia-43S5OLFP1L-schwarz', + }, + variant: { + id: 1, + sku: 'M0E20000000ELIV', + key: 'M0E20000000ELIV', + prices: [ + { + id: '60f68239-2e2f-4c75-bff5-6e5405b11b9a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 15625, + fractionDigits: 2, + }, + }, + { + id: '993661a3-6e60-46c8-b71d-a2e57fac94da', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '50ecf507-a22f-4ce1-a8cf-c7f88a7a32a3', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 15625, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: 'f3a18448-4816-4b3e-90a8-6deec8479f9d', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '6a7f9ffe-7da3-42ab-a2f4-222397430db1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'a5322692-49f3-4601-930f-9b5b5fcc28ea', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '4cb6e207-65da-4db3-a84b-5ca805e18b18', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '8e2df96a-90e3-446c-a673-d881f27f4f9b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'deb05b45-9e7f-4740-83db-8a9e96235724', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '28958de9-a79e-42c6-9a0c-5cd7ac0d24f6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '1c307d7a-60e7-4b48-8f21-4e3e5631ef63', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '05c025de-c950-4916-9d1b-3dd903c2e362', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '5f22d547-b831-4124-9556-7844b1af4518', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '8a3ebd9a-834d-43ef-9f27-78f2142cce98', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'b9a901b0-f5d2-424b-b854-b0eafa985ee8', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'be05566e-689a-416b-886f-7a8b31559d00', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082398_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'black', de: 'schwarz' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 2, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T16:24:41.000Z', + lastModifiedAt: '2023-06-01T16:24:47.282Z', + state: [ + { + quantity: 2, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 21008, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 3992, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + { + id: 'c57ecc0f-e007-4ee0-bfbe-5f94fb03f906', + productId: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + productKey: '82378', + name: { + en: 'Casual jacket Michael Kors beige', + de: 'Freizeitjacke Michael Kors beige', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-casualjacket-CS52DHK2J1-beige', + de: 'michael-kors-freizeitjacke-CS52DHK2J1-beige', + }, + variant: { + id: 5, + sku: 'M0E20000000ELDF', + key: 'M0E20000000ELDF', + prices: [ + { + id: '9d02d6c5-5793-4a51-a88b-b1bd3c4970e9', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'cb422d9d-7527-4e1d-a0b0-ac1ff30266f5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '331e4996-09f3-4bb9-8aad-5aa4f01d1a68', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '7be70a12-5b99-4a70-953a-f83042e56619', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '9494781f-e323-4557-bcbe-cf583636a1d0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1e9fd61b-7a7e-46ad-9bb9-9d34229864f3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ddd4409a-86f8-415d-9347-88212b24019c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '4a3da5ee-4f9b-43f0-8e28-0b8ac6df763d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'fa819a8e-1661-427f-a898-d2064a986dc0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f067ab39-6d98-4634-9d93-054dd3b5e076', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '149eb570-9181-4e71-b860-701caa981009', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '9355974a-1e96-4f81-8c78-181dc74235d5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'fe5c6dd3-1ec0-4061-a516-54f28effb72f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'f7948370-f8bf-4b13-b74f-f6a1781e2593', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '90f95175-1c19-4378-9c9e-52113b16862e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + assets: [], + }, + price: { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T16:24:46.154Z', + lastModifiedAt: '2023-06-01T16:24:58.058Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25126, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 4774, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: { + applied_codes: [ + '{"code":"unit1","type":"UNIT","effect":"ADD_MISSING_ITEMS","quantity":1,"totalDiscountQuantity":1}', + ], + }, + }, + }, + ], + customLineItems: [ + { + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + id: 'ab0910cb-43e9-4587-92d3-f963df002cb7', + name: { en: 'Coupon codes discount', de: 'Gutscheincodes rabatt' }, + money: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + slug: 'Voucher, ', + quantity: 1, + discountedPricePerQuantity: [], + taxCategory: { + typeId: 'tax-category', + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + }, + taxRate: { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'DE', + id: '3SF4_HMk', + subRates: [], + }, + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + perMethodTaxRate: [], + priceMode: 'Standard', + }, + ], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: 'fae18a02-ab9c-4468-9e90-d8fb13889444' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [ + '{"code":"unit1","status":"APPLIED","type":"voucher","value":29900}', + ], + shippingProductSourceIds: ['253ec97b-f8ac-4a14-94e2-150f5ab0510a'], + session: 'ssn_VbEtLkyW8ZSOaVlN39qUk0StMO5ZZYwJ', + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + itemShippingAddresses: [], + refusedGifts: [], + }, +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/ctUtils.spec.payloads.ts b/voucherify-service/test/__unit_tests__/payloads/ctUtils.spec.payloads.ts new file mode 100644 index 00000000..aef5622c --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/ctUtils.spec.payloads.ts @@ -0,0 +1,4297 @@ +export const getCommercetoolstCurrentPriceAmountCtProduct = { + id: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + version: 1, + versionModifiedAt: '2023-05-31T16:03:43.827Z', + lastMessageSequenceNumber: 1, + createdAt: '2023-05-31T16:03:43.827Z', + lastModifiedAt: '2023-05-31T16:03:43.827Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', isPlatformClient: false }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + }, + masterData: { + current: { + name: { + en: 'Casual jacket Michael Kors beige', + de: 'Freizeitjacke Michael Kors beige', + }, + categories: [ + { typeId: 'category', id: '923758a0-67a7-403a-a81c-4ee8b6d84ef1' }, + ], + categoryOrderHints: {}, + slug: { + en: 'michael-kors-casualjacket-CS52DHK2J1-beige', + de: 'michael-kors-freizeitjacke-CS52DHK2J1-beige', + }, + masterVariant: { + id: 1, + sku: 'M0E20000000ELDB', + key: 'M0E20000000ELDB', + prices: [ + { + id: 'de3180f2-c6dd-4319-b31d-217a7a8a268c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '17956dc8-88c4-40ad-9dbe-a1e2b21d6cc6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '4bcffa01-5b4e-4331-af9c-6d8d19931ea9', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '22584f6f-6459-4675-82e5-968732c1c94d', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'aa5104bc-9099-414a-98a6-75d1e2a0858c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '2b1cc051-459b-4f60-8fa2-e4b8e5272c9f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'cc979341-0414-4301-86eb-4359fbfae507', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: 'ef73c32d-f2ed-46be-aba7-e21cb6588404', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '380f731a-45ab-4501-9a0d-89b8eae59ae1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 39991, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'b7d679dc-0e4a-4ff6-ba0b-c0298d86399d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '7b00db84-6a5e-46c4-a80a-9b85fb33c2de', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'b358e5d7-f0b0-4046-8e91-d2a8d067608a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '1c804f02-682a-4adc-b5f7-160856371ae7', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '933bcc1d-fc8d-4486-bd6f-32e567cfa962', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 39991, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'aa7b4957-59af-4785-bddd-e064cf50e194', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'e28f1e78-a8e7-4a44-949c-003663dfc2e2', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '749f0054-cb5e-474a-9ca8-d37db2e547af', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDB' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: 'XXS' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'beige', de: 'beige' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '4bcffa01-5b4e-4331-af9c-6d8d19931ea9', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + variants: [ + { + id: 2, + sku: 'M0E20000000ELDC', + key: 'M0E20000000ELDC', + prices: [ + { + id: '14dac4aa-128a-4c19-b445-65afa3eed294', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '018cc16a-96b1-49ff-b6be-a58727c33994', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '15beca8a-e45d-440f-a71f-2baeedafe283', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '64322b60-9ba4-4c83-ac4a-249cc3b40795', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '542e27bf-f4d7-4ac3-bf7e-71ef9761ca4b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: 'd149ee6c-ccd3-42f2-8a19-4e5e26250d62', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '3ddff5d2-5dd8-4464-8190-1289eecf3257', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '077ca2f1-aa79-4491-b7e8-d10908b99141', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29003, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '91573ae8-759c-466c-8d6d-e1c04828dce1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34385, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '3b183aee-d07a-43e9-99f3-feb91b3ca546', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '05f64231-4738-4b8f-aa9c-6bcae34b5b41', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31993, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '6155ca98-2021-416e-b102-beaaa8bf6e0e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '08910965-0f0d-4e6c-bee7-f7b23f64a57f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 29003, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '1cd751fa-ac88-4f3b-bbf2-2775e791e903', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34385, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'ad1d4d05-93ff-4c37-b824-10363a01b464', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'a12cf98a-761f-479c-8995-47a3a600c46e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31993, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '51a392a7-2851-4eae-8371-1c7e4c50cae3', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDC' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xs', label: 'XS' } }, + { name: 'size', value: 'XS' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '15beca8a-e45d-440f-a71f-2baeedafe283', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 3, + sku: 'M0E20000000ELDD', + key: 'M0E20000000ELDD', + prices: [ + { + id: '0c6c2634-e29e-4586-87da-a0930e1b6d1a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '3a1199c3-083c-4826-aca5-a4b600b748a2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'ac7c3551-dc8c-4216-889b-157f5f0ad835', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '3098a411-62a9-4ded-8078-a0f18e0445c7', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '4ded0396-b81f-41c1-a1a1-d930ff3bac58', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '45edbb2c-d6d1-40a9-a883-5ed536dfd45f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'faaa3dae-76fd-435c-8c4a-23030282924e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '4591d7b2-7124-4a35-bfb0-aa5a48f70091', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30797, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'b65bdd6f-f361-4f29-b532-9b1a0baa7940', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 35132, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '2c908e32-6911-42fc-bceb-7bb8579a43c4', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'd3633a9d-1d3f-4e6c-8fa9-71d639089e60', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f6354293-c91c-466f-b0ba-2c2550acd643', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'fdc6ab33-1685-4e51-a071-349c8a4843bd', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30797, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '6c4e47b3-af88-42be-9552-11dbdb343c19', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 35132, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'f3925419-75a0-43f8-93b3-822ba634e9dd', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: '93b4a37d-84ae-4d76-a7c9-901acda1bf54', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '892e0a67-547c-4041-91e2-eac6618fd7ee', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDD' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 's', label: 'S' } }, + { name: 'size', value: 'S' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: 'ac7c3551-dc8c-4216-889b-157f5f0ad835', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 4, + sku: 'M0E20000000ELDE', + key: 'M0E20000000ELDE', + prices: [ + { + id: '7ccc113f-8063-47d7-9f04-5f400c30faeb', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'd5be30c3-72e1-49c6-8e5d-e26fd17b555c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'ee10cb63-32c6-41e9-a7c7-4c50281717d1', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '597b92f0-3686-453d-b48d-2502b980a7b4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'bef76055-ccdd-4a46-ae7f-e4c78845590f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '4cfbc459-7840-4000-b443-2671af0620d8', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '7e12814e-1b8b-4ffd-bc67-528fa2558bb1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: 'bbd1ba1b-9f9f-42f4-956d-001d10404a17', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31395, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'f392f19e-f9fb-4a3b-8ebb-685e3915e5aa', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '457b3063-701f-40a3-b803-e5802352b4c3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32292, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '79334331-47d2-4a70-b098-ecf15244d90f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '913843a9-f808-47b2-96c8-52d60327a508', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '07989e77-ad1f-46a3-87b4-2c97adeff3e5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31395, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '7ce32e56-b6f2-4e27-8a8a-4f2b306c7e4e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'b95d2dc8-46a2-45f4-b40f-e0e74b0472a1', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32292, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'aff43c99-1119-4554-bf24-ea20c44cbc9c', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '9ca6f8e3-4299-4fa1-a04f-07c5c50f84de', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDE' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'm', label: 'M' } }, + { name: 'size', value: 'M' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + price: { + id: 'ee10cb63-32c6-41e9-a7c7-4c50281717d1', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 5, + sku: 'M0E20000000ELDF', + key: 'M0E20000000ELDF', + prices: [ + { + id: '9d02d6c5-5793-4a51-a88b-b1bd3c4970e9', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'cb422d9d-7527-4e1d-a0b0-ac1ff30266f5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '331e4996-09f3-4bb9-8aad-5aa4f01d1a68', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '7be70a12-5b99-4a70-953a-f83042e56619', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '9494781f-e323-4557-bcbe-cf583636a1d0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1e9fd61b-7a7e-46ad-9bb9-9d34229864f3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ddd4409a-86f8-415d-9347-88212b24019c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '4a3da5ee-4f9b-43f0-8e28-0b8ac6df763d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'fa819a8e-1661-427f-a898-d2064a986dc0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f067ab39-6d98-4634-9d93-054dd3b5e076', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '149eb570-9181-4e71-b860-701caa981009', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '9355974a-1e96-4f81-8c78-181dc74235d5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'fe5c6dd3-1ec0-4061-a516-54f28effb72f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'f7948370-f8bf-4b13-b74f-f6a1781e2593', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '90f95175-1c19-4378-9c9e-52113b16862e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + price: { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 6, + sku: 'M0E20000000ELDG', + key: 'M0E20000000ELDG', + prices: [ + { + id: '4b87f866-340a-472b-86bc-8b1be27ca1d4', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'ff1e264d-80de-42f1-8661-0879985aab2c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'aa737706-e010-4cf6-9bd3-2727c5dcd83b', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '58923b99-8fe3-4194-9b89-6fa9f38d5ebb', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '00381476-db02-44c1-9d86-1e506582800a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '84be4d18-43ba-4844-b865-742cc2b3c6c7', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'bd008a80-1f86-4bb7-ac24-48dfc1ad2c2d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '6a88fb4b-3fcd-4536-9649-1b3a74f9a2ee', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30498, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '51fbc9af-d6cb-449b-9bfe-74d2c65c1794', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 36628, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '07420451-7e1e-4bc5-8c8e-a77a1c55b56f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '9b761b0a-ab0e-46cf-b2d4-3fac1712bb30', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '5128263e-2248-4189-b896-b3731fb5646e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29302, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'e3525810-c76a-4083-b98b-a8640a1d93eb', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30498, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '0e894529-d5db-4759-917c-7e77af8195c6', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 36628, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'a97ea2a2-9a50-48a5-ae8c-e66bd898efac', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'b00a6609-8e1e-4a05-983d-e5858a1a6db2', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'beebb89c-231d-4a10-a45d-0b657d31665a', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 29302, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDG' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xl', label: 'XL' } }, + { name: 'size', value: 'XL' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: 'aa737706-e010-4cf6-9bd3-2727c5dcd83b', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 7, + sku: 'M0E20000000ELDH', + key: 'M0E20000000ELDH', + prices: [ + { + id: 'b58e9e83-893e-4722-8f6c-652573f9df58', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '33badb74-0319-4dba-a423-7916da2c1e1b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '105bedcf-8192-4a87-acc2-aa2dca6b8c5e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: 'e434576f-c90c-45cb-b7fb-9a141f18c523', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '15643d78-c011-41f6-9079-c9aa88d60559', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: 'cbfe064d-48a1-4881-ab84-f4c598279f66', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '96f7e0e5-aebd-453c-9b79-5972999543b8', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: 'e499a82e-0653-4a2a-b76e-06312f713d44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'a5796059-2ff7-4764-93f2-6089f88714fe', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37001, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'e4ca0b69-7a82-400a-92a2-8ce05cf39e5f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'acdbe5d0-2796-4b8a-9bc0-b32fb86640a6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'a4a578bc-a686-409b-877f-cdef6d653beb', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31096, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'b36fb53f-c7d1-423b-883a-31b9683ba4cd', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '5f8ec258-bf5b-43d3-aca3-764fe707f540', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37001, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '363c8ba5-993b-4b16-aaa9-cb69c75fe370', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: '02eec2d1-1e96-4a61-b8bd-d0571fa4dbfa', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'd06688bc-3ebd-4e42-9760-797130f4c0f4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31096, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDH' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxl', label: 'XXL' } }, + { name: 'size', value: 'XXL' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '105bedcf-8192-4a87-acc2-aa2dca6b8c5e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 8, + sku: 'M0E20000000ELDI', + key: 'M0E20000000ELDI', + prices: [ + { + id: '8b23d5c9-ba2c-496f-922e-41cf588cb41e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '7fb8f742-6cce-4f0b-a0e5-3682e37ffd43', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '459d2acc-a2ad-4c78-af36-e9fe3e480119', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '7192109e-1d78-47f7-a54a-d3f96660ba57', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '7b772656-2f02-4c9c-9d07-3cede836085e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '130ed89e-c02a-4742-a802-5070278a20e0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'eb97d983-a04e-4896-b4d2-0d5bb654d4fd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1c99efd4-783c-4d3a-8ad3-e5a7513bb89b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'bef86f7e-bf1f-4689-b7b3-50c3db6759b5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 39618, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '9879cb7d-ab8e-441e-b03c-704f49cddc8b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'c99b0708-2ef7-4f93-a2e1-1d75833db848', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29601, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '11200145-4068-42a9-b7dd-d95805ceae6c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28405, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'fd42e5fd-f1fc-4447-a120-005ad8e5b786', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '0319cf26-7d6b-4abd-b082-863875de6de9', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 39618, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '5ece5297-ebad-4077-a50c-fdc204c85fd6', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: '6afbdff5-616b-4416-951c-1755fe120656', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 29601, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '89ef1122-3115-4816-8b93-57a0b3ea1c26', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28405, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDI' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxxl', label: 'XXXL' } }, + { name: 'size', value: 'XXXL' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '459d2acc-a2ad-4c78-af36-e9fe3e480119', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + ], + searchKeywords: {}, + }, + staged: { + name: { + en: 'Casual jacket Michael Kors beige', + de: 'Freizeitjacke Michael Kors beige', + }, + categories: [ + { typeId: 'category', id: '923758a0-67a7-403a-a81c-4ee8b6d84ef1' }, + ], + categoryOrderHints: {}, + slug: { + en: 'michael-kors-casualjacket-CS52DHK2J1-beige', + de: 'michael-kors-freizeitjacke-CS52DHK2J1-beige', + }, + masterVariant: { + id: 1, + sku: 'M0E20000000ELDB', + key: 'M0E20000000ELDB', + prices: [ + { + id: 'de3180f2-c6dd-4319-b31d-217a7a8a268c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '17956dc8-88c4-40ad-9dbe-a1e2b21d6cc6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '4bcffa01-5b4e-4331-af9c-6d8d19931ea9', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '22584f6f-6459-4675-82e5-968732c1c94d', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'aa5104bc-9099-414a-98a6-75d1e2a0858c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '2b1cc051-459b-4f60-8fa2-e4b8e5272c9f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'cc979341-0414-4301-86eb-4359fbfae507', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: 'ef73c32d-f2ed-46be-aba7-e21cb6588404', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '380f731a-45ab-4501-9a0d-89b8eae59ae1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 39991, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'b7d679dc-0e4a-4ff6-ba0b-c0298d86399d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '7b00db84-6a5e-46c4-a80a-9b85fb33c2de', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'b358e5d7-f0b0-4046-8e91-d2a8d067608a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '1c804f02-682a-4adc-b5f7-160856371ae7', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '933bcc1d-fc8d-4486-bd6f-32e567cfa962', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 39991, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'aa7b4957-59af-4785-bddd-e064cf50e194', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'e28f1e78-a8e7-4a44-949c-003663dfc2e2', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '749f0054-cb5e-474a-9ca8-d37db2e547af', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDB' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: 'XXS' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'beige', de: 'beige' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '4bcffa01-5b4e-4331-af9c-6d8d19931ea9', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + variants: [ + { + id: 2, + sku: 'M0E20000000ELDC', + key: 'M0E20000000ELDC', + prices: [ + { + id: '14dac4aa-128a-4c19-b445-65afa3eed294', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '018cc16a-96b1-49ff-b6be-a58727c33994', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '15beca8a-e45d-440f-a71f-2baeedafe283', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '64322b60-9ba4-4c83-ac4a-249cc3b40795', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '542e27bf-f4d7-4ac3-bf7e-71ef9761ca4b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: 'd149ee6c-ccd3-42f2-8a19-4e5e26250d62', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '3ddff5d2-5dd8-4464-8190-1289eecf3257', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '077ca2f1-aa79-4491-b7e8-d10908b99141', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29003, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '91573ae8-759c-466c-8d6d-e1c04828dce1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34385, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '3b183aee-d07a-43e9-99f3-feb91b3ca546', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '05f64231-4738-4b8f-aa9c-6bcae34b5b41', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31993, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '6155ca98-2021-416e-b102-beaaa8bf6e0e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '08910965-0f0d-4e6c-bee7-f7b23f64a57f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 29003, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '1cd751fa-ac88-4f3b-bbf2-2775e791e903', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34385, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'ad1d4d05-93ff-4c37-b824-10363a01b464', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'a12cf98a-761f-479c-8995-47a3a600c46e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31993, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '51a392a7-2851-4eae-8371-1c7e4c50cae3', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDC' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xs', label: 'XS' } }, + { name: 'size', value: 'XS' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '15beca8a-e45d-440f-a71f-2baeedafe283', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 3, + sku: 'M0E20000000ELDD', + key: 'M0E20000000ELDD', + prices: [ + { + id: '0c6c2634-e29e-4586-87da-a0930e1b6d1a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '3a1199c3-083c-4826-aca5-a4b600b748a2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'ac7c3551-dc8c-4216-889b-157f5f0ad835', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '3098a411-62a9-4ded-8078-a0f18e0445c7', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '4ded0396-b81f-41c1-a1a1-d930ff3bac58', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '45edbb2c-d6d1-40a9-a883-5ed536dfd45f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'faaa3dae-76fd-435c-8c4a-23030282924e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '4591d7b2-7124-4a35-bfb0-aa5a48f70091', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30797, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'b65bdd6f-f361-4f29-b532-9b1a0baa7940', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 35132, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '2c908e32-6911-42fc-bceb-7bb8579a43c4', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'd3633a9d-1d3f-4e6c-8fa9-71d639089e60', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f6354293-c91c-466f-b0ba-2c2550acd643', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'fdc6ab33-1685-4e51-a071-349c8a4843bd', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30797, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '6c4e47b3-af88-42be-9552-11dbdb343c19', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 35132, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'f3925419-75a0-43f8-93b3-822ba634e9dd', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: '93b4a37d-84ae-4d76-a7c9-901acda1bf54', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '892e0a67-547c-4041-91e2-eac6618fd7ee', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDD' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 's', label: 'S' } }, + { name: 'size', value: 'S' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: 'ac7c3551-dc8c-4216-889b-157f5f0ad835', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 4, + sku: 'M0E20000000ELDE', + key: 'M0E20000000ELDE', + prices: [ + { + id: '7ccc113f-8063-47d7-9f04-5f400c30faeb', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'd5be30c3-72e1-49c6-8e5d-e26fd17b555c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'ee10cb63-32c6-41e9-a7c7-4c50281717d1', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '597b92f0-3686-453d-b48d-2502b980a7b4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'bef76055-ccdd-4a46-ae7f-e4c78845590f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '4cfbc459-7840-4000-b443-2671af0620d8', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '7e12814e-1b8b-4ffd-bc67-528fa2558bb1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: 'bbd1ba1b-9f9f-42f4-956d-001d10404a17', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31395, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'f392f19e-f9fb-4a3b-8ebb-685e3915e5aa', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '457b3063-701f-40a3-b803-e5802352b4c3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32292, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '79334331-47d2-4a70-b098-ecf15244d90f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '913843a9-f808-47b2-96c8-52d60327a508', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '07989e77-ad1f-46a3-87b4-2c97adeff3e5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31395, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '7ce32e56-b6f2-4e27-8a8a-4f2b306c7e4e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'b95d2dc8-46a2-45f4-b40f-e0e74b0472a1', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32292, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'aff43c99-1119-4554-bf24-ea20c44cbc9c', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '9ca6f8e3-4299-4fa1-a04f-07c5c50f84de', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDE' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'm', label: 'M' } }, + { name: 'size', value: 'M' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + price: { + id: 'ee10cb63-32c6-41e9-a7c7-4c50281717d1', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 5, + sku: 'M0E20000000ELDF', + key: 'M0E20000000ELDF', + prices: [ + { + id: '9d02d6c5-5793-4a51-a88b-b1bd3c4970e9', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'cb422d9d-7527-4e1d-a0b0-ac1ff30266f5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '331e4996-09f3-4bb9-8aad-5aa4f01d1a68', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '7be70a12-5b99-4a70-953a-f83042e56619', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '9494781f-e323-4557-bcbe-cf583636a1d0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1e9fd61b-7a7e-46ad-9bb9-9d34229864f3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ddd4409a-86f8-415d-9347-88212b24019c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '4a3da5ee-4f9b-43f0-8e28-0b8ac6df763d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'fa819a8e-1661-427f-a898-d2064a986dc0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f067ab39-6d98-4634-9d93-054dd3b5e076', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '149eb570-9181-4e71-b860-701caa981009', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '9355974a-1e96-4f81-8c78-181dc74235d5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'fe5c6dd3-1ec0-4061-a516-54f28effb72f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'f7948370-f8bf-4b13-b74f-f6a1781e2593', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '90f95175-1c19-4378-9c9e-52113b16862e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + price: { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 6, + sku: 'M0E20000000ELDG', + key: 'M0E20000000ELDG', + prices: [ + { + id: '4b87f866-340a-472b-86bc-8b1be27ca1d4', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'ff1e264d-80de-42f1-8661-0879985aab2c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'aa737706-e010-4cf6-9bd3-2727c5dcd83b', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '58923b99-8fe3-4194-9b89-6fa9f38d5ebb', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '00381476-db02-44c1-9d86-1e506582800a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '84be4d18-43ba-4844-b865-742cc2b3c6c7', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'bd008a80-1f86-4bb7-ac24-48dfc1ad2c2d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '6a88fb4b-3fcd-4536-9649-1b3a74f9a2ee', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30498, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '51fbc9af-d6cb-449b-9bfe-74d2c65c1794', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 36628, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '07420451-7e1e-4bc5-8c8e-a77a1c55b56f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '9b761b0a-ab0e-46cf-b2d4-3fac1712bb30', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '5128263e-2248-4189-b896-b3731fb5646e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29302, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'e3525810-c76a-4083-b98b-a8640a1d93eb', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30498, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '0e894529-d5db-4759-917c-7e77af8195c6', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 36628, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'a97ea2a2-9a50-48a5-ae8c-e66bd898efac', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28106, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'b00a6609-8e1e-4a05-983d-e5858a1a6db2', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'beebb89c-231d-4a10-a45d-0b657d31665a', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 29302, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDG' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xl', label: 'XL' } }, + { name: 'size', value: 'XL' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: 'aa737706-e010-4cf6-9bd3-2727c5dcd83b', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 7, + sku: 'M0E20000000ELDH', + key: 'M0E20000000ELDH', + prices: [ + { + id: 'b58e9e83-893e-4722-8f6c-652573f9df58', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '33badb74-0319-4dba-a423-7916da2c1e1b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '105bedcf-8192-4a87-acc2-aa2dca6b8c5e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: 'e434576f-c90c-45cb-b7fb-9a141f18c523', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '15643d78-c011-41f6-9079-c9aa88d60559', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: 'cbfe064d-48a1-4881-ab84-f4c598279f66', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '96f7e0e5-aebd-453c-9b79-5972999543b8', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: 'e499a82e-0653-4a2a-b76e-06312f713d44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'a5796059-2ff7-4764-93f2-6089f88714fe', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37001, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'e4ca0b69-7a82-400a-92a2-8ce05cf39e5f', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'acdbe5d0-2796-4b8a-9bc0-b32fb86640a6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'a4a578bc-a686-409b-877f-cdef6d653beb', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31096, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'b36fb53f-c7d1-423b-883a-31b9683ba4cd', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32591, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '5f8ec258-bf5b-43d3-aca3-764fe707f540', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37001, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '363c8ba5-993b-4b16-aaa9-cb69c75fe370', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 30199, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: '02eec2d1-1e96-4a61-b8bd-d0571fa4dbfa', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'd06688bc-3ebd-4e42-9760-797130f4c0f4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31096, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDH' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxl', label: 'XXL' } }, + { name: 'size', value: 'XXL' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '105bedcf-8192-4a87-acc2-aa2dca6b8c5e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + { + id: 8, + sku: 'M0E20000000ELDI', + key: 'M0E20000000ELDI', + prices: [ + { + id: '8b23d5c9-ba2c-496f-922e-41cf588cb41e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '7fb8f742-6cce-4f0b-a0e5-3682e37ffd43', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '459d2acc-a2ad-4c78-af36-e9fe3e480119', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '7192109e-1d78-47f7-a54a-d3f96660ba57', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '7b772656-2f02-4c9c-9d07-3cede836085e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '130ed89e-c02a-4742-a802-5070278a20e0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'eb97d983-a04e-4896-b4d2-0d5bb654d4fd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1c99efd4-783c-4d3a-8ad3-e5a7513bb89b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'bef86f7e-bf1f-4689-b7b3-50c3db6759b5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 39618, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '9879cb7d-ab8e-441e-b03c-704f49cddc8b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'c99b0708-2ef7-4f93-a2e1-1d75833db848', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29601, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '11200145-4068-42a9-b7dd-d95805ceae6c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28405, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'fd42e5fd-f1fc-4447-a120-005ad8e5b786', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '0319cf26-7d6b-4abd-b082-863875de6de9', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 39618, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '5ece5297-ebad-4077-a50c-fdc204c85fd6', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: '6afbdff5-616b-4416-951c-1755fe120656', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 29601, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '89ef1122-3115-4816-8b93-57a0b3ea1c26', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28405, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDI' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxxl', label: 'XXXL' } }, + { name: 'size', value: 'XXXL' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + price: { + id: '459d2acc-a2ad-4c78-af36-e9fe3e480119', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + assets: [], + }, + ], + searchKeywords: {}, + }, + published: true, + hasStagedChanges: false, + }, + key: '82378', + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + lastVariantId: 8, +}; + +export const getCommercetoolstCurrentPriceAmountProductSkuSourceId = + 'M0E20000000ELDF'; + +export const getCommercetoolstCurrentPriceAmountProductPriceSelector = { + country: 'US', + currencyCode: 'USD', + distributionChannels: [], +}; + +export const getCommercetoolstCurrentPriceAmountResult = 37375; + +export const deserializeCouponsSerializedDiscountOrCode = + '{"code":"unit1","status":"APPLIED","type":"voucher","value":37375}'; diff --git a/voucherify-service/test/__unit_tests__/payloads/fixedPrice.spec.payloads.ts b/voucherify-service/test/__unit_tests__/payloads/fixedPrice.spec.payloads.ts new file mode 100644 index 00000000..5bb072bc --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/fixedPrice.spec.payloads.ts @@ -0,0 +1,1490 @@ +export const dataToRunCartActionsBuilder = { + availablePromotions: [], + applicableCoupons: [ + { + status: 'APPLICABLE', + id: '10off', + object: 'voucher', + order: { + source_id: 'fd399771-99ee-4a69-9b87-560f76816a2f', + amount: 92875, + discount_amount: 1000, + total_discount_amount: 1000, + total_amount: 91875, + applied_discount_amount: 1000, + total_applied_discount_amount: 1000, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 1, + amount: 18500, + price: 18500, + subtotal_amount: 18500, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { sku: 'Jeans Cycle dark blue', metadata: {}, override: true }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 2, + amount: 37000, + price: 18500, + subtotal_amount: 37000, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { sku: 'Jeans Cycle dark blue', metadata: {}, override: true }, + }, + { + object: 'order_item', + source_id: 'M0E20000000ELDI', + related_object: 'sku', + product_id: 'prod_0d1abfb839c51910d8', + quantity: 1, + amount: 37375, + price: 37375, + subtotal_amount: 37375, + product: { + id: 'prod_0d1abfb839c51910d8', + source_id: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + name: 'Casual jacket Michael Kors beige', + override: true, + }, + sku: { + id: 'sku_0d1ac1959a4c544f3b', + source_id: 'M0E20000000ELDI', + sku: 'Casual jacket Michael Kors beige', + metadata: {}, + price: 37375, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + applicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + inapplicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + result: { + discount: { + type: 'AMOUNT', + effect: 'APPLY_TO_ORDER', + amount_off: 1000, + is_dynamic: false, + }, + }, + }, + { + status: 'APPLICABLE', + id: '10OFFITEM', + object: 'voucher', + order: { + source_id: 'fd399771-99ee-4a69-9b87-560f76816a2f', + amount: 92875, + discount_amount: 1000, + total_discount_amount: 1000, + total_amount: 91875, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 1, + amount: 18500, + price: 18500, + subtotal_amount: 18500, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { sku: 'Jeans Cycle dark blue', metadata: {}, override: true }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 2, + amount: 37000, + price: 18500, + subtotal_amount: 37000, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { sku: 'Jeans Cycle dark blue', metadata: {}, override: true }, + }, + { + object: 'order_item', + source_id: 'M0E20000000ELDI', + related_object: 'sku', + product_id: 'prod_0d1abfb839c51910d8', + quantity: 1, + amount: 37375, + price: 37375, + subtotal_amount: 37375, + product: { + id: 'prod_0d1abfb839c51910d8', + source_id: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + name: 'Casual jacket Michael Kors beige', + override: true, + }, + sku: { + id: 'sku_0d1ac1959a4c544f3b', + source_id: 'M0E20000000ELDI', + sku: 'Casual jacket Michael Kors beige', + metadata: {}, + price: 37375, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + applicable_to: { + data: [ + { + object: 'sku', + id: 'sku_0d1ac195990c544f39', + source_id: 'M0E20000000ELDG', + product_id: 'prod_0d1abfb839c51910d8', + product_source_id: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + strict: true, + effect: 'APPLY_TO_EVERY', + }, + ], + total: 1, + data_ref: 'data', + object: 'list', + }, + inapplicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + result: { + discount: { + type: 'PERCENT', + effect: 'APPLY_TO_ITEMS', + percent_off: 10, + is_dynamic: false, + }, + }, + }, + { + status: 'APPLICABLE', + id: 'SET100FIXEDPRICE', + object: 'voucher', + order: { + source_id: 'fd399771-99ee-4a69-9b87-560f76816a2f', + amount: 92875, + discount_amount: 1000, + items_discount_amount: 27375, + total_discount_amount: 28375, + total_amount: 64500, + items_applied_discount_amount: 27375, + total_applied_discount_amount: 27375, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 1, + amount: 18500, + price: 18500, + subtotal_amount: 18500, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { sku: 'Jeans Cycle dark blue', metadata: {}, override: true }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EE54', + related_object: 'sku', + quantity: 2, + amount: 37000, + price: 18500, + subtotal_amount: 37000, + product: { name: 'Jeans Cycle dark blue', override: true }, + sku: { sku: 'Jeans Cycle dark blue', metadata: {}, override: true }, + }, + { + object: 'order_item', + source_id: 'M0E20000000ELDI', + related_object: 'sku', + product_id: 'prod_0d1abfb839c51910d8', + quantity: 1, + amount: 37375, + discount_amount: 27375, + applied_discount_amount: 27375, + price: 37375, + subtotal_amount: 10000, + product: { + id: 'prod_0d1abfb839c51910d8', + source_id: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + name: 'Casual jacket Michael Kors beige', + override: true, + }, + sku: { + id: 'sku_0d1ac1959a4c544f3b', + source_id: 'M0E20000000ELDI', + sku: 'Casual jacket Michael Kors beige', + metadata: {}, + price: 37375, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + applicable_to: { + data: [ + { + object: 'sku', + id: 'sku_0d1ac1959a4c544f3b', + source_id: 'M0E20000000ELDI', + product_id: 'prod_0d1abfb839c51910d8', + product_source_id: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + strict: true, + price: 10000, + effect: 'APPLY_TO_EVERY', + order_item_indices: [2], + }, + ], + total: 1, + data_ref: 'data', + object: 'list', + }, + inapplicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + result: { + discount: { + type: 'FIXED', + effect: 'APPLY_TO_ITEMS', + is_dynamic: false, + }, + }, + }, + ], + inapplicableCoupons: [], + newSessionKey: 'ssn_LaXruZ16YofEL1ZZIxXsWBCsxfpFGALb', + totalDiscountAmount: 28375, + productsToAdd: [], + allInapplicableCouponsArePromotionTier: true, + couponsLimit: 5, + cartDiscountApplyMode: 0, + commerceToolsCart: { + type: 'Cart', + id: 'fd399771-99ee-4a69-9b87-560f76816a2f', + version: 82, + versionModifiedAt: '2023-06-22T17:29:59.682Z', + lastMessageSequenceNumber: 1, + createdAt: '2023-06-22T16:55:32.015Z', + lastModifiedAt: '2023-06-22T17:29:59.682Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '75db9a3a-094f-4195-96f0-2834f115997f', + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '75db9a3a-094f-4195-96f0-2834f115997f', + }, + anonymousId: '75db9a3a-094f-4195-96f0-2834f115997f', + lineItems: [ + { + id: '093db141-0a2b-472d-b520-556b8c7ac307', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-22T16:55:32.153Z', + lastModifiedAt: '2023-06-22T16:55:32.153Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + { + id: '883ca605-dcb1-4f83-84e4-d75742bd38f8', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 2, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-22T16:55:34.290Z', + lastModifiedAt: '2023-06-22T16:56:42.168Z', + state: [ + { + quantity: 2, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 33636, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37000, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 3364, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + { + id: '86a2607b-55cb-4ea6-8d00-3cc53c4a2c33', + productId: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + productKey: '82378', + name: { + en: 'Casual jacket Michael Kors beige', + de: 'Freizeitjacke Michael Kors beige', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-casualjacket-CS52DHK2J1-beige', + de: 'michael-kors-freizeitjacke-CS52DHK2J1-beige', + }, + variant: { + id: 8, + sku: 'M0E20000000ELDI', + key: 'M0E20000000ELDI', + prices: [ + { + id: '8b23d5c9-ba2c-496f-922e-41cf588cb41e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: '7fb8f742-6cce-4f0b-a0e5-3682e37ffd43', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '459d2acc-a2ad-4c78-af36-e9fe3e480119', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '7192109e-1d78-47f7-a54a-d3f96660ba57', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '7b772656-2f02-4c9c-9d07-3cede836085e', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '130ed89e-c02a-4742-a802-5070278a20e0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'eb97d983-a04e-4896-b4d2-0d5bb654d4fd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1c99efd4-783c-4d3a-8ad3-e5a7513bb89b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'bef86f7e-bf1f-4689-b7b3-50c3db6759b5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 39618, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '9879cb7d-ab8e-441e-b03c-704f49cddc8b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'c99b0708-2ef7-4f93-a2e1-1d75833db848', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29601, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '11200145-4068-42a9-b7dd-d95805ceae6c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28405, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: 'fd42e5fd-f1fc-4447-a120-005ad8e5b786', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 32890, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '0319cf26-7d6b-4abd-b082-863875de6de9', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 39618, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '5ece5297-ebad-4077-a50c-fdc204c85fd6', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27508, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: '6afbdff5-616b-4416-951c-1755fe120656', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 29601, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '89ef1122-3115-4816-8b93-57a0b3ea1c26', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28405, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDI' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxxl', label: 'XXXL' } }, + { name: 'size', value: 'XXXL' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '459d2acc-a2ad-4c78-af36-e9fe3e480119', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-22T17:23:04.195Z', + lastModifiedAt: '2023-06-22T17:29:59.669Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 33977, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 3398, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: { applied_codes: [] }, + }, + }, + ], + cartState: 'Active', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 91875, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 83431, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 91875, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 0, + fractionDigits: 2, + }, + name: 'coupon', + }, + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 8444, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 8444, + fractionDigits: 2, + }, + }, + country: 'US', + shippingMode: 'Single', + shippingAddress: { country: 'US' }, + shipping: [], + customLineItems: [ + { + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: -1000, + fractionDigits: 2, + }, + id: '188c5daf-1ce0-4eb0-9120-8eebdff7f796', + name: { en: 'Coupon codes discount', de: 'Gutscheincodes rabatt' }, + money: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: -1000, + fractionDigits: 2, + }, + slug: 'Voucher, ', + quantity: 1, + discountedPricePerQuantity: [], + taxCategory: { + typeId: 'tax-category', + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + }, + taxRate: { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'US', + id: 'Uw-uqD9r', + subRates: [], + }, + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: -1000, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: -1000, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 0, + fractionDigits: 2, + }, + }, + perMethodTaxRate: [], + priceMode: 'Standard', + }, + ], + discountCodes: [], + directDiscounts: [], + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [ + '{"code":"10off","status":"APPLIED","type":"voucher","value":1000}', + '{"code":"10OFFITEM","status":"APPLIED","type":"voucher","value":1000}', + '{"code":"SET100FIXEDPRICE","status":"NEW"}', + ], + shippingProductSourceIds: [], + session: 'ssn_LaXruZ16YofEL1ZZIxXsWBCsxfpFGALb', + }, + }, + inventoryMode: 'None', + taxMode: 'Platform', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + deleteDaysAfterLastModification: 90, + refusedGifts: [], + origin: 'Customer', + itemShippingAddresses: [], + totalLineItemQuantity: 4, + }, + taxCategory: { + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + version: 5, + versionModifiedAt: '2023-05-31T16:04:06.867Z', + createdAt: '2023-05-31T16:04:06.656Z', + lastModifiedAt: '2023-05-31T16:04:06.867Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + name: 'coupon', + rates: [ + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'DE', + id: '3SF4_HMk', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'AT', + id: 'lRz7jEYP', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'US', + id: 'Uw-uqD9r', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'NL', + id: 'StiKGNhA', + subRates: [], + }, + ], + }, +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/integrationMappers.spec.payloads.ts b/voucherify-service/test/__unit_tests__/payloads/integrationMappers.spec.payloads.ts new file mode 100644 index 00000000..80252bda --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/integrationMappers.spec.payloads.ts @@ -0,0 +1,1702 @@ +export const getOrderObjectOrder = { + type: 'Order', + id: '3d64a514-1fb3-4345-b817-f683628f17e5', + version: 2, + versionModifiedAt: '2023-06-01T15:06:06.118Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-01T15:05:43.240Z', + lastModifiedAt: '2023-06-01T15:06:06.118Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + }, + anonymousId: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12800, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10756, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12800, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 2044, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 2044, + fractionDigits: 2, + }, + }, + country: 'DE', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 252, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 48, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 48, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard EU', + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4e09f55b-f33b-47a1-a236-a9785c8da88d', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 252, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 48, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + shipping: [], + lineItems: [ + { + id: '6507367a-3e93-473f-a8f1-f1ae6b31095b', + productId: 'd5c95d66-13c8-4729-9248-de8b7544d333', + productKey: '82398', + name: { + en: 'Slip-On Shoes “Olivia” Michael Kors black', + de: 'Slip-On Schuhe „Olivia“ Michael Kors schwarz', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-slip-on-olivia-43S5OLFP1L-black', + de: 'michael-kors-slip-on-olivia-43S5OLFP1L-schwarz', + }, + variant: { + id: 1, + sku: 'M0E20000000ELIV', + key: 'M0E20000000ELIV', + prices: [ + { + id: '60f68239-2e2f-4c75-bff5-6e5405b11b9a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 15625, + fractionDigits: 2, + }, + }, + { + id: '993661a3-6e60-46c8-b71d-a2e57fac94da', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '50ecf507-a22f-4ce1-a8cf-c7f88a7a32a3', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 15625, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: 'f3a18448-4816-4b3e-90a8-6deec8479f9d', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '6a7f9ffe-7da3-42ab-a2f4-222397430db1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'a5322692-49f3-4601-930f-9b5b5fcc28ea', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '4cb6e207-65da-4db3-a84b-5ca805e18b18', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '8e2df96a-90e3-446c-a673-d881f27f4f9b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'deb05b45-9e7f-4740-83db-8a9e96235724', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '28958de9-a79e-42c6-9a0c-5cd7ac0d24f6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '1c307d7a-60e7-4b48-8f21-4e3e5631ef63', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '05c025de-c950-4916-9d1b-3dd903c2e362', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '5f22d547-b831-4124-9556-7844b1af4518', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '8a3ebd9a-834d-43ef-9f27-78f2142cce98', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'b9a901b0-f5d2-424b-b854-b0eafa985ee8', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'be05566e-689a-416b-886f-7a8b31559d00', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082398_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'black', de: 'schwarz' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T15:05:33.874Z', + lastModifiedAt: '2023-06-01T15:05:33.874Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10504, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 1996, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + ], + customLineItems: [], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: 'a221f9e2-091b-43d4-9ab9-2777e270e0a0' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [ + '{"status":"AVAILABLE","value":1250,"banner":"10% off","code":"promo_sBe05RSTPSfUiojdpwueAkTJ","type":"promotion_tier"}', + '{"status":"AVAILABLE","value":0,"banner":"Get 5% for your first order","code":"promo_1c4Q5taDrKynBgA4aTJGyp0p","type":"promotion_tier"}', + ], + shippingProductSourceIds: [], + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + itemShippingAddresses: [], + refusedGifts: [], +}; + +export const getOrderObjectResponse = { + object: 'order', + source_id: '3d64a514-1fb3-4345-b817-f683628f17e5', + created_at: '2023-06-01T15:05:43.240Z', + updated_at: '2023-06-01T15:06:06.118Z', + status: 'PAID', + customer: { + object: 'customer', + source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + address: { + city: 'Kraków', + country: 'DE', + postal_code: '32-000', + line_1: 'Porcelanowa', + }, + phone: '+48796120506', + }, + items: [ + { + source_id: 'M0E20000000ELIV', + related_object: 'sku', + quantity: 1, + price: 12500, + amount: 12500, + product: { name: 'Slip-On Shoes “Olivia” Michael Kors black' }, + sku: { sku: 'Slip-On Shoes “Olivia” Michael Kors black' }, + }, + ], +}; + +export const buildRedeemStackableRequestForVoucherifyOrder = { + id: '2a3c3757-5314-4565-807a-a77509937834', + customer: { + source_id: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + address: { + city: 'Kraków', + country: 'DE', + postal_code: '32-000', + line_1: 'Porcelanowa', + }, + phone: '+48796120506', + }, + customerId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + status: 'PAID', + coupons: [ + { code: 'unit1', status: 'APPLIED', type: 'voucher', value: 29900 }, + ], + items: [ + { + source_id: 'M0E20000000ELIV', + quantity: 2, + price: 12500, + amount: 25000, + name: 'Slip-On Shoes “Olivia” Michael Kors black', + sku: 'Slip-On Shoes “Olivia” Michael Kors black', + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'black', de: 'schwarz' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + }, + { + source_id: 'M0E20000000ELDF', + quantity: 1, + price: 29900, + amount: 29900, + name: 'Casual jacket Michael Kors beige', + sku: 'Casual jacket Michael Kors beige', + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'beige', de: 'beige' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + }, + ], + sessionKey: 'ssn_M8XW3MQwcHa2vRInmEP0lTsFYoN5MIGl', + rawOrder: { + type: 'Order', + id: '2a3c3757-5314-4565-807a-a77509937834', + version: 2, + versionModifiedAt: '2023-06-01T15:46:37.409Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-01T15:46:37.231Z', + lastModifiedAt: '2023-06-01T15:46:37.231Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + }, + anonymousId: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16234, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: 'coupon', + }, + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 8766, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 8766, + fractionDigits: 2, + }, + }, + country: 'DE', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard EU', + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4e09f55b-f33b-47a1-a236-a9785c8da88d', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + shipping: [], + lineItems: [ + { + id: '1ea39080-2b19-45c8-8505-6320015674b0', + productId: 'd5c95d66-13c8-4729-9248-de8b7544d333', + productKey: '82398', + name: { + en: 'Slip-On Shoes “Olivia” Michael Kors black', + de: 'Slip-On Schuhe „Olivia“ Michael Kors schwarz', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-slip-on-olivia-43S5OLFP1L-black', + de: 'michael-kors-slip-on-olivia-43S5OLFP1L-schwarz', + }, + variant: { + id: 1, + sku: 'M0E20000000ELIV', + key: 'M0E20000000ELIV', + prices: [ + { + id: '60f68239-2e2f-4c75-bff5-6e5405b11b9a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 15625, + fractionDigits: 2, + }, + }, + { + id: '993661a3-6e60-46c8-b71d-a2e57fac94da', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '50ecf507-a22f-4ce1-a8cf-c7f88a7a32a3', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 15625, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: 'f3a18448-4816-4b3e-90a8-6deec8479f9d', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '6a7f9ffe-7da3-42ab-a2f4-222397430db1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'a5322692-49f3-4601-930f-9b5b5fcc28ea', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '4cb6e207-65da-4db3-a84b-5ca805e18b18', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '8e2df96a-90e3-446c-a673-d881f27f4f9b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'deb05b45-9e7f-4740-83db-8a9e96235724', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '28958de9-a79e-42c6-9a0c-5cd7ac0d24f6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '1c307d7a-60e7-4b48-8f21-4e3e5631ef63', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '05c025de-c950-4916-9d1b-3dd903c2e362', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '5f22d547-b831-4124-9556-7844b1af4518', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '8a3ebd9a-834d-43ef-9f27-78f2142cce98', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'b9a901b0-f5d2-424b-b854-b0eafa985ee8', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'be05566e-689a-416b-886f-7a8b31559d00', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082398_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'black', de: 'schwarz' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 2, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T15:46:24.051Z', + lastModifiedAt: '2023-06-01T15:46:30.857Z', + state: [ + { + quantity: 2, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 21008, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25000, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 3992, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + { + id: 'd3d54486-6efb-429f-a2c8-536b53589bef', + productId: '253ec97b-f8ac-4a14-94e2-150f5ab0510a', + productKey: '82378', + name: { + en: 'Casual jacket Michael Kors beige', + de: 'Freizeitjacke Michael Kors beige', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-casualjacket-CS52DHK2J1-beige', + de: 'michael-kors-freizeitjacke-CS52DHK2J1-beige', + }, + variant: { + id: 5, + sku: 'M0E20000000ELDF', + key: 'M0E20000000ELDF', + prices: [ + { + id: '9d02d6c5-5793-4a51-a88b-b1bd3c4970e9', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 37375, + fractionDigits: 2, + }, + }, + { + id: 'cb422d9d-7527-4e1d-a0b0-ac1ff30266f5', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'a859d05d-7e10-4436-8585-4dcb2f89184f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37375, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '331e4996-09f3-4bb9-8aad-5aa4f01d1a68', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 24508, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '7be70a12-5b99-4a70-953a-f83042e56619', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '9494781f-e323-4557-bcbe-cf583636a1d0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '1e9fd61b-7a7e-46ad-9bb9-9d34229864f3', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ddd4409a-86f8-415d-9347-88212b24019c', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '4a3da5ee-4f9b-43f0-8e28-0b8ac6df763d', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'fa819a8e-1661-427f-a898-d2064a986dc0', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'f067ab39-6d98-4634-9d93-054dd3b5e076', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '149eb570-9181-4e71-b860-701caa981009', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 26910, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '9355974a-1e96-4f81-8c78-181dc74235d5', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 34011, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: 'fe5c6dd3-1ec0-4061-a516-54f28effb72f', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27807, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'f7948370-f8bf-4b13-b74f-f6a1781e2593', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 31694, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: '90f95175-1c19-4378-9c9e-52113b16862e', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 28704, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082378_1_medium.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: 'CS52DHK2J1 275' }, + { name: 'articleNumberMax', value: '82378' }, + { name: 'matrixId', value: 'M0E20000000ELDF' }, + { name: 'baseId', value: '82378' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'l', label: 'L' } }, + { name: 'size', value: 'L' }, + { + name: 'color', + value: { + key: 'beige', + label: { it: 'beige', de: 'beige', en: 'beige' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'beige', de: 'beige' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'men', label: 'Herren' } }, + { name: 'season', value: 's15' }, + { name: 'isOnStock', value: true }, + ], + assets: [], + }, + price: { + id: 'cebc8f32-160a-4281-9e9c-6225e0916193', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T15:46:29.601Z', + lastModifiedAt: '2023-06-01T15:46:37.103Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 25126, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 4774, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: { + applied_codes: [ + '{"code":"unit1","type":"UNIT","effect":"ADD_MISSING_ITEMS","quantity":1,"totalDiscountQuantity":1}', + ], + }, + }, + }, + ], + customLineItems: [ + { + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + id: 'c79a0c01-0be0-4d3d-aab3-89cfd27ebc6e', + name: { en: 'Coupon codes discount', de: 'Gutscheincodes rabatt' }, + money: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + slug: 'Voucher, ', + quantity: 1, + discountedPricePerQuantity: [], + taxCategory: { + typeId: 'tax-category', + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + }, + taxRate: { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'DE', + id: '3SF4_HMk', + subRates: [], + }, + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: -29900, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 0, + fractionDigits: 2, + }, + }, + perMethodTaxRate: [], + priceMode: 'Standard', + }, + ], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: 'e3f860cd-c5ac-4167-9d4f-a8f612ae0cfd' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [ + '{"code":"unit1","status":"APPLIED","type":"voucher","value":29900}', + ], + shippingProductSourceIds: ['253ec97b-f8ac-4a14-94e2-150f5ab0510a'], + session: 'ssn_M8XW3MQwcHa2vRInmEP0lTsFYoN5MIGl', + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + itemShippingAddresses: [], + refusedGifts: [], + }, +}; + +export const buildRedeemStackableRequestForVoucherifyItems = [ + { + source_id: 'M0E20000000ELIV', + related_object: 'sku', + quantity: 2, + price: 12500, + amount: 25000, + product: { + override: true, + name: 'Slip-On Shoes “Olivia” Michael Kors black', + }, + sku: { + override: true, + sku: 'Slip-On Shoes “Olivia” Michael Kors black', + metadata: {}, + }, + }, + { + source_id: 'M0E20000000ELDF', + related_object: 'sku', + quantity: 1, + price: 29900, + amount: 29900, + product: { override: true, name: 'Casual jacket Michael Kors beige' }, + sku: { + override: true, + sku: 'Casual jacket Michael Kors beige', + metadata: {}, + }, + }, +]; + +export const buildRedeemStackableRequestForVoucherifyResponse = { + session: { type: 'LOCK', key: 'ssn_M8XW3MQwcHa2vRInmEP0lTsFYoN5MIGl' }, + redeemables: [{ object: 'voucher', id: 'unit1' }], + order: { + source_id: '2a3c3757-5314-4565-807a-a77509937834', + amount: 54900, + status: 'PAID', + items: [ + { + source_id: 'M0E20000000ELIV', + related_object: 'sku', + quantity: 2, + price: 12500, + amount: 25000, + product: { + override: true, + name: 'Slip-On Shoes “Olivia” Michael Kors black', + }, + sku: { + override: true, + sku: 'Slip-On Shoes “Olivia” Michael Kors black', + metadata: {}, + }, + }, + { + source_id: 'M0E20000000ELDF', + related_object: 'sku', + quantity: 1, + price: 29900, + amount: 29900, + product: { override: true, name: 'Casual jacket Michael Kors beige' }, + sku: { + override: true, + sku: 'Casual jacket Michael Kors beige', + metadata: {}, + }, + }, + ], + metadata: {}, + }, + customer: { + source_id: 'ef6b0d17-d57c-438b-a50e-793809f5b843', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + address: { + city: 'Kraków', + country: 'DE', + postal_code: '32-000', + line_1: 'Porcelanowa', + }, + phone: '+48796120506', + }, +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/mergeTwoObjectsIntoOne.spec.payload.ts b/voucherify-service/test/__unit_tests__/payloads/mergeTwoObjectsIntoOne.spec.payload.ts new file mode 100644 index 00000000..b936ede6 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/mergeTwoObjectsIntoOne.spec.payload.ts @@ -0,0 +1,19 @@ +export const firstObject = { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', +}; + +export const secondObject = { + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + version: '5', + versionModifiedAt: '2023-05-31T16:04:06.867Z', + createdAt: '2023-05-31T16:04:06.656Z', + lastModifiedAt: '2023-05-31T16:04:06.867Z', + name: 'coupon', +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/order-paid-actions-pailoads.ts b/voucherify-service/test/__unit_tests__/payloads/order-paid-actions-pailoads.ts new file mode 100644 index 00000000..af869dc2 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/order-paid-actions-pailoads.ts @@ -0,0 +1,851 @@ +export const orderMetadataSchemaProperties = [ + 'taxedPrice', + 'shippingInfo', + 'location_id', + 'payment_mean', + 'booking_end_date', + 'booking_start_date', + 'discount_codes', + 'custom_filed_shippingInfo', + 'lineItems', +]; + +export const order = { + type: 'Order', + id: 'b99a510c-a3a3-438f-9cb0-63e668065949', + version: 2, + versionModifiedAt: '2023-06-15T08:22:08.099Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-15T08:20:38.034Z', + lastModifiedAt: '2023-06-15T08:22:08.099Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + paymentInfo: { + payments: [{ id: 'test' }], + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + }, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37000, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 33636, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 37000, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 3364, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 3364, + fractionDigits: 2, + }, + }, + country: 'US', + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Pułkownika Francesco Nullo 34/57', + postalCode: '31-543', + city: 'Kraków', + country: 'US', + phone: '+48796120506', + email: 'piotrzielinski96@yahoo.com', + }, + shipping: [], + lineItems: [ + { + id: 'd52307c5-1cc4-400b-9459-121da2d261e5', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-14T11:48:15.511Z', + lastModifiedAt: '2023-06-14T11:48:15.511Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + { + id: '9d0b608c-f02d-43c2-8417-dcecb43ecc88', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-15T08:20:31.622Z', + lastModifiedAt: '2023-06-15T08:20:31.622Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + ], + customLineItems: [], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: '4760fd36-a68a-45d1-b356-fc2b56fa4f31' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [], + shippingProductSourceIds: [], + shippingInfo: { + shippingMethodName: 'Standard US', + price: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 0, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4ec3254f-4ce4-4338-803d-1e42e6f552c6', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 0, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 0, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 0, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Pułkownika Francesco Nullo 34/57', + postalCode: '31-543', + city: 'Kraków', + country: 'US', + phone: '+48796120506', + email: 'piotrzielinski96@yahoo.com', + }, + itemShippingAddresses: [], + refusedGifts: [], +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/tax-categories.payloads.ts b/voucherify-service/test/__unit_tests__/payloads/tax-categories.payloads.ts new file mode 100644 index 00000000..c6cc9f6c --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/tax-categories.payloads.ts @@ -0,0 +1,47 @@ +export const getCouponTaxCategoryAndUpdateItIfNeededResponse = { + id: '1f84a16d-00b2-42c3-9367-a7a31bf2ebce', + version: 5, + versionModifiedAt: '2023-05-31T16:04:06.867Z', + createdAt: '2023-05-31T16:04:06.656Z', + lastModifiedAt: '2023-05-31T16:04:06.867Z', + lastModifiedBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + }, + createdBy: { clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', isPlatformClient: false }, + name: 'coupon', + rates: [ + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'DE', + id: '3SF4_HMk', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'AT', + id: 'lRz7jEYP', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'US', + id: 'Uw-uqD9r', + subRates: [], + }, + { + name: 'coupon', + amount: 0, + includedInPrice: true, + country: 'NL', + id: 'StiKGNhA', + subRates: [], + }, + ], +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/translateCtOrderToOrder.ts b/voucherify-service/test/__unit_tests__/payloads/translateCtOrderToOrder.ts new file mode 100644 index 00000000..efd8cea0 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/translateCtOrderToOrder.ts @@ -0,0 +1,1127 @@ +export const ctOrder = { + type: 'Order', + id: '320ed90c-dc50-4476-a637-5d2d33a2f011', + version: 2, + versionModifiedAt: '2023-06-15T13:29:08.285Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-15T13:29:08.165Z', + lastModifiedAt: '2023-06-15T13:29:08.165Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + }, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18800, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 17091, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18800, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1709, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1709, + fractionDigits: 2, + }, + }, + country: 'US', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 273, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard US', + price: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4ec3254f-4ce4-4338-803d-1e42e6f552c6', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 273, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Pułkownika Francesco Nullo 34/57', + postalCode: '31-543', + city: 'Kraków', + country: 'US', + phone: '+48796120506', + email: 'piotrzielinski96@yahoo.com', + }, + shipping: [], + lineItems: [ + { + id: '14ee472b-ec90-4d34-a2da-37e4db1bb7ae', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-15T13:28:56.162Z', + lastModifiedAt: '2023-06-15T13:28:56.162Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + ], + customLineItems: [], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: '28b2c6a0-e5d3-4efd-9f44-8b76e26efc41' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [], + shippingProductSourceIds: [], + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Pułkownika Francesco Nullo 34/57', + postalCode: '31-543', + city: 'Kraków', + country: 'US', + phone: '+48796120506', + email: 'piotrzielinski96@yahoo.com', + }, + itemShippingAddresses: [], + refusedGifts: [], +}; + +export const order = { + id: '320ed90c-dc50-4476-a637-5d2d33a2f011', + customer: { + source_id: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + name: 'Piotr Zieliński', + email: 'piotrzielinski96@yahoo.com', + address: { + city: 'Kraków', + country: 'US', + postal_code: '31-543', + line_1: 'Pułkownika Francesco Nullo 34/57', + }, + phone: '+48796120506', + }, + customerId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + status: 'PAID', + coupons: [], + items: [ + { + source_id: 'M0E20000000EE54', + quantity: 1, + price: 18500, + amount: 18500, + name: 'Jeans Cycle dark blue', + sku: 'Jeans Cycle dark blue', + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + }, + ], + rawOrder: { + type: 'Order', + id: '320ed90c-dc50-4476-a637-5d2d33a2f011', + version: 2, + versionModifiedAt: '2023-06-15T13:29:08.285Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-15T13:29:08.165Z', + lastModifiedAt: '2023-06-15T13:29:08.165Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + }, + anonymousId: '82810cfe-afa6-4806-94ca-1da6e5beae3d', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18800, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 17091, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18800, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1709, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1709, + fractionDigits: 2, + }, + }, + country: 'US', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 273, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.1, + amount: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27, + fractionDigits: 2, + }, + name: '10% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard US', + price: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4ec3254f-4ce4-4338-803d-1e42e6f552c6', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 273, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 300, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 27, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Pułkownika Francesco Nullo 34/57', + postalCode: '31-543', + city: 'Kraków', + country: 'US', + phone: '+48796120506', + email: 'piotrzielinski96@yahoo.com', + }, + shipping: [], + lineItems: [ + { + id: '14ee472b-ec90-4d34-a2da-37e4db1bb7ae', + productId: '73ce4f06-80ad-48e6-8b36-e7102fdc8709', + productKey: '81338', + name: { en: 'Jeans Cycle dark blue', de: 'Jeans Cycle dunkelblau' }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'cycle-jeans-T225B0440880-darkblue', + de: 'cycle-jeans-T225B0440880-dunkelblau', + }, + variant: { + id: 1, + sku: 'M0E20000000EE54', + key: 'M0E20000000EE54', + prices: [ + { + id: 'cc49dc1d-515b-4bf7-9a49-e0da4266d9dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 18500, + fractionDigits: 2, + }, + }, + { + id: '3d14867a-66d2-4766-a05d-b66bfd258121', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: '9e7124c7-fba6-4fe3-9b13-1262a74bf054', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12131, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '268bd270-188d-480e-91ce-62f5ce36cd44', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '79e2adaf-1f35-44cf-b6b6-959730676fe2', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: '4a76b969-9927-4499-95f3-70ba1986d792', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 14800, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '85475aaa-0a2a-4469-a766-1f214477c7c6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: 'ea15846d-304b-492c-bf9a-4f203d3ce218', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: '1f7c4b96-faa9-4042-b7b7-a06cc00659dd', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: 'e7c79b01-130c-4e3b-8b9e-0e014a18f885', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: 'bcdbfe78-1906-445d-882e-cf4431eb84df', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '6a68bc68-3fe4-42fe-aa84-eb9efe201a23', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16132, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '33958888-3989-49db-b64e-124fd35aacc4', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 20165, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '76ed4a2f-ea55-4d05-8393-1616dca4c679', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16280, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'dae9fff7-75f0-479e-83a7-d4465b10bcdc', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13468, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'b22ac8dc-c357-45d9-97d5-9d7f4aeff564', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13616, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/081338_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { + name: 'articleNumberManufacturer', + value: 'WPT492 T225 B044 0880 001', + }, + { name: 'articleNumberMax', value: '81338' }, + { name: 'matrixId', value: 'M0E20000000EE54' }, + { name: 'baseId', value: '81338' }, + { name: 'designer', value: { key: 'cycle', label: 'Cycle' } }, + { name: 'madeInItaly', value: { key: 'yes', label: 'yes' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: '24' }, + { + name: 'color', + value: { + key: 'blue', + label: { de: 'blau', it: 'blu', en: 'blue' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'dark blue', de: 'dunkelblau' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: '1728926f-e928-4eba-8aab-8338406b0f38', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + country: 'US', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '10% incl.', + amount: 0.1, + includedInPrice: true, + country: 'US', + id: '_JMEWRo5', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-15T13:28:56.162Z', + lastModifiedAt: '2023-06-15T13:28:56.162Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16818, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 18500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 1682, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { + typeId: 'type', + id: '69840f60-bd39-4958-b3fc-85bf6c492791', + }, + fields: {}, + }, + }, + ], + customLineItems: [], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: '28b2c6a0-e5d3-4efd-9f44-8b76e26efc41' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [], + shippingProductSourceIds: [], + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Pułkownika Francesco Nullo 34/57', + postalCode: '31-543', + city: 'Kraków', + country: 'US', + phone: '+48796120506', + email: 'piotrzielinski96@yahoo.com', + }, + itemShippingAddresses: [], + refusedGifts: [], + }, +}; diff --git a/voucherify-service/test/__unit_tests__/payloads/voucherify-connector.service.spec.paylaods.ts b/voucherify-service/test/__unit_tests__/payloads/voucherify-connector.service.spec.paylaods.ts new file mode 100644 index 00000000..08ecb87c --- /dev/null +++ b/voucherify-service/test/__unit_tests__/payloads/voucherify-connector.service.spec.paylaods.ts @@ -0,0 +1,1294 @@ +export const validateStackableVouchersRequest = { + redeemables: [{ object: 'voucher', id: 'TEST_VOUCHER_1' }], + session: { type: 'LOCK' }, + order: { + source_id: '9e9d98f0-0cf7-4487-95d8-56c1478d7a17', + customer: { source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4' }, + amount: 19000, + discount_amount: 0, + items: [ + { + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + price: 9500, + amount: 9500, + product: { + override: true, + name: 'Long sleeve T-Shirt Michael Kors black', + }, + sku: { + override: true, + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + }, + }, + { + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + price: 9500, + amount: 9500, + product: { + override: true, + name: 'Long sleeve T-Shirt Michael Kors black', + }, + sku: { + override: true, + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + }, + }, + ], + }, + customer: { source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4' }, +}; + +export const validateStackableResponse = { + valid: true, + redeemables: [ + { + status: 'APPLICABLE', + id: 'TEST_VOUCHER_1', + object: 'voucher', + order: { + source_id: '9e9d98f0-0cf7-4487-95d8-56c1478d7a17', + amount: 19000, + discount_amount: 190, + total_discount_amount: 190, + total_amount: 18810, + applied_discount_amount: 190, + total_applied_discount_amount: 190, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + applicable_to: { + data: [], + total: 0, + data_ref: 'data', + object: 'list', + }, + inapplicable_to: { + data: [], + total: 0, + data_ref: 'data', + object: 'list', + }, + result: { + discount: { + type: 'PERCENT', + effect: 'APPLY_TO_ORDER', + percent_off: 1, + is_dynamic: false, + }, + }, + }, + ], + order: { + source_id: '9e9d98f0-0cf7-4487-95d8-56c1478d7a17', + amount: 19000, + discount_amount: 190, + total_discount_amount: 190, + total_amount: 18810, + applied_discount_amount: 190, + total_applied_discount_amount: 190, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + tracking_id: 'track_6X46Hjvb5Rj2MggH3LHIGeRSVuK9akl2p3I8NBfSHBdThHEgOtkYgw==', + session: { + key: 'ssn_DFGC91oKjXKz47lap6S6Wo0C4rpG37qc', + type: 'LOCK', + ttl: 7, + ttl_unit: 'DAYS', + }, +}; + +export const getAvailablePromotionsCart = { + id: '9e9d98f0-0cf7-4487-95d8-56c1478d7a17', + anonymousId: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + sessionKey: 'ssn_DFGC91oKjXKz47lap6S6Wo0C4rpG37qc', + coupons: [ + { code: 'TEST_VOUCHER_1', status: 'APPLIED', type: 'voucher', value: 190 }, + ], + items: [ + { + source_id: 'M0E20000000EL2R', + quantity: 1, + price: 9500, + amount: 9500, + name: 'Long sleeve T-Shirt Michael Kors black', + sku: 'Long sleeve T-Shirt Michael Kors black', + attributes: [ + { name: 'articleNumberManufacturer', value: 'MS55KGW1UK 001' }, + { name: 'articleNumberMax', value: '82351' }, + { name: 'matrixId', value: 'M0E20000000EL2R' }, + { name: 'baseId', value: '82351' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: 'XXS' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'black', de: 'schwarz' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + }, + { + source_id: 'M0E20000000EL2R', + quantity: 1, + price: 9500, + amount: 9500, + name: 'Long sleeve T-Shirt Michael Kors black', + sku: 'Long sleeve T-Shirt Michael Kors black', + attributes: [ + { name: 'articleNumberManufacturer', value: 'MS55KGW1UK 001' }, + { name: 'articleNumberMax', value: '82351' }, + { name: 'matrixId', value: 'M0E20000000EL2R' }, + { name: 'baseId', value: '82351' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: 'xxs', label: 'XXS' } }, + { name: 'size', value: 'XXS' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'black', de: 'schwarz' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + }, + ], +}; + +export const getAvailablePromotionsValidateWith = { + customer: { + id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + }, + order: { + source_id: '9e9d98f0-0cf7-4487-95d8-56c1478d7a17', + items: [ + { + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + price: 9500, + amount: 9500, + product: { + override: true, + name: 'Long sleeve T-Shirt Michael Kors black', + }, + sku: { + override: true, + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + }, + }, + { + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + price: 9500, + amount: 9500, + product: { + override: true, + name: 'Long sleeve T-Shirt Michael Kors black', + }, + sku: { + override: true, + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + }, + }, + ], + amount: 19000, + }, +}; + +export const getAvailablePromotionsResponseObject = { + valid: true, + tracking_id: 'track_6X46Hjvb5Rj2MggH3LHIGeRSVuK9akl2p3I8NBfSHBdThHEgOtkYgw==', + promotions: [ + { + valid: true, + applicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + inapplicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + tracking_id: + 'track_6X46Hjvb5Rj2MggH3LHIGeRSVuK9akl2p3I8NBfSHBdThHEgOtkYgw==', + order: { + source_id: '9e9d98f0-0cf7-4487-95d8-56c1478d7a17', + amount: 19000, + discount_amount: 1900, + total_discount_amount: 1900, + total_amount: 17100, + applied_discount_amount: 1900, + total_applied_discount_amount: 1900, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + id: 'promo_sBe05RSTPSfUiojdpwueAkTJ', + name: '10%off', + banner: '10% off', + discount: { + type: 'PERCENT', + effect: 'APPLY_TO_ORDER', + percent_off: 10, + is_dynamic: false, + }, + campaign: { + id: 'camp_jgmwojTpC7Qr0rURCoIP7FGy', + start_date: null, + expiration_date: null, + active: true, + object: 'campaign', + }, + hierarchy: 1, + discount_amount: 1900, + applied_discount_amount: 1900, + metadata: {}, + object: 'promotion_tier', + category_id: null, + categories: [], + }, + { + valid: true, + applicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + inapplicable_to: { data: [], total: 0, data_ref: 'data', object: 'list' }, + tracking_id: + 'track_6X46Hjvb5Rj2MggH3LHIGeRSVuK9akl2p3I8NBfSHBdThHEgOtkYgw==', + order: { + source_id: '9e9d98f0-0cf7-4487-95d8-56c1478d7a17', + amount: 19000, + discount_amount: 0, + total_discount_amount: 0, + total_amount: 19000, + applied_discount_amount: 0, + total_applied_discount_amount: 0, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { + name: 'Long sleeve T-Shirt Michael Kors black', + override: true, + }, + sku: { + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + override: true, + }, + }, + ], + metadata: {}, + customer_id: null, + referrer_id: null, + object: 'order', + }, + id: 'promo_1c4Q5taDrKynBgA4aTJGyp0p', + name: 'One time for new customer', + banner: 'Get 5% for your first order', + discount: { + type: 'PERCENT', + effect: 'APPLY_TO_ORDER', + percent_off: 0, + is_dynamic: false, + }, + campaign: { + id: 'camp_6aTNiY7o6d2o6C3GSx3yjU33', + start_date: null, + expiration_date: null, + active: true, + object: 'campaign', + }, + hierarchy: 1, + discount_amount: 0, + applied_discount_amount: 0, + metadata: {}, + object: 'promotion_tier', + category_id: null, + categories: [], + }, + ], +}; + +export const redeemStackableVouchersRequest = { + session: { type: 'LOCK', key: 'ssn_DFGC91oKjXKz47lap6S6Wo0C4rpG37qc' }, + redeemables: [{ object: 'voucher', id: 'TEST_VOUCHER_1' }], + order: { + source_id: 'ba843e06-f37d-4372-8dac-c68815fb01a9', + amount: 19000, + status: 'PAID', + items: [ + { + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + price: 9500, + amount: 9500, + product: { + override: true, + name: 'Long sleeve T-Shirt Michael Kors black', + }, + sku: { + override: true, + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + }, + }, + { + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + price: 9500, + amount: 9500, + product: { + override: true, + name: 'Long sleeve T-Shirt Michael Kors black', + }, + sku: { + override: true, + sku: 'Long sleeve T-Shirt Michael Kors black', + metadata: {}, + }, + }, + ], + metadata: {}, + }, + customer: { + source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + address: { + city: 'Kraków', + country: 'DE', + postal_code: '32-000', + line_1: 'Porcelanowa', + }, + phone: '+48796120506', + }, +}; + +export const redeemStackableVouchersResponse = { + redemptions: [ + { + id: 'r_0cff8ae8c782685c22', + customer_id: 'cust_4exKXpuLjfuAfjdaqOrZBluF', + tracking_id: + 'track_6X46Hjvb5Rj2MggH3LHIGeRSVuK9akl2p3I8NBfSHBdThHEgOtkYgw==', + date: '2023-06-01T13:53:24.766Z', + order: { + id: 'ord_FFqTHAnv7h7tSlyYo5pdltld', + source_id: 'ba843e06-f37d-4372-8dac-c68815fb01a9', + status: 'PAID', + customer_id: 'cust_4exKXpuLjfuAfjdaqOrZBluF', + referrer_id: null, + amount: 19000, + discount_amount: 190, + applied_discount_amount: 190, + total_discount_amount: 190, + total_applied_discount_amount: 190, + total_amount: 18810, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + }, + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + }, + ], + metadata: {}, + object: 'order', + }, + customer: { + id: 'cust_4exKXpuLjfuAfjdaqOrZBluF', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + object: 'customer', + }, + result: 'SUCCESS', + voucher: { + id: 'v_vhcSApY3xZHEVxebI3Gi2BMdnqvekcEP', + code: 'TEST_VOUCHER_1', + discount: { type: 'PERCENT', percent_off: 1 }, + type: 'DISCOUNT_VOUCHER', + campaign: null, + campaign_id: null, + is_referral_code: false, + created_at: '2023-05-04T16:45:31.982Z', + object: 'voucher', + }, + object: 'redemption', + }, + ], + order: { + id: 'ord_FFqTHAnv7h7tSlyYo5pdltld', + source_id: 'ba843e06-f37d-4372-8dac-c68815fb01a9', + created_at: '2023-06-01T13:53:24.723Z', + updated_at: null, + status: 'PAID', + amount: 19000, + discount_amount: 190, + total_discount_amount: 190, + total_amount: 18810, + applied_discount_amount: 190, + total_applied_discount_amount: 190, + items: [ + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { name: 'Long sleeve T-Shirt Michael Kors black' }, + sku: { sku: 'Long sleeve T-Shirt Michael Kors black', metadata: {} }, + }, + { + object: 'order_item', + source_id: 'M0E20000000EL2R', + related_object: 'sku', + quantity: 1, + amount: 9500, + price: 9500, + subtotal_amount: 9500, + product: { name: 'Long sleeve T-Shirt Michael Kors black' }, + sku: { sku: 'Long sleeve T-Shirt Michael Kors black', metadata: {} }, + }, + ], + metadata: {}, + customer: { id: 'cust_4exKXpuLjfuAfjdaqOrZBluF', object: 'customer' }, + customer_id: 'cust_4exKXpuLjfuAfjdaqOrZBluF', + referrer_id: null, + object: 'order', + redemptions: { + r_0cff8ae8c782685c22: { + date: '2023-06-01T13:53:24.766Z', + related_object_type: 'voucher', + related_object_id: 'v_vhcSApY3xZHEVxebI3Gi2BMdnqvekcEP', + }, + }, + }, +}; + +export const createOrderOrderObject = { + id: 'c7d08c16-8a75-42dd-93eb-802861128a1d', + customer: { + source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + address: { + city: 'Kraków', + country: 'DE', + postal_code: '32-000', + line_1: 'Porcelanowa', + }, + phone: '+48796120506', + }, + customerId: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + status: 'PAID', + coupons: [], + items: [ + { + source_id: 'M0E20000000ELIV', + quantity: 1, + price: 12500, + amount: 12500, + name: 'Slip-On Shoes “Olivia” Michael Kors black', + sku: 'Slip-On Shoes “Olivia” Michael Kors black', + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { name: 'colorFreeDefinition', value: { en: 'black', de: 'schwarz' } }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + }, + ], + rawOrder: { + type: 'Order', + id: 'c7d08c16-8a75-42dd-93eb-802861128a1d', + version: 2, + versionModifiedAt: '2023-06-01T14:11:18.654Z', + lastMessageSequenceNumber: 2, + createdAt: '2023-06-01T14:11:18.501Z', + lastModifiedAt: '2023-06-01T14:11:18.501Z', + lastModifiedBy: { + isPlatformClient: true, + user: { typeId: 'user', id: 'eb521f4b-5a8b-4958-ba9c-93dd29d7c363' }, + }, + createdBy: { + clientId: '3cx8PEBHMZQ1oHAYF1eoDs8i', + isPlatformClient: false, + anonymousId: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + }, + anonymousId: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12800, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10756, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12800, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 2044, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 2044, + fractionDigits: 2, + }, + }, + country: 'DE', + taxedShippingPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 252, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + taxPortions: [ + { + rate: 0.19, + amount: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 48, + fractionDigits: 2, + }, + name: '19% incl.', + }, + ], + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 48, + fractionDigits: 2, + }, + }, + orderState: 'Open', + paymentState: 'Paid', + syncInfo: [], + returnInfo: [], + taxMode: 'Platform', + inventoryMode: 'None', + taxRoundingMode: 'HalfEven', + taxCalculationMode: 'LineItemLevel', + origin: 'Customer', + shippingMode: 'Single', + shippingInfo: { + shippingMethodName: 'Standard EU', + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + shippingRate: { + price: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + freeAbove: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 20000, + fractionDigits: 2, + }, + tiers: [], + }, + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + taxCategory: { + typeId: 'tax-category', + id: '72f8835b-53ae-4d3b-bd3b-a17dafd26c99', + }, + deliveries: [], + shippingMethod: { + typeId: 'shipping-method', + id: '4e09f55b-f33b-47a1-a236-a9785c8da88d', + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 252, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 300, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 48, + fractionDigits: 2, + }, + }, + shippingMethodState: 'MatchesCart', + }, + shippingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + shipping: [], + lineItems: [ + { + id: 'f7694139-4230-4e6e-8504-adf7bd4d245c', + productId: 'd5c95d66-13c8-4729-9248-de8b7544d333', + productKey: '82398', + name: { + en: 'Slip-On Shoes “Olivia” Michael Kors black', + de: 'Slip-On Schuhe „Olivia“ Michael Kors schwarz', + }, + productType: { + typeId: 'product-type', + id: 'f084fa3e-01bd-4ee2-8c8a-9a18764e8841', + version: 1, + }, + productSlug: { + en: 'michael-kors-slip-on-olivia-43S5OLFP1L-black', + de: 'michael-kors-slip-on-olivia-43S5OLFP1L-schwarz', + }, + variant: { + id: 1, + sku: 'M0E20000000ELIV', + key: 'M0E20000000ELIV', + prices: [ + { + id: '60f68239-2e2f-4c75-bff5-6e5405b11b9a', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 15625, + fractionDigits: 2, + }, + }, + { + id: '993661a3-6e60-46c8-b71d-a2e57fac94da', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: '50ecf507-a22f-4ce1-a8cf-c7f88a7a32a3', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 15625, + fractionDigits: 2, + }, + country: 'US', + }, + { + id: 'f3a18448-4816-4b3e-90a8-6deec8479f9d', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 10246, + fractionDigits: 2, + }, + customerGroup: { + typeId: 'customer-group', + id: '0c826f37-d10d-439c-bf46-ce9e17deab74', + }, + }, + { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + { + id: '6a7f9ffe-7da3-42ab-a2f4-222397430db1', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'IT', + }, + { + id: 'a5322692-49f3-4601-930f-9b5b5fcc28ea', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'GB', + }, + { + id: '4cb6e207-65da-4db3-a84b-5ca805e18b18', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'd4e8a815-830f-43bf-8506-77de565bf3f3', + }, + }, + { + id: '8e2df96a-90e3-446c-a673-d881f27f4f9b', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '68506b79-8d88-47ab-b77d-5b54cb6eec03', + }, + }, + { + id: 'deb05b45-9e7f-4740-83db-8a9e96235724', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: '075f15ed-e66a-49a6-8d61-786145ac1a7a', + }, + }, + { + id: '28958de9-a79e-42c6-9a0c-5cd7ac0d24f6', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'ffecbfe5-a622-4e1f-8704-ac328d94cfb5', + }, + }, + { + id: '1c307d7a-60e7-4b48-8f21-4e3e5631ef63', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'DE', + channel: { + typeId: 'channel', + id: 'c9958b11-6151-433e-83f3-4424e6fa4ac2', + }, + }, + { + id: '05c025de-c950-4916-9d1b-3dd903c2e362', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 12625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '2259d32b-2c7a-4941-842a-d81fb3c878e7', + }, + }, + { + id: '5f22d547-b831-4124-9556-7844b1af4518', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 16250, + fractionDigits: 2, + }, + channel: { + typeId: 'channel', + id: '0399ae91-a3be-40ef-90cc-11ac36cf8a62', + }, + }, + { + id: '8a3ebd9a-834d-43ef-9f27-78f2142cce98', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 11625, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'bcaecbbd-bf7c-4f9f-9b4b-c0cbd6240d68', + }, + }, + { + id: 'b9a901b0-f5d2-424b-b854-b0eafa985ee8', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13500, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: '3def0285-22e1-401c-916b-56efb977f18e', + }, + }, + { + id: 'be05566e-689a-416b-886f-7a8b31559d00', + value: { + type: 'centPrecision', + currencyCode: 'USD', + centAmount: 13375, + fractionDigits: 2, + }, + country: 'US', + channel: { + typeId: 'channel', + id: 'db86818a-f58b-4df4-8b61-46de85d13a00', + }, + }, + ], + images: [ + { + url: 'https://s3-eu-west-1.amazonaws.com/commercetools-maximilian/products/082398_1_large.jpg', + dimensions: { w: 0, h: 0 }, + }, + ], + attributes: [ + { name: 'articleNumberManufacturer', value: '43S5OLFP1L 001' }, + { name: 'articleNumberMax', value: '82398' }, + { name: 'matrixId', value: 'M0E20000000ELIV' }, + { name: 'baseId', value: '82398' }, + { + name: 'designer', + value: { key: 'michaelkors', label: 'Michael Kors' }, + }, + { name: 'madeInItaly', value: { key: 'no', label: 'no' } }, + { name: 'commonSize', value: { key: '35', label: '35' } }, + { name: 'size', value: '5' }, + { + name: 'color', + value: { + key: 'black', + label: { en: 'black', it: 'nero', de: 'schwarz' }, + }, + }, + { + name: 'colorFreeDefinition', + value: { en: 'black', de: 'schwarz' }, + }, + { name: 'style', value: { key: 'sporty', label: 'sporty' } }, + { name: 'gender', value: { key: 'women', label: 'Damen' } }, + { name: 'season', value: 's15' }, + ], + assets: [], + }, + price: { + id: 'e2561b96-18dc-45fd-8251-88949627fbde', + value: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + country: 'DE', + }, + quantity: 1, + discountedPricePerQuantity: [], + taxRate: { + name: '19% incl.', + amount: 0.19, + includedInPrice: true, + country: 'DE', + id: 'n9ENOU2i', + subRates: [], + }, + perMethodTaxRate: [], + addedAt: '2023-06-01T14:10:58.964Z', + lastModifiedAt: '2023-06-01T14:10:58.964Z', + state: [ + { + quantity: 1, + state: { + typeId: 'state', + id: 'ad3930da-ae5c-4c7e-8ae0-2dfb99d52f50', + }, + }, + ], + priceMode: 'Platform', + lineItemMode: 'Standard', + totalPrice: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + taxedPrice: { + totalNet: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 10504, + fractionDigits: 2, + }, + totalGross: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 12500, + fractionDigits: 2, + }, + totalTax: { + type: 'centPrecision', + currencyCode: 'EUR', + centAmount: 1996, + fractionDigits: 2, + }, + }, + taxedPricePortions: [], + custom: { + type: { typeId: 'type', id: '69840f60-bd39-4958-b3fc-85bf6c492791' }, + fields: {}, + }, + }, + ], + customLineItems: [], + transactionFee: true, + discountCodes: [], + directDiscounts: [], + cart: { typeId: 'cart', id: 'd77489c3-4300-4f22-bea4-71e5d5fc587a' }, + custom: { + type: { typeId: 'type', id: '22ec137d-4ea0-468f-98e9-f9289ca8bb01' }, + fields: { + couponsLimit: 5, + discount_codes: [ + '{"status":"AVAILABLE","value":1250,"banner":"10% off","code":"promo_sBe05RSTPSfUiojdpwueAkTJ","type":"promotion_tier"}', + '{"status":"AVAILABLE","value":0,"banner":"Get 5% for your first order","code":"promo_1c4Q5taDrKynBgA4aTJGyp0p","type":"promotion_tier"}', + ], + shippingProductSourceIds: [], + }, + }, + billingAddress: { + firstName: 'Piotr', + lastName: 'Zieliński', + streetName: 'Porcelanowa', + postalCode: '32-000', + city: 'Kraków', + country: 'DE', + phone: '+48796120506', + email: 'piotrzielinski@gmail.com', + }, + itemShippingAddresses: [], + refusedGifts: [], + }, +}; + +export const createOrderItems = [ + { + source_id: 'M0E20000000ELIV', + related_object: 'sku', + quantity: 1, + price: 12500, + amount: 12500, + product: { + override: true, + name: 'Slip-On Shoes “Olivia” Michael Kors black', + }, + sku: { + override: true, + sku: 'Slip-On Shoes “Olivia” Michael Kors black', + metadata: {}, + }, + }, +]; +export const createOrderOrderCreateObject = { + source_id: 'c7d08c16-8a75-42dd-93eb-802861128a1d', + amount: 12500, + discount_amount: 0, + items: [ + { + source_id: 'M0E20000000ELIV', + related_object: 'sku', + quantity: 1, + price: 12500, + amount: 12500, + product: { + override: true, + name: 'Slip-On Shoes “Olivia” Michael Kors black', + }, + sku: { + override: true, + sku: 'Slip-On Shoes “Olivia” Michael Kors black', + metadata: {}, + }, + }, + ], + metadata: {}, + customer: { + source_id: '03970ec0-fa17-45d6-a19f-208ee3fcb1a4', + name: 'Piotr Zieliński', + email: 'piotrzielinski@gmail.com', + address: { + city: 'Kraków', + country: 'DE', + postal_code: '32-000', + line_1: 'Porcelanowa', + }, + phone: '+48796120506', + }, + status: 'PAID', +}; diff --git a/voucherify-service/test/__unit_tests__/replaceCodesWithInapplicableCodes.spec.ts b/voucherify-service/test/__unit_tests__/replaceCodesWithInapplicableCodes.spec.ts new file mode 100644 index 00000000..283ec985 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/replaceCodesWithInapplicableCodes.spec.ts @@ -0,0 +1,24 @@ +import { replaceCodesWithInapplicableCoupons } from '../../src/integration/utils/replaceCodesWithInapplicableCoupons'; + +describe('replaceCodesWithInapplicableCoupons', () => { + it('should map code to result', async () => { + expect( + replaceCodesWithInapplicableCoupons(['test'], 'errorMessage'), + ).toEqual([ + { + status: 'INAPPLICABLE', + id: 'test', + object: 'voucher', + result: { + error: { + code: 404, + key: 'not_found', + message: 'errorMessage', + details: `Cannot find voucher with id test`, + request_id: undefined, + }, + }, + }, + ]); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/request-json-file-logger.service.spec.ts b/voucherify-service/test/__unit_tests__/request-json-file-logger.service.spec.ts new file mode 100644 index 00000000..87bdba21 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/request-json-file-logger.service.spec.ts @@ -0,0 +1,21 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { VoucherifyConnectorService } from '../../src/voucherify/voucherify-connector.service'; +import { Logger } from '@nestjs/common'; +import { RequestJsonFileLogger } from '../../src/misc/request-json-file-logger'; + +describe('VoucherifyConnectorService', () => { + let service: RequestJsonFileLogger; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [RequestJsonFileLogger, Logger], + }).compile(); + + service = module.get(RequestJsonFileLogger); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + service.log('label', {}, {}); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/sleep.spec.ts b/voucherify-service/test/__unit_tests__/sleep.spec.ts new file mode 100644 index 00000000..e1adaae0 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/sleep.spec.ts @@ -0,0 +1,9 @@ +import sleep from '../../src/misc/sleep'; + +describe('SleepTest', () => { + it('should be defined', async () => { + const result = await sleep(1); + expect(sleep).toBeDefined(); + expect(result).toBeNull(); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/tax-categories.service.spec.ts b/voucherify-service/test/__unit_tests__/tax-categories.service.spec.ts new file mode 100644 index 00000000..93d566c1 --- /dev/null +++ b/voucherify-service/test/__unit_tests__/tax-categories.service.spec.ts @@ -0,0 +1,59 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { VoucherifyConnectorService } from '../../src/voucherify/voucherify-connector.service'; +import { Logger } from '@nestjs/common'; +import { TaxCategoriesService } from '../../src/commercetools/tax-categories/tax-categories.service'; +import { CommercetoolsConnectorService } from '../../src/commercetools/commercetools-connector.service'; +import { getCommerceToolsConnectorServiceMockWithProductResponse } from '../__mocks__/commerce-tools-connector.service'; +import { MockFunctionMetadata, ModuleMocker } from 'jest-mock'; +import { getCouponTaxCategoryAndUpdateItIfNeededResponse } from './payloads/tax-categories.payloads'; +const moduleMocker = new ModuleMocker(global); + +describe('VoucherifyConnectorService', () => { + let service: TaxCategoriesService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [ + TaxCategoriesService, + { + provide: CommercetoolsConnectorService, + useValue: + getCommerceToolsConnectorServiceMockWithProductResponse({ + sku: 'SKU_ID', + price: 10, + id: 'PRODUCT_ID', + }) || {}, + }, + Logger, + ], + }) + .useMocker((token) => { + if (typeof token === 'function') { + const mockMetadata = moduleMocker.getMetadata( + token, + ) as MockFunctionMetadata; + const Mock = moduleMocker.generateFromMetadata(mockMetadata); + return new Mock(); + } + }) + .compile(); + + service = module.get(TaxCategoriesService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); + + it('should get coupon tax category', async () => { + const response = await service.getCouponTaxCategoryAndUpdateItIfNeeded( + 'US', + ); + expect(response).toEqual(getCouponTaxCategoryAndUpdateItIfNeededResponse); + }); + + it('should get coupon tax category already configured', async () => { + const response = await service.configureCouponTaxCategory(); + expect(response).toEqual(getCouponTaxCategoryAndUpdateItIfNeededResponse); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/translateCtOrderToOrder.spec.ts b/voucherify-service/test/__unit_tests__/translateCtOrderToOrder.spec.ts new file mode 100644 index 00000000..572d534a --- /dev/null +++ b/voucherify-service/test/__unit_tests__/translateCtOrderToOrder.spec.ts @@ -0,0 +1,9 @@ +import { translateCtOrderToOrder } from '../../src/commercetools/utils/mappers/translateCtOrderToOrder'; +import { ctOrder, order } from './payloads/translateCtOrderToOrder'; + +describe('translateCtOrderToOrder Test', () => { + it('should map translateCtOrderToOrder correctly', () => { + const result = translateCtOrderToOrder(ctOrder as any); + expect(result).toEqual(order); + }); +}); diff --git a/voucherify-service/test/__unit_tests__/voucherify-connector.service.spec.ts b/voucherify-service/test/__unit_tests__/voucherify-connector.service.spec.ts new file mode 100644 index 00000000..50b0aa8a --- /dev/null +++ b/voucherify-service/test/__unit_tests__/voucherify-connector.service.spec.ts @@ -0,0 +1,141 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { VoucherifyConnectorService } from '../../src/voucherify/voucherify-connector.service'; +import { ConfigModule, ConfigService } from '@nestjs/config'; +import { Logger } from '@nestjs/common'; +import { RequestJsonLogger } from '../../src/configs/requestJsonLogger'; +import { + createOrderItems, + createOrderOrderCreateObject, + createOrderOrderObject, + getAvailablePromotionsCart, + getAvailablePromotionsResponseObject, + getAvailablePromotionsValidateWith, + redeemStackableVouchersRequest, + redeemStackableVouchersResponse, + validateStackableResponse, + validateStackableVouchersRequest, +} from './payloads/voucherify-connector.service.spec.paylaods'; + +describe('VoucherifyConnectorService', () => { + let service: VoucherifyConnectorService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [ConfigModule.forRoot()], + providers: [ + VoucherifyConnectorService, + ConfigService, + Logger, + RequestJsonLogger, + ], + }).compile(); + + service = module.get( + VoucherifyConnectorService, + ); + + // service.getClient = jest.fn().mockResolvedValue({}); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); + + it('should check if validateStackable was called 1 time', async () => { + const validateStackable = jest + .fn() + .mockReturnValue(validateStackableResponse); + + service.getClient = jest.fn().mockReturnValue({ + validations: { + validateStackable, + }, + }); + + const response_ = await service.validateStackableVouchers( + validateStackableVouchersRequest as any, + ); + + expect(validateStackable).toBeCalledTimes(1); + expect(response_).toMatchObject(validateStackableResponse); + }); + + it('should check if releaseValidationSession was called 3 times', async () => { + const releaseValidationSession = jest.fn().mockResolvedValue(undefined); + + service.getClient = jest.fn().mockReturnValue({ + vouchers: { + releaseValidationSession, + }, + }); + + await service.releaseValidationSession(['1', '2', '3'], 'sessionKey'); + expect(releaseValidationSession).toBeCalledTimes(3); + }); + + it('should check if validate was called 1 time, and items were mapped correctly', async () => { + const validate = jest + .fn() + .mockResolvedValue(getAvailablePromotionsResponseObject); + + service.getClient = jest.fn().mockReturnValue({ + promotions: { + validate, + }, + }); + + await service.getAvailablePromotions(getAvailablePromotionsCart); + expect(validate).toBeCalledTimes(1); + expect(validate).toBeCalledWith( + expect.objectContaining(getAvailablePromotionsValidateWith), + ); + }); + + it('should check if list was called 1 time', async () => { + const list = jest.fn().mockResolvedValue({ schemas: [] }); + + service.getClient = jest.fn().mockReturnValue({ + metadataSchemas: { + list, + }, + }); + + await service.getMetadataSchemaProperties('resourceName'); + expect(list).toBeCalledTimes(1); + }); + + it('should check if redeemStackable was called 1 time', async () => { + const redeemStackable = jest + .fn() + .mockResolvedValue(redeemStackableVouchersResponse); + + service.getClient = jest.fn().mockReturnValue({ + redemptions: { + redeemStackable, + }, + }); + + await service.redeemStackableVouchers( + redeemStackableVouchersRequest as any, + ); + expect(redeemStackable).toBeCalledTimes(1); + }); + + it('should check if orders.create was called 1 time, check if order mapping is correct', async () => { + const create = jest.fn().mockResolvedValue(undefined); + + service.getClient = jest.fn().mockReturnValue({ + orders: { + create, + }, + }); + + await service.createOrder( + createOrderOrderObject as any, + createOrderItems as any, + {}, + ); + expect(create).toBeCalledTimes(1); + expect(create).toBeCalledWith(createOrderOrderCreateObject); + }); +}); diff --git a/test/jest-e2e.json b/voucherify-service/test/jest-e2e.json similarity index 100% rename from test/jest-e2e.json rename to voucherify-service/test/jest-e2e.json diff --git a/tsconfig.build.json b/voucherify-service/tsconfig.build.json similarity index 100% rename from tsconfig.build.json rename to voucherify-service/tsconfig.build.json diff --git a/tsconfig.json b/voucherify-service/tsconfig.json similarity index 100% rename from tsconfig.json rename to voucherify-service/tsconfig.json