From 0107fb2a0248ebd577dee8fbc5223616c712ee49 Mon Sep 17 00:00:00 2001 From: navneel mandal <navneel99@gmail.com> Date: Mon, 1 Jul 2024 10:59:59 +0530 Subject: [PATCH 01/11] chore: add 3P workflow operations --- 14-operations/README.md | 153 + 14-operations/code/.eslintrc.js | 35 + 14-operations/code/.gitignore | 39 + 14-operations/code/.npmrc | 1 + 14-operations/code/.prettierignore | 4 + 14-operations/code/.prettierrc | 15 + 14-operations/code/babel.config.js | 3 + 14-operations/code/jest.config.js | 12 + 14-operations/code/nodemon.json | 5 + 14-operations/code/package-lock.json | 10482 ++++++++++++++++ 14-operations/code/package.json | 60 + .../src/fixtures/on_work_created_event.json | 81 + 14-operations/code/src/function-factory.ts | 10 + .../functions/on_work_creation/index.test.ts | 69 + .../src/functions/on_work_creation/index.ts | 33 + .../operation_handler/get_temperature.ts | 60 + .../src/functions/operation_handler/index.ts | 27 + 14-operations/code/src/index.ts | 1 + 14-operations/code/src/main.ts | 27 + 14-operations/code/src/operations/index.ts | 26 + .../code/src/test-runner/example.test.ts | 15 + .../code/src/test-runner/test-runner.ts | 27 + 14-operations/code/test/http_client.ts | 52 + 14-operations/code/test/main.ts | 29 + 14-operations/code/test/runner.ts | 264 + 14-operations/code/test/types.ts | 87 + 14-operations/code/tsconfig.eslint.json | 4 + 14-operations/code/tsconfig.json | 24 + 14-operations/manifest.yaml | 45 + 29 files changed, 11690 insertions(+) create mode 100644 14-operations/README.md create mode 100644 14-operations/code/.eslintrc.js create mode 100644 14-operations/code/.gitignore create mode 100644 14-operations/code/.npmrc create mode 100644 14-operations/code/.prettierignore create mode 100644 14-operations/code/.prettierrc create mode 100644 14-operations/code/babel.config.js create mode 100644 14-operations/code/jest.config.js create mode 100644 14-operations/code/nodemon.json create mode 100644 14-operations/code/package-lock.json create mode 100644 14-operations/code/package.json create mode 100644 14-operations/code/src/fixtures/on_work_created_event.json create mode 100644 14-operations/code/src/function-factory.ts create mode 100644 14-operations/code/src/functions/on_work_creation/index.test.ts create mode 100644 14-operations/code/src/functions/on_work_creation/index.ts create mode 100644 14-operations/code/src/functions/operation_handler/get_temperature.ts create mode 100644 14-operations/code/src/functions/operation_handler/index.ts create mode 100644 14-operations/code/src/index.ts create mode 100644 14-operations/code/src/main.ts create mode 100644 14-operations/code/src/operations/index.ts create mode 100644 14-operations/code/src/test-runner/example.test.ts create mode 100644 14-operations/code/src/test-runner/test-runner.ts create mode 100644 14-operations/code/test/http_client.ts create mode 100644 14-operations/code/test/main.ts create mode 100644 14-operations/code/test/runner.ts create mode 100644 14-operations/code/test/types.ts create mode 100644 14-operations/code/tsconfig.eslint.json create mode 100644 14-operations/code/tsconfig.json create mode 100644 14-operations/manifest.yaml diff --git a/14-operations/README.md b/14-operations/README.md new file mode 100644 index 0000000..64f8d2c --- /dev/null +++ b/14-operations/README.md @@ -0,0 +1,153 @@ +## DevRev Snaps TypeScript Template + +This repository contains a template for the functions that can be deployed as +part of Snap-Ins. + +For reference on snap-ins, refer to the [documentation](https://github.com/devrev/snap-in-docs). + +### Getting started with the template + +1. Create a new repository using this template. +2. In the new repository, you can add functions at the path `src/functions` where the folder name corresponds to the function name in your manifest file. +3. Ensure to include each new function in the file named "src/function-factory.ts". + +### Testing locally + +To test your code locally, add test events under 'src/fixtures' following the example event provided. Additionally, you can include keyring values in the event payload to test API calls.``` + +After adding the event, execute the following commands to test your code: + +``` +npm install +npm run start -- --functionName=on_work_creation --fixturePath=on_work_created_event.json +``` + +### Adding external dependencies + +You can also add dependencies on external packages to package.json under the “dependencies” key. These dependencies will be made available to your function at runtime and during testing. + +### Linting + +To check for lint errors, run the following command: + +```bash +npm run lint +``` + +To automatically fix fixable lint errors, run: + +```bash +npm run lint:fix +``` + +### Deploying Snap-ins + +Once you are done with the testing, run the following commands to deploy your snap-in: + +1. Authenticate to devrev CLI, run the following command: + +``` +devrev profiles authenticate --org <devorg name> --usr <user email> +``` + +2. To create a snap_in_version, run the following command: + +``` +devrev snap_in_version create-one --path <template path> --create-package +``` + +3. Draft the snap_in, run the following command: + +``` +devrev snap_in draft +``` + +4. To update the snap-in, run the following command: + +``` +devrev snap_in update +``` + +5. Activate the snap_in + +``` +devrev snap_in activate +``` + +### Testing Snap-in changes locally + +### Setting up the server + +To test out changes in snap-in locally, developers can create a snap-in version in test mode. +A snap-in version created in test mode enables developers to specify a public HTTP URL to receive events from DevRev. This makes for +quick code changes on the local machine without needing to repeatedly deploy the snap-in again for testing the changes. + +To test out a snap-in version locally, follow the below steps: + +1. Run a server locally to ingest events from DevRev. The `port` parameter is optional. If not set, the server starts default on `8000`. + +``` +npm run test:server -- --port=<PORT> +``` + +2. Expose the local port as a publicly available URL. We recommend using [`ngrok`](https://ngrok.com/download) since it is free and easy to set up. The command for running ngrok tunnelling on port `8000`: + +``` +ngrok http 8000 +``` + +This returns a public HTTP URL. + +3. Create a snap-in version with the `testing_url` flag set + +``` +devrev snap_in_version create-one --path <template path> --create-package --testing_url <HTTP_URL> +``` + +Here, `HTTP_URL` is the publicly available URL from Step 2. The URL should start with `http` or `https` + +4. Once the snap-in version is ready, create a snap-in, update and activate it. + +``` +devrev snap_in draft +``` + +Update the snap-in through UI or using the CLI: + +``` +devrev snap_in update +``` + +Activate the snap-in through UI or through the CLI command: + +``` +devrev snap_in activate +``` + +### Receiving events locally + +After the snap-in has been activated, it can receive events locally from DevRev as a +snap-in would. If the snap-in was listening to `work_created` event type, then creating a +new work-item would send the event to the local server. + +If utilizing ngrok, accessing the ngrok UI is possible by opening http://127.0.0.1:4040/ in the browser. This interface offers a neat way to review the list of requests and replay them if necessary. + +The service account token included with the request is valid for only 30 minutes. Therefore, attempting to call the DevRev API with that token for events older than this timeframe will result in a '401 Unauthorized' error. + +### Updating manifest or the URL + +The code can be changed without the need to create a snap-in version or redeploy the snap-in. On any change to the +`src` folder, the server restarts with the updated changes. However, on [patch compatible](https://developer.devrev.ai/snap-in-development/upgrade-snap-ins#version-compatibility) updates to the manifest or the testing URL, we can `upgrade` the snap-in version. + +``` +devrev snap_in_version upgrade --manifest <PATH_TO_MANIFEST> --testing-url <UPDATED_URL> +``` + +In case of non-patch compatible updates, the `force` flag can be used to upgrade the version. However this will delete any +existing snap-ins that have been created from this version. + +``` +devrev snap_in_version upgrade --force --manifest <PATH_TO_MANIFEST> --testing-url <UPDATED_URL> +``` + +Do note that manifest must always be provided when upgrading a snap-in version. diff --git a/14-operations/code/.eslintrc.js b/14-operations/code/.eslintrc.js new file mode 100644 index 0000000..ca876e7 --- /dev/null +++ b/14-operations/code/.eslintrc.js @@ -0,0 +1,35 @@ +module.exports = { + extends: 'airbnb-typescript/base', + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', // Makes ESLint and Prettier play nicely together + 'plugin:import/recommended', + 'plugin:import/typescript', + ], + ignorePatterns: ['**/dist/*'], + parser: '@typescript-eslint/parser', + parserOptions: { + project: './tsconfig.eslint.json', + }, + plugins: ['prettier', 'unused-imports', 'import', 'simple-import-sort', 'sort-keys-fix'], + root: true, + rules: { + 'import/first': 'error', // Ensures all imports are at the top of the file + 'import/newline-after-import': 'error', // Ensures there’s a newline after the imports + 'import/no-duplicates': 'error', // Merges import statements from the same file + 'import/order': 'off', // Not compatible with simple-import-sort + 'no-unused-vars': 'off', // Handled by @typescript-eslint/no-unused-vars + 'simple-import-sort/exports': 'error', // Auto-formats exports + 'simple-import-sort/imports': 'error', // Auto-formats imports + 'sort-imports': 'off', // Not compatible with simple-import-sort + 'sort-keys-fix/sort-keys-fix': ['error', 'asc', { natural: true }], // Sorts long object key lists alphabetically + 'unused-imports/no-unused-imports': 'error', // Removes unused imports automatically, + '@typescript-eslint/no-explicit-any': 'warn', // Allows any type with a warning + }, + overrides:[{ + "files": ["**/*.test.ts"], + "rules": { + 'simple-import-sort/imports': 'off', // for test files we would want to load the mocked up modules later so on sorting the mocking mechanism will not work + } + }] +}; diff --git a/14-operations/code/.gitignore b/14-operations/code/.gitignore new file mode 100644 index 0000000..6db3937 --- /dev/null +++ b/14-operations/code/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# Testing +coverage/ + +# dependencies +/node_modules + +# 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 + +# System Files +.DS_Store +Thumbs.db + +deps.json +results.json +before-run-data.json + +# packaged app +*.tar.gz diff --git a/14-operations/code/.npmrc b/14-operations/code/.npmrc new file mode 100644 index 0000000..cffe8cd --- /dev/null +++ b/14-operations/code/.npmrc @@ -0,0 +1 @@ +save-exact=true diff --git a/14-operations/code/.prettierignore b/14-operations/code/.prettierignore new file mode 100644 index 0000000..640c051 --- /dev/null +++ b/14-operations/code/.prettierignore @@ -0,0 +1,4 @@ +# Add files here to ignore them from prettier formatting + +/dist + diff --git a/14-operations/code/.prettierrc b/14-operations/code/.prettierrc new file mode 100644 index 0000000..de83c71 --- /dev/null +++ b/14-operations/code/.prettierrc @@ -0,0 +1,15 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "jsxSingleQuote": false, + "arrowParens": "always", + "proseWrap": "never", + "htmlWhitespaceSensitivity": "strict", + "endOfLine": "lf", + "organizeImportsSkipDestructiveCodeActions": true +} diff --git a/14-operations/code/babel.config.js b/14-operations/code/babel.config.js new file mode 100644 index 0000000..e6ffbd4 --- /dev/null +++ b/14-operations/code/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'], +}; diff --git a/14-operations/code/jest.config.js b/14-operations/code/jest.config.js new file mode 100644 index 0000000..1bf82d0 --- /dev/null +++ b/14-operations/code/jest.config.js @@ -0,0 +1,12 @@ +module.exports = { + collectCoverage: true, + coverageDirectory: 'coverage', + coverageThreshold: { + "**/*": { + branches: 60 + } + }, + coverageReporters: ['text'], + preset: 'ts-jest', + testEnvironment: 'node' +}; diff --git a/14-operations/code/nodemon.json b/14-operations/code/nodemon.json new file mode 100644 index 0000000..8e47e98 --- /dev/null +++ b/14-operations/code/nodemon.json @@ -0,0 +1,5 @@ +{ + "execMap": { + "ts": "ts-node" + } +} diff --git a/14-operations/code/package-lock.json b/14-operations/code/package-lock.json new file mode 100644 index 0000000..2211e22 --- /dev/null +++ b/14-operations/code/package-lock.json @@ -0,0 +1,10482 @@ +{ + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@devrev/typescript-sdk": "1.1.27", + "protobufjs": "7.3.0" + }, + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.18.6", + "@types/body-parser": "1.19.5", + "@types/express": "4.17.21", + "@types/jest": "^29.4.0", + "@types/node": "^18.13.0", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.51.0", + "babel-jest": "^29.4.2", + "body-parser": "1.20.2", + "dotenv": "^16.0.3", + "eslint": "^8.33.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sort-keys-fix": "1.1.2", + "eslint-plugin-unused-imports": "2.0.0", + "express": "4.19.2", + "jest": "^29.4.2", + "nodemon": "^2.0.20", + "prettier": "^2.8.3", + "prettier-plugin-organize-imports": "^3.2.2", + "rimraf": "^4.1.2", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "yargs": "^17.6.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.6", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", + "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", + "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helpers": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/traverse": "^7.24.6", + "@babel/types": "^7.24.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", + "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", + "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz", + "integrity": "sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", + "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz", + "integrity": "sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz", + "integrity": "sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", + "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", + "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", + "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz", + "integrity": "sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", + "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", + "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz", + "integrity": "sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", + "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz", + "integrity": "sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-wrap-function": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz", + "integrity": "sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", + "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz", + "integrity": "sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", + "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", + "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", + "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz", + "integrity": "sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", + "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.6", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", + "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.6.tgz", + "integrity": "sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.6.tgz", + "integrity": "sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz", + "integrity": "sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz", + "integrity": "sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "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-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "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-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz", + "integrity": "sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz", + "integrity": "sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "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-jsx": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", + "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "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-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "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-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.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", + "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz", + "integrity": "sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.6.tgz", + "integrity": "sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.6.tgz", + "integrity": "sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz", + "integrity": "sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz", + "integrity": "sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz", + "integrity": "sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz", + "integrity": "sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz", + "integrity": "sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz", + "integrity": "sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/template": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz", + "integrity": "sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz", + "integrity": "sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz", + "integrity": "sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz", + "integrity": "sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz", + "integrity": "sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz", + "integrity": "sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz", + "integrity": "sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz", + "integrity": "sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz", + "integrity": "sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz", + "integrity": "sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz", + "integrity": "sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz", + "integrity": "sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz", + "integrity": "sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz", + "integrity": "sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz", + "integrity": "sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz", + "integrity": "sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz", + "integrity": "sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz", + "integrity": "sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz", + "integrity": "sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz", + "integrity": "sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz", + "integrity": "sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz", + "integrity": "sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz", + "integrity": "sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz", + "integrity": "sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz", + "integrity": "sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz", + "integrity": "sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz", + "integrity": "sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz", + "integrity": "sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz", + "integrity": "sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz", + "integrity": "sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz", + "integrity": "sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz", + "integrity": "sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz", + "integrity": "sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz", + "integrity": "sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz", + "integrity": "sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.6.tgz", + "integrity": "sha512-H0i+hDLmaYYSt6KU9cZE0gb3Cbssa/oxWis7PX4ofQzbvsfix9Lbh8SRk7LCPDlLWJHUiFeHU0qRRpF/4Zv7mQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-typescript": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz", + "integrity": "sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz", + "integrity": "sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz", + "integrity": "sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz", + "integrity": "sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.6.tgz", + "integrity": "sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.6", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.6", + "@babel/plugin-syntax-import-attributes": "^7.24.6", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.6", + "@babel/plugin-transform-async-generator-functions": "^7.24.6", + "@babel/plugin-transform-async-to-generator": "^7.24.6", + "@babel/plugin-transform-block-scoped-functions": "^7.24.6", + "@babel/plugin-transform-block-scoping": "^7.24.6", + "@babel/plugin-transform-class-properties": "^7.24.6", + "@babel/plugin-transform-class-static-block": "^7.24.6", + "@babel/plugin-transform-classes": "^7.24.6", + "@babel/plugin-transform-computed-properties": "^7.24.6", + "@babel/plugin-transform-destructuring": "^7.24.6", + "@babel/plugin-transform-dotall-regex": "^7.24.6", + "@babel/plugin-transform-duplicate-keys": "^7.24.6", + "@babel/plugin-transform-dynamic-import": "^7.24.6", + "@babel/plugin-transform-exponentiation-operator": "^7.24.6", + "@babel/plugin-transform-export-namespace-from": "^7.24.6", + "@babel/plugin-transform-for-of": "^7.24.6", + "@babel/plugin-transform-function-name": "^7.24.6", + "@babel/plugin-transform-json-strings": "^7.24.6", + "@babel/plugin-transform-literals": "^7.24.6", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.6", + "@babel/plugin-transform-member-expression-literals": "^7.24.6", + "@babel/plugin-transform-modules-amd": "^7.24.6", + "@babel/plugin-transform-modules-commonjs": "^7.24.6", + "@babel/plugin-transform-modules-systemjs": "^7.24.6", + "@babel/plugin-transform-modules-umd": "^7.24.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.6", + "@babel/plugin-transform-new-target": "^7.24.6", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.6", + "@babel/plugin-transform-numeric-separator": "^7.24.6", + "@babel/plugin-transform-object-rest-spread": "^7.24.6", + "@babel/plugin-transform-object-super": "^7.24.6", + "@babel/plugin-transform-optional-catch-binding": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6", + "@babel/plugin-transform-parameters": "^7.24.6", + "@babel/plugin-transform-private-methods": "^7.24.6", + "@babel/plugin-transform-private-property-in-object": "^7.24.6", + "@babel/plugin-transform-property-literals": "^7.24.6", + "@babel/plugin-transform-regenerator": "^7.24.6", + "@babel/plugin-transform-reserved-words": "^7.24.6", + "@babel/plugin-transform-shorthand-properties": "^7.24.6", + "@babel/plugin-transform-spread": "^7.24.6", + "@babel/plugin-transform-sticky-regex": "^7.24.6", + "@babel/plugin-transform-template-literals": "^7.24.6", + "@babel/plugin-transform-typeof-symbol": "^7.24.6", + "@babel/plugin-transform-unicode-escapes": "^7.24.6", + "@babel/plugin-transform-unicode-property-regex": "^7.24.6", + "@babel/plugin-transform-unicode-regex": "^7.24.6", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.6.tgz", + "integrity": "sha512-U10aHPDnokCFRXgyT/MaIRTivUu2K/mu0vJlwRS9LxJmJet+PFQNKpggPyFCUtC6zWSBPjvxjnpNkAn3Uw2m5w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "@babel/plugin-syntax-jsx": "^7.24.6", + "@babel/plugin-transform-modules-commonjs": "^7.24.6", + "@babel/plugin-transform-typescript": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", + "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", + "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", + "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", + "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6", + "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/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/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==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@devrev/typescript-sdk": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/@devrev/typescript-sdk/-/typescript-sdk-1.1.27.tgz", + "integrity": "sha512-Vc37gTv8CMl/vM1WLFYJxdt6Khdzl5RU4/WPAbBeFNOQSyTaZCTaZhIgIbhSWf892tcUqNiV//QvQJsRSNmR3Q==", + "dependencies": { + "@types/yargs": "^17.0.22", + "axios": "^1.3.6", + "dotenv": "^16.0.3", + "protobufjs": "^7.3.0", + "yargs": "^17.6.2" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "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/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": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@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": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@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": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", + "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/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==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "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": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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": "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/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.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": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/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-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==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true, + "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.30001627", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz", + "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-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/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": 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.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "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==", + "dev": true, + "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/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": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "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==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.788", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", + "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "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-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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-plugin-simple-import-sort": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", + "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-sort-keys-fix/-/eslint-plugin-sort-keys-fix-1.1.2.tgz", + "integrity": "sha512-DNPHFGCA0/hZIsfODbeLZqaGY/+q3vgtshF85r+YWDNCQ2apd9PNs/zL6ttKm0nD1IFwvxyg3YOTI7FHl4unrw==", + "dev": true, + "dependencies": { + "espree": "^6.1.2", + "esutils": "^2.0.2", + "natural-compare": "^1.4.0", + "requireindex": "~1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", + "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.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/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "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/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "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/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "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.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "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/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==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "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==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "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-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@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": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==", + "dev": true + }, + "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/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==", + "dev": true + }, + "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==", + "dev": true + }, + "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/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==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "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/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/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==", + "dev": true + }, + "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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "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/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "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/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "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.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "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-locate/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-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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "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/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.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.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "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/prettier-plugin-organize-imports": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz", + "integrity": "sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==", + "dev": true, + "peerDependencies": { + "@volar/vue-language-plugin-pug": "^1.0.4", + "@volar/vue-typescript": "^1.0.4", + "prettier": ">=2.0", + "typescript": ">=2.9" + }, + "peerDependenciesMeta": { + "@volar/vue-language-plugin-pug": { + "optional": true + }, + "@volar/vue-typescript": { + "optional": true + } + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/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/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/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "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==", + "dev": true, + "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/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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==", + "dev": true, + "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==", + "dev": true, + "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": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "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/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "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/rimraf/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "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/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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.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/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/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-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-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/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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/ts-jest": { + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.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.1", + "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": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/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/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.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "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==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "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==", + "dev": true, + "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/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "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/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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/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" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/14-operations/code/package.json b/14-operations/code/package.json new file mode 100644 index 0000000..a90dc09 --- /dev/null +++ b/14-operations/code/package.json @@ -0,0 +1,60 @@ +{ + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "description": "", + "main": "./dist/index.js", + "scripts": { + "lint": "eslint --ignore-path .gitignore .", + "lint:fix": "eslint --fix --ignore-path .gitignore .", + "build": "rimraf ./dist && tsc", + "build:watch": "tsc --watch", + "prepackage": "npm run build", + "package": "tar -cvzf build.tar.gz dist package.json package-lock.json .npmrc", + "start": "ts-node src/main.ts", + "start:watch": "nodemon src/main.ts", + "start:production": "node dist/main.js", + "test:server": "nodemon --watch src --watch test test/main.ts", + "test": "jest", + "test:watch": "jest --watch" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.18.6", + "@types/body-parser": "1.19.5", + "@types/express": "4.17.21", + "@types/jest": "^29.4.0", + "@types/node": "^18.13.0", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.51.0", + "babel-jest": "^29.4.2", + "body-parser": "1.20.2", + "dotenv": "^16.0.3", + "eslint": "^8.33.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sort-keys-fix": "1.1.2", + "eslint-plugin-unused-imports": "2.0.0", + "express": "4.19.2", + "jest": "^29.4.2", + "nodemon": "^2.0.20", + "prettier": "^2.8.3", + "prettier-plugin-organize-imports": "^3.2.2", + "rimraf": "^4.1.2", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "yargs": "^17.6.2" + }, + "dependencies": { + "@devrev/typescript-sdk": "1.1.27", + "protobufjs": "7.3.0" + } +} diff --git a/14-operations/code/src/fixtures/on_work_created_event.json b/14-operations/code/src/fixtures/on_work_created_event.json new file mode 100644 index 0000000..b66c880 --- /dev/null +++ b/14-operations/code/src/fixtures/on_work_created_event.json @@ -0,0 +1,81 @@ +{ + "events": [ + { + "payload": { + "id": "don:integration:dvrv-us-1:devo/XXXXXX:webhook/mpLkC87l:webhook_event/A47zYgvZGDM", + "timestamp": "2023-04-03T14:15:08.101098Z", + "type": "work_created", + "unique_key": "ZG9uOmludGVncmF0aW9uOmR2cnYtdXMtMTpkZXZvLzFGR2lCenJhNjpldmVudF9zb3VyY2UvYzMzMDI2Y2UtOTM5Yy00ZWEzLThjYzctOTI4M2M0NWI3ZjRk", + "webhook_id": "don:integration:dvrv-us-1:devo/XXXXXX:webhook/mpLkC87l", + "work_created": { + "work": { + "applies_to_part": { + "display_id": "ENH-9", + "id": "don:core:dvrv-us-1:devo/XXXXXX:enhancement/9", + "id_v1": "don:DEV-XXXXXX:enhancement: 9", + "name": "test-enhancement", + "type": "enhancement" + }, + "created_by": { + "display_handle": "Sample Name", + "display_id": "DEVU-5", + "display_name": "Sample Name", + "email": "i-Demo1.Demo2@domain.com", + "full_name": "Sample Name", + "id": "don:identity:dvrv-us-1:devo/XXXXXX:devu/5", + "id_v1": "don:DEV-XXXXXX:dev_user:DEVU-5", + "state": "active", + "type": "dev_user" + }, + "created_date": "2023-04-03T14: 14: 30.336Z", + "custom_fields": null, + "display_id": "TKT-122", + "id": "don:core:dvrv-us-1:devo/XXXXXX:ticket/122", + "id_v1": "don:DEV-XXXXXX:ticket: 122", + "owned_by": [ + { + "display_handle": "Sample Name", + "display_id": "DEVU-5", + "display_name": "Sample Name", + "email": "i-Demo1.Demo2@domain.com", + "full_name": "Sample Name", + "id": "don:identity:dvrv-us-1:devo/XXXXXX:devu/5", + "id_v1": "don:DEV-XXXXXX:dev_user:DEVU-5", + "state": "active", + "type": "dev_user" + } + ], + "severity": "medium", + "stage": { + "name": "queued", + "ordinal": 700 + }, + "state": "open", + "stock_schema_fragment": "don:core:dvrv-us-1:stock_sf/297430", + "title": "test-ticket", + "type": "ticket" + } + } + }, + "context": { + "dev_oid": "don:identity:dvrv-us-1:devo/XXXXXX", + "automation_id": "don:integration:dvrv-us-1:devo/XXXXXX:automation/be9f0869-77a4-4210-9f84-47409e67c781", + "source_id": "don:integration:dvrv-us-1:devo/XXXXXX:automation/be9f0869-77a4-4210-9f84-47409e67c781", + "snap_in_id": "don:integration:dvrv-us-1:devo/XXXXXX:snap_in/641c009b-0476-40ef-b728-f3ce6fb77bb9", + "snap_in_version_id": "don:integration:dvrv-us-1:devo/XXXXXX:snap_in_package/fd20d23b-372c-48ad-ac24-d13c271c63d6:snap_in_version/d506f96a-131f-451c-87d6-e73605fac8df", + "secrets": { + "service_account_token": "TEST-TOKEN" + } + }, + "input_data": { + "keyrings": { + "devrev": "TEST-TOKEN" + } + }, + "execution_metadata": { + "devrev_endpoint": "https://api.devrev.ai", + "function_name": "on_work_creation" + } + } + ] +} \ No newline at end of file diff --git a/14-operations/code/src/function-factory.ts b/14-operations/code/src/function-factory.ts new file mode 100644 index 0000000..278fd48 --- /dev/null +++ b/14-operations/code/src/function-factory.ts @@ -0,0 +1,10 @@ +import on_work_creation from './functions/on_work_creation'; +import operation_handler from './functions/operation_handler'; + +export const functionFactory = { + // Add your functions here + on_work_creation, + operation_handler, +} as const; + +export type FunctionFactoryType = keyof typeof functionFactory; diff --git a/14-operations/code/src/functions/on_work_creation/index.test.ts b/14-operations/code/src/functions/on_work_creation/index.test.ts new file mode 100644 index 0000000..8bb2e28 --- /dev/null +++ b/14-operations/code/src/functions/on_work_creation/index.test.ts @@ -0,0 +1,69 @@ +import { testRunner } from '../../test-runner/test-runner'; +import { client } from '@devrev/typescript-sdk'; +import { handleEvent } from '.'; + +jest.mock('@devrev/typescript-sdk', () => ({ + client: { + setup: jest.fn(), + }, + publicSDK: { + WorkType: { + Ticket: 'ticket', + }, + }, +})); + +describe('Example Index Test file', () => { + it('Testing handleEvent', async () => { + const mockSetup = jest.fn(); + client.setup = mockSetup; + const mockWorkList = jest.fn(); + mockSetup.mockReturnValue({ + worksList: mockWorkList, + }); + mockWorkList.mockReturnValue({ + data: { + works: [ + { + id: '123', + }, + ], + }, + }); + const event = { + payload: { + work_created: { + work: { + id: '123', + }, + }, + }, + context: { + secrets: { + service_account_token: 'TEST-PAT', + }, + }, + execution_metadata: { + devrev_endpoint: 'https://devrev.com', + }, + }; + const expectedResp = { + works: [ + { + id: '123', + }, + ], + }; + const response = await handleEvent(event); + expect(response).toEqual(expectedResp); + }); +}); + +describe('Example Index Test file', () => { + it('Testing the method', () => { + testRunner({ + fixturePath: 'on_work_created_event.json', + functionName: 'on_work_creation', + }); + }); +}); diff --git a/14-operations/code/src/functions/on_work_creation/index.ts b/14-operations/code/src/functions/on_work_creation/index.ts new file mode 100644 index 0000000..face732 --- /dev/null +++ b/14-operations/code/src/functions/on_work_creation/index.ts @@ -0,0 +1,33 @@ +import { client, publicSDK } from "@devrev/typescript-sdk"; + +export async function handleEvent( + event: any, +) { + const devrevPAT = event.context.secrets.service_account_token; + const APIBase = event.execution_metadata.devrev_endpoint; + const devrevSDK = client.setup({ + endpoint: APIBase, + token: devrevPAT, + }) + try { + const response = await devrevSDK.worksList({ + limit: 1, + type: [publicSDK.WorkType.Ticket] + }); + return response; + } catch (error) { + console.log(error); + return error; + } +} + +export const run = async (events: any[]) => { + /* + Put your code here to handle the event. + */ + for (let event of events) { + await handleEvent(event); + } +}; + +export default run; diff --git a/14-operations/code/src/functions/operation_handler/get_temperature.ts b/14-operations/code/src/functions/operation_handler/get_temperature.ts new file mode 100644 index 0000000..df81880 --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/get_temperature.ts @@ -0,0 +1,60 @@ +import { client, publicSDK } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +interface GetTemperatureInput { + city: string; +} + +export class GetTemperature extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + // // This is optional and can be used to provide any extra context required. + override GetContext(): OperationContext { + let baseMetadata = super.GetContext(); + const temperatures: Record<string, number> = { + 'New York': 72, + 'San Francisco': 65, + Seattle: 55, + 'Los Angeles': 80, + Chicago: 70, + Houston: 90, + }; + + return { + ...baseMetadata, + metadata: temperatures, + }; + } + + async run(_context: OperationContext, input: ExecuteOperationInput, _resources: any): Promise<OperationOutput> { + const input_data = input.data as GetTemperatureInput; + + const temperature = _context.metadata ? _context.metadata[input_data.city] : null; + + let err: OperationError | undefined = undefined; + if (!temperature) { + err = { + message: 'City not found', + type: Error_Type.InvalidRequest, + }; + } + const temp = { + error: err, + output: { + values: [{ "temperature": temperature }], + } as OutputValue, + } + return OperationOutput.fromJSON(temp); + } +} diff --git a/14-operations/code/src/functions/operation_handler/index.ts b/14-operations/code/src/functions/operation_handler/index.ts new file mode 100644 index 0000000..327cec1 --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/index.ts @@ -0,0 +1,27 @@ +import { GetTemperature } from './get_temperature'; +import { OperationFactory } from '../../operations'; +import { ExecuteOperationInput,FunctionInput, OperationMap } from '@devrev/typescript-sdk/dist/snap-ins'; + + +/** + * Map of operations with the slug mentioned in the manifest. + * The key is the slug of the operation mentioned in the manifest and value is the operation class. + */ +const operationMap: OperationMap = { + get_temperature: GetTemperature, +}; + +export const run = async (events: FunctionInput[]) => { + const event = events[0]; + const payload = event.payload as ExecuteOperationInput + + const operationSlug = payload.metadata!.slug; + const operationNamespace = payload.metadata!.namespace; + console.log('running operation: ', operationSlug, ' in namespace: ', operationNamespace); + const operationFactory = new OperationFactory(operationMap); + const operation = operationFactory.getOperation(operationSlug, event); + const ctx = operation.GetContext(event); + return await operation.run(ctx, payload, {}); +}; + +export default run; diff --git a/14-operations/code/src/index.ts b/14-operations/code/src/index.ts new file mode 100644 index 0000000..5254e38 --- /dev/null +++ b/14-operations/code/src/index.ts @@ -0,0 +1 @@ +export * from './function-factory'; diff --git a/14-operations/code/src/main.ts b/14-operations/code/src/main.ts new file mode 100644 index 0000000..2bb6a36 --- /dev/null +++ b/14-operations/code/src/main.ts @@ -0,0 +1,27 @@ +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +import { FunctionFactoryType } from './function-factory'; +import { testRunner } from './test-runner/test-runner'; + +(async () => { + const argv = await yargs(hideBin(process.argv)).options({ + fixturePath: { + require: true, + type: 'string', + }, + functionName: { + require: true, + type: 'string', + }, + }).argv; + + if (!argv.fixturePath || !argv.functionName) { + console.error('Please make sure you have passed fixturePath & functionName'); + } + + await testRunner({ + fixturePath: argv.fixturePath, + functionName: argv.functionName as FunctionFactoryType, + }); +})(); diff --git a/14-operations/code/src/operations/index.ts b/14-operations/code/src/operations/index.ts new file mode 100644 index 0000000..3db0e21 --- /dev/null +++ b/14-operations/code/src/operations/index.ts @@ -0,0 +1,26 @@ +import { OperationMap,OperationIfc, FunctionInput } from '@devrev/typescript-sdk/dist/snap-ins'; + +/** + * OperationFactory is a factory class that creates a map of operations with the slug mentioned + * in the manifest. + */ +export class OperationFactory { + operationMap: OperationMap; + + constructor(operationMap?: OperationMap) { + this.operationMap = operationMap || {}; + } + +/** + * @param slug The slug of the operation mentioned in the manifest + * @param event Event object that is passed to the snap-in + * @returns Operation + */ + public getOperation(slug: string, event: FunctionInput): OperationIfc { + if (!this.operationMap[slug]) { + throw new Error(`Operation with slug ${slug} not found`); + } + return new this.operationMap[slug](event); + } +} + diff --git a/14-operations/code/src/test-runner/example.test.ts b/14-operations/code/src/test-runner/example.test.ts new file mode 100644 index 0000000..7bb7509 --- /dev/null +++ b/14-operations/code/src/test-runner/example.test.ts @@ -0,0 +1,15 @@ +import { run } from '../functions/on_work_creation'; + +describe('Test some function', () => { + it('Something', () => { + run([{ + payload: { + work_created: { + work: { + id: 'some-id' + } + } + } + }]); + }); +}); diff --git a/14-operations/code/src/test-runner/test-runner.ts b/14-operations/code/src/test-runner/test-runner.ts new file mode 100644 index 0000000..15c7222 --- /dev/null +++ b/14-operations/code/src/test-runner/test-runner.ts @@ -0,0 +1,27 @@ +import * as dotenv from 'dotenv'; + +import { functionFactory, FunctionFactoryType } from '../function-factory'; + +export interface TestRunnerProps { + functionName: FunctionFactoryType; + fixturePath: string; +} + +export const testRunner = async ({ functionName, fixturePath }: TestRunnerProps) => { + //Since we were not using the env anywhere its not require to load it + dotenv.config(); + + if (!functionFactory[functionName]) { + console.error(`${functionName} is not found in the functionFactory`); + console.error('Add your function to the function-factory.ts file'); + throw new Error('Function is not found in the functionFactory'); + } + + //Since the import is loaded dynamically, we need to use require + const run = functionFactory[functionName]; + + // eslint-disable-next-line @typescript-eslint/no-var-requires + const eventFixture = require(`../fixtures/${fixturePath}`); + + await run(eventFixture); +}; diff --git a/14-operations/code/test/http_client.ts b/14-operations/code/test/http_client.ts new file mode 100644 index 0000000..0e222f8 --- /dev/null +++ b/14-operations/code/test/http_client.ts @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; + +interface SetupOptions { + endpoint: string; + token?: string; +} + +export interface HttpRequest { + headers?: any; + path: string; + body: unknown; +} + +export class HTTPClient { + public instance: AxiosInstance; + + constructor({ endpoint, token }: SetupOptions) { + const axiosConfig: AxiosRequestConfig = { + baseURL: endpoint, + headers: { + Authorization: token, + }, + }; + + this.instance = axios.create({ + ...axiosConfig, + }); + } + + async post<T>({ headers, path, body }: HttpRequest): Promise<AxiosResponse<T>> { + return this.instance.request({ + method: 'POST', + headers: headers, + data: body, + url: path, + }); + } +} diff --git a/14-operations/code/test/main.ts b/14-operations/code/test/main.ts new file mode 100644 index 0000000..8ff9ef3 --- /dev/null +++ b/14-operations/code/test/main.ts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; +import { startServer } from './runner'; + +(async () => { + const argv = await yargs(hideBin(process.argv)).options({ + port: { + require: false, + type: 'number', + }, + }).argv; + + const port = argv.port || 8000; + startServer(port); +})(); diff --git a/14-operations/code/test/runner.ts b/14-operations/code/test/runner.ts new file mode 100644 index 0000000..e19e1f2 --- /dev/null +++ b/14-operations/code/test/runner.ts @@ -0,0 +1,264 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import bodyParser from 'body-parser'; +import express, { Express, Handler, Request, Response } from 'express'; + +import process from 'process'; +import { functionFactory, FunctionFactoryType } from '../src/function-factory'; +import { HTTPClient, HttpRequest } from './http_client'; +import { + ActivateHookResult, + DeactivateHookResult, + ExecutionResult, + FunctionError, + HandlerError, + RuntimeError, + RuntimeErrorType, + SnapInsSystemUpdateRequest, + SnapInsSystemUpdateRequestInactive, + SnapInsSystemUpdateRequestStatus, + SnapInsSystemUpdateResponse, +} from './types'; + +const app: Express = express(); +app.use(bodyParser.json(), bodyParser.urlencoded({ extended: false })); + +export const startServer = (port: number) => { + app.listen(port, () => { + console.log(`[server]: Server is running at http://localhost:${port}`); + }); +}; + +// handle async requests +app.post('/handle/async', async (req: Request, resp: Response) => { + const events = req.body; + if (events === undefined) { + resp.status(400).send('Invalid request format: body is undefined'); + return; + } + + await handleEvent(events, true /* isAsync */, resp); +}); + +app.post('/handle/sync', async (req: Request, resp: Response) => { + if (req.body === undefined) { + resp.status(400).send('Invalid request format: body is undefined'); + return; + } + // for sync invokation, wrap in an array + const events: any[] = [req.body]; + await handleEvent(events, false /* isAsync */, resp); +}); + +async function run(f: any, event: any): Promise<any> { + let result = await f(event); + return result; +} + +async function handleEvent(events: any[], isAsync: boolean, resp: Response) { + let error; + let results: ExecutionResult[] = []; + let receivedError = false; + + if (!Array.isArray(events)) { + let errMsg = 'Invalid request format: body is not an array'; + error = { + err_type: RuntimeErrorType.InvalidRequest, + err_msg: errMsg, + } as RuntimeError; + console.error(error.err_msg); + resp.status(400).send(errMsg); + return; + } + // if the request is synchronous, there should be a single event + if (!isAsync) { + if (events.length > 1) { + let errMsg = 'Invalid request format: multiple events provided for synchronous request'; + error = { + err_type: RuntimeErrorType.InvalidRequest, + err_msg: errMsg, + } as RuntimeError; + console.error(error.err_msg); + resp.status(400).send(errMsg); + return; + } + } else { + // return a success response back to the server + resp.status(200).send(); + } + + for (let event of events) { + let result; + const functionName: FunctionFactoryType = event.execution_metadata.function_name as FunctionFactoryType; + if (functionName === undefined) { + error = { + err_type: RuntimeErrorType.FunctionNameNotProvided, + err_msg: 'Function name not provided in event', + } as RuntimeError; + console.error(error.err_msg); + receivedError = true; + } else { + const f = functionFactory[functionName]; + try { + if (f == undefined) { + error = { + err_type: RuntimeErrorType.FunctionNotFound, + err_msg: `Function ${event.execution_metadata.function_name} not found in factory`, + } as RuntimeError; + console.error(error.err_msg); + receivedError = true; + } else { + result = run(f, [event]); + } + } catch (e) { + error = { error: e } as FunctionError; + console.error(e); + } + + // post processing. result is updated in the function + await postRun(event, error, result); + } + + // Return result. + let res: ExecutionResult = {}; + + if (result !== undefined) { + res.function_result = result; + } + + if (error !== undefined) { + res.error = error; + } + results.push(res); + } + + if (!isAsync) { + resp.status(200).send(results[0]); + } +} + +// post processing +async function postRun(event: any, handlerError: HandlerError, result: any) { + console.debug('Function execution complete'); + if (isActivateHook(event)) { + handleActivateHookResult(event, handlerError, result); + } else if (isDeactivateHook(event)) { + handleDeactivateHookResult(event, handlerError, result); + } +} + +function isActivateHook(event: any): boolean { + return event.execution_metadata.event_type === 'hook:snap_in_activate'; +} + +function isDeactivateHook(event: any): boolean { + return event.execution_metadata.event_type === 'hook:snap_in_deactivate'; +} + +function handleActivateHookResult(event: any, handlerError: HandlerError, result: any) { + let update_req: SnapInsSystemUpdateRequest = { + id: event.context.snap_in_id, + status: SnapInsSystemUpdateRequestStatus.Active, + }; + let res = getActivateHookResult(result); + update_req.inputs_values = res.inputs_values; + + if (handlerError !== undefined || res?.status === 'error') { + console.debug('Setting snap-in status to error'); + update_req.status = SnapInsSystemUpdateRequestStatus.Error; + } + + return updateSnapInState(event, update_req); +} + +function handleDeactivateHookResult(event: any, handlerError: HandlerError, result: any) { + let update_req: SnapInsSystemUpdateRequest = { + id: event.context.snap_in_id, + status: SnapInsSystemUpdateRequestStatus.Inactive, + }; + let res = getDeactivateHookResult(result); + update_req.inputs_values = res.inputs_values; + if (event.payload.force_deactivate) { + console.debug('Snap-in is being force deactivated, errors ignored'); + } + if ((handlerError !== undefined || res?.status === 'error') && !event.payload.force_deactivate) { + console.debug('Setting snap-in status to error'); + update_req.status = SnapInsSystemUpdateRequestStatus.Error; + } else { + if (event.payload.is_deletion) { + console.debug('Marking snap-in to be deleted'); + (update_req as SnapInsSystemUpdateRequestInactive).is_deletion = true; + } else { + console.debug('Setting snap-in status to inactive'); + } + } + + return updateSnapInState(event, update_req); +} + +// Update the snap-in status based on hook result. +async function updateSnapInState(event: any, update_req: SnapInsSystemUpdateRequest) { + console.debug('Updating snap-in state after running async hook'); + const { secrets } = event.context; + const client = new HTTPClient({ + endpoint: event.execution_metadata.devrev_endpoint, + token: secrets?.service_account_token, + }); + + const request: HttpRequest = { + path: '/internal/snap-ins.system-update', + body: update_req, + }; + + try { + await client.post<SnapInsSystemUpdateResponse>(request); + } catch (e) { + console.error(e); + } +} + +function getActivateHookResult(input: any): ActivateHookResult { + let res = {} as ActivateHookResult; + if (input instanceof Object) { + if (input.status === 'active' || input.status === 'error') { + res.status = input.status; + } else if (input.status !== undefined) { + console.error(`Invalid status field ${input.status}: status must be active or error`); + } + if (input.inputs_values instanceof Object) { + res.inputs_values = input.inputs_values; + } else if (input.inputs_values !== undefined) { + console.error(`Invalid inputs_values field ${input.inputs_values}: inputs_values is not an object`); + } + } + return res; +} + +function getDeactivateHookResult(input: any): DeactivateHookResult { + let res = {} as DeactivateHookResult; + if (input instanceof Object) { + if (input.status === 'inactive' || input.status === 'error') { + res.status = input.status; + } else if (input.status !== undefined) { + console.error(`Invalid status field ${input.status}: status must be inactive or error`); + } + if (input.inputs_values instanceof Object) { + res.inputs_values = input.inputs_values; + } else if (input.inputs_values !== undefined) { + console.error(`Invalid inputs_values field ${input.inputs_values}: inputs_values is not an object`); + } + } + return res; +} diff --git a/14-operations/code/test/types.ts b/14-operations/code/test/types.ts new file mode 100644 index 0000000..6199093 --- /dev/null +++ b/14-operations/code/test/types.ts @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +/* + Error Types +*/ + +export enum RuntimeErrorType { + FunctionNotFound = 'FUNCTION_NOT_FOUND', + FunctionNameNotProvided = 'FUNCTION_NAME_NOT_PROVIDED', + InvalidRequest = 'INVALID_REQUEST', +} + +export type FunctionError = { + error: unknown; +}; + +export type RuntimeError = { + err_type: RuntimeErrorType; + err_msg: string; +}; + +/* + Snap-in types +*/ + +/** snap-ins-system-update-request */ +export type SnapInsSystemUpdateRequest = ( + | SnapInsSystemUpdateRequestActive + | SnapInsSystemUpdateRequestError + | SnapInsSystemUpdateRequestInactive +) & { + /** The ID of the snap-in to update. */ + id: string; + /** Values of the inputs. */ + inputs_values?: object; + status: SnapInsSystemUpdateRequestStatus; +}; + +/* snap-ins-system-update-request-active */ +export type SnapInsSystemUpdateRequestActive = object; + +/* snap-ins-system-update-request-error */ +export type SnapInsSystemUpdateRequestError = object; + +/* snap-ins-system-update-request-inactive */ +export interface SnapInsSystemUpdateRequestInactive { + /** Parameter to proceed with deletion of snap-in. */ + is_deletion?: boolean; +} + +export enum SnapInsSystemUpdateRequestStatus { + Active = 'active', + Error = 'error', + Inactive = 'inactive', +} + +/* snap-ins-system-update-response */ +export type SnapInsSystemUpdateResponse = object; + +export type HandlerError = FunctionError | RuntimeError | undefined; + +export type ExecutionResult = { + function_result?: any; + error?: HandlerError; +}; + +export type ActivateHookResult = { + status: 'active' | 'error'; + inputs_values?: Record<string, any>; +}; + +export type DeactivateHookResult = { + status: 'inactive' | 'error'; + inputs_values?: Record<string, any>; +}; diff --git a/14-operations/code/tsconfig.eslint.json b/14-operations/code/tsconfig.eslint.json new file mode 100644 index 0000000..c8722d7 --- /dev/null +++ b/14-operations/code/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["./**/*.ts", "./**/*.js", "./.*.js"] +} diff --git a/14-operations/code/tsconfig.json b/14-operations/code/tsconfig.json new file mode 100644 index 0000000..92f5866 --- /dev/null +++ b/14-operations/code/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "baseUrl": "./", + "paths": { + "*": ["./src/*"] + }, + "outDir": "./dist", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "declaration": true, + "allowJs": true, + "allowSyntheticDefaultImports": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src", "test"], + "exclude": ["node_modules", "dist", "test"] +} diff --git a/14-operations/manifest.yaml b/14-operations/manifest.yaml new file mode 100644 index 0000000..3f50948 --- /dev/null +++ b/14-operations/manifest.yaml @@ -0,0 +1,45 @@ +# For reference: https://docs.devrev.ai/snap-ins/references/manifest. +# Refactor the code based on your business logic. + +version: "2" +name: "3P Operation Get Temperature" +description: "Logs a message when a work item is created" + +# This is the name displayed in DevRev where the Snap-In takes actions using the token of this service account. +service_account: + display_name: DevRev Bot + +functions: + - name: on_work_creation + description: function to trigger on work creation + - name: handler + description: function to handle operations + +operations: + - name: get_temperature + display_name: Get Temperature + description: Operation to get the temperature of a city + slug: get_temperature + function: handler + type: action + inputs: + fields: + - name: city + field_type: enum + allowed_values: + - New York + - San Francisco + - Los Angeles + - Chicago + - Houston + is_required: true + default_value: "New York" + ui: + display_name: City + + outputs: + fields: + - name: temperature + field_type: double + ui: + display_name: Temperature From 818d52caa215b0e990145efe6dbb34835c89e04e Mon Sep 17 00:00:00 2001 From: navneel mandal <navneel99@gmail.com> Date: Mon, 1 Jul 2024 11:16:55 +0530 Subject: [PATCH 02/11] update readme --- 14-operations/README.md | 153 +--------------------------------------- 1 file changed, 3 insertions(+), 150 deletions(-) diff --git a/14-operations/README.md b/14-operations/README.md index 64f8d2c..4d916c7 100644 --- a/14-operations/README.md +++ b/14-operations/README.md @@ -1,153 +1,6 @@ -## DevRev Snaps TypeScript Template +## Snap-in containing custom operations -This repository contains a template for the functions that can be deployed as -part of Snap-Ins. +The snap-in contains custom operations which can be used in the Workflow Builder once snap-in gets successfully activated. -For reference on snap-ins, refer to the [documentation](https://github.com/devrev/snap-in-docs). +Operations are workflow node blueprint which are used to create worlkflow steps(nodes). -### Getting started with the template - -1. Create a new repository using this template. -2. In the new repository, you can add functions at the path `src/functions` where the folder name corresponds to the function name in your manifest file. -3. Ensure to include each new function in the file named "src/function-factory.ts". - -### Testing locally - -To test your code locally, add test events under 'src/fixtures' following the example event provided. Additionally, you can include keyring values in the event payload to test API calls.``` - -After adding the event, execute the following commands to test your code: - -``` -npm install -npm run start -- --functionName=on_work_creation --fixturePath=on_work_created_event.json -``` - -### Adding external dependencies - -You can also add dependencies on external packages to package.json under the “dependencies” key. These dependencies will be made available to your function at runtime and during testing. - -### Linting - -To check for lint errors, run the following command: - -```bash -npm run lint -``` - -To automatically fix fixable lint errors, run: - -```bash -npm run lint:fix -``` - -### Deploying Snap-ins - -Once you are done with the testing, run the following commands to deploy your snap-in: - -1. Authenticate to devrev CLI, run the following command: - -``` -devrev profiles authenticate --org <devorg name> --usr <user email> -``` - -2. To create a snap_in_version, run the following command: - -``` -devrev snap_in_version create-one --path <template path> --create-package -``` - -3. Draft the snap_in, run the following command: - -``` -devrev snap_in draft -``` - -4. To update the snap-in, run the following command: - -``` -devrev snap_in update -``` - -5. Activate the snap_in - -``` -devrev snap_in activate -``` - -### Testing Snap-in changes locally - -### Setting up the server - -To test out changes in snap-in locally, developers can create a snap-in version in test mode. -A snap-in version created in test mode enables developers to specify a public HTTP URL to receive events from DevRev. This makes for -quick code changes on the local machine without needing to repeatedly deploy the snap-in again for testing the changes. - -To test out a snap-in version locally, follow the below steps: - -1. Run a server locally to ingest events from DevRev. The `port` parameter is optional. If not set, the server starts default on `8000`. - -``` -npm run test:server -- --port=<PORT> -``` - -2. Expose the local port as a publicly available URL. We recommend using [`ngrok`](https://ngrok.com/download) since it is free and easy to set up. The command for running ngrok tunnelling on port `8000`: - -``` -ngrok http 8000 -``` - -This returns a public HTTP URL. - -3. Create a snap-in version with the `testing_url` flag set - -``` -devrev snap_in_version create-one --path <template path> --create-package --testing_url <HTTP_URL> -``` - -Here, `HTTP_URL` is the publicly available URL from Step 2. The URL should start with `http` or `https` - -4. Once the snap-in version is ready, create a snap-in, update and activate it. - -``` -devrev snap_in draft -``` - -Update the snap-in through UI or using the CLI: - -``` -devrev snap_in update -``` - -Activate the snap-in through UI or through the CLI command: - -``` -devrev snap_in activate -``` - -### Receiving events locally - -After the snap-in has been activated, it can receive events locally from DevRev as a -snap-in would. If the snap-in was listening to `work_created` event type, then creating a -new work-item would send the event to the local server. - -If utilizing ngrok, accessing the ngrok UI is possible by opening http://127.0.0.1:4040/ in the browser. This interface offers a neat way to review the list of requests and replay them if necessary. - -The service account token included with the request is valid for only 30 minutes. Therefore, attempting to call the DevRev API with that token for events older than this timeframe will result in a '401 Unauthorized' error. - -### Updating manifest or the URL - -The code can be changed without the need to create a snap-in version or redeploy the snap-in. On any change to the -`src` folder, the server restarts with the updated changes. However, on [patch compatible](https://developer.devrev.ai/snap-in-development/upgrade-snap-ins#version-compatibility) updates to the manifest or the testing URL, we can `upgrade` the snap-in version. - -``` -devrev snap_in_version upgrade --manifest <PATH_TO_MANIFEST> --testing-url <UPDATED_URL> -``` - -In case of non-patch compatible updates, the `force` flag can be used to upgrade the version. However this will delete any -existing snap-ins that have been created from this version. - -``` -devrev snap_in_version upgrade --force --manifest <PATH_TO_MANIFEST> --testing-url <UPDATED_URL> -``` - -Do note that manifest must always be provided when upgrading a snap-in version. From fa3ae61b4f5b300fffb9bf4b1d43a2206ab2f460 Mon Sep 17 00:00:00 2001 From: navneel mandal <navneel99@gmail.com> Date: Mon, 1 Jul 2024 11:49:57 +0530 Subject: [PATCH 03/11] add post comment operation --- 14-operations/README.md | 4 + .../functions/on_work_creation/index.test.ts | 69 --------------- .../src/functions/on_work_creation/index.ts | 33 ------- .../operation_handler/get_temperature.ts | 2 +- .../src/functions/operation_handler/index.ts | 5 +- .../post_comment_on_ticket.ts | 85 +++++++++++++++++++ 14-operations/manifest.yaml | 39 ++++++--- 7 files changed, 123 insertions(+), 114 deletions(-) delete mode 100644 14-operations/code/src/functions/on_work_creation/index.test.ts delete mode 100644 14-operations/code/src/functions/on_work_creation/index.ts create mode 100644 14-operations/code/src/functions/operation_handler/post_comment_on_ticket.ts diff --git a/14-operations/README.md b/14-operations/README.md index 4d916c7..c48a227 100644 --- a/14-operations/README.md +++ b/14-operations/README.md @@ -4,3 +4,7 @@ The snap-in contains custom operations which can be used in the Workflow Builder Operations are workflow node blueprint which are used to create worlkflow steps(nodes). + +## Operations in the snap-in + + diff --git a/14-operations/code/src/functions/on_work_creation/index.test.ts b/14-operations/code/src/functions/on_work_creation/index.test.ts deleted file mode 100644 index 8bb2e28..0000000 --- a/14-operations/code/src/functions/on_work_creation/index.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { testRunner } from '../../test-runner/test-runner'; -import { client } from '@devrev/typescript-sdk'; -import { handleEvent } from '.'; - -jest.mock('@devrev/typescript-sdk', () => ({ - client: { - setup: jest.fn(), - }, - publicSDK: { - WorkType: { - Ticket: 'ticket', - }, - }, -})); - -describe('Example Index Test file', () => { - it('Testing handleEvent', async () => { - const mockSetup = jest.fn(); - client.setup = mockSetup; - const mockWorkList = jest.fn(); - mockSetup.mockReturnValue({ - worksList: mockWorkList, - }); - mockWorkList.mockReturnValue({ - data: { - works: [ - { - id: '123', - }, - ], - }, - }); - const event = { - payload: { - work_created: { - work: { - id: '123', - }, - }, - }, - context: { - secrets: { - service_account_token: 'TEST-PAT', - }, - }, - execution_metadata: { - devrev_endpoint: 'https://devrev.com', - }, - }; - const expectedResp = { - works: [ - { - id: '123', - }, - ], - }; - const response = await handleEvent(event); - expect(response).toEqual(expectedResp); - }); -}); - -describe('Example Index Test file', () => { - it('Testing the method', () => { - testRunner({ - fixturePath: 'on_work_created_event.json', - functionName: 'on_work_creation', - }); - }); -}); diff --git a/14-operations/code/src/functions/on_work_creation/index.ts b/14-operations/code/src/functions/on_work_creation/index.ts deleted file mode 100644 index face732..0000000 --- a/14-operations/code/src/functions/on_work_creation/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { client, publicSDK } from "@devrev/typescript-sdk"; - -export async function handleEvent( - event: any, -) { - const devrevPAT = event.context.secrets.service_account_token; - const APIBase = event.execution_metadata.devrev_endpoint; - const devrevSDK = client.setup({ - endpoint: APIBase, - token: devrevPAT, - }) - try { - const response = await devrevSDK.worksList({ - limit: 1, - type: [publicSDK.WorkType.Ticket] - }); - return response; - } catch (error) { - console.log(error); - return error; - } -} - -export const run = async (events: any[]) => { - /* - Put your code here to handle the event. - */ - for (let event of events) { - await handleEvent(event); - } -}; - -export default run; diff --git a/14-operations/code/src/functions/operation_handler/get_temperature.ts b/14-operations/code/src/functions/operation_handler/get_temperature.ts index df81880..475798d 100644 --- a/14-operations/code/src/functions/operation_handler/get_temperature.ts +++ b/14-operations/code/src/functions/operation_handler/get_temperature.ts @@ -19,7 +19,7 @@ export class GetTemperature extends OperationBase { super(e); } - // // This is optional and can be used to provide any extra context required. + // This is optional and can be used to provide any extra context required. override GetContext(): OperationContext { let baseMetadata = super.GetContext(); const temperatures: Record<string, number> = { diff --git a/14-operations/code/src/functions/operation_handler/index.ts b/14-operations/code/src/functions/operation_handler/index.ts index 327cec1..71a63b6 100644 --- a/14-operations/code/src/functions/operation_handler/index.ts +++ b/14-operations/code/src/functions/operation_handler/index.ts @@ -1,7 +1,9 @@ -import { GetTemperature } from './get_temperature'; import { OperationFactory } from '../../operations'; import { ExecuteOperationInput,FunctionInput, OperationMap } from '@devrev/typescript-sdk/dist/snap-ins'; +// Operations +import { GetTemperature } from './get_temperature'; +import { PostCommentOnTicket } from './post_comment_on_ticket'; /** * Map of operations with the slug mentioned in the manifest. @@ -9,6 +11,7 @@ import { ExecuteOperationInput,FunctionInput, OperationMap } from '@devrev/types */ const operationMap: OperationMap = { get_temperature: GetTemperature, + post_comment_on_ticket: PostCommentOnTicket, }; export const run = async (events: FunctionInput[]) => { diff --git a/14-operations/code/src/functions/operation_handler/post_comment_on_ticket.ts b/14-operations/code/src/functions/operation_handler/post_comment_on_ticket.ts new file mode 100644 index 0000000..e8ef4c2 --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/post_comment_on_ticket.ts @@ -0,0 +1,85 @@ +import { client } from '@devrev/typescript-sdk'; +import { TimelineEntriesCreateRequestType } from '@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +interface PostCommentOnTicketInput { + id: string; + comment: string; +} + +export class PostCommentOnTicket extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, _resources: any): Promise<OperationOutput> { + const input_data = input.data as PostCommentOnTicketInput; + const ticket_id = input_data.id; + const comment = input_data.comment; + + let err: OperationError | undefined = undefined; + if (!ticket_id) { + err = { + message: 'Ticket ID not found', + type: Error_Type.InvalidRequest, + }; + } + + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const devrevBetaClient = client.setupBeta({ + endpoint: endpoint, + token: token, + }); + let ticket; + try { + const ticketResponse = await devrevBetaClient.worksGet({ + id: ticket_id, + }); + console.log(JSON.stringify(ticketResponse.data)); + ticket = ticketResponse.data.work; + } catch (e: any) { + err = { + message: 'Error while fetching ticket details:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + }); + } + + try { + const timelineCommentResponse = await devrevBetaClient.timelineEntriesCreate({ + body: comment, + type: TimelineEntriesCreateRequestType.TimelineComment, + object: ticket.id, + }); + console.log(JSON.stringify(timelineCommentResponse.data)); + let commentID = timelineCommentResponse.data.timeline_entry.id; + return OperationOutput.fromJSON({ + error: err, + output: { + values: [{ comment_id: commentID }], + } as OutputValue, + }); + } catch (e: any) { + err = { + message: 'Error while posting comment:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + }); + } + } +} diff --git a/14-operations/manifest.yaml b/14-operations/manifest.yaml index 3f50948..aed3840 100644 --- a/14-operations/manifest.yaml +++ b/14-operations/manifest.yaml @@ -1,18 +1,12 @@ -# For reference: https://docs.devrev.ai/snap-ins/references/manifest. -# Refactor the code based on your business logic. - version: "2" name: "3P Operation Get Temperature" description: "Logs a message when a work item is created" -# This is the name displayed in DevRev where the Snap-In takes actions using the token of this service account. service_account: - display_name: DevRev Bot + display_name: 3P Operation Bot functions: - - name: on_work_creation - description: function to trigger on work creation - - name: handler + - name: operation_handler description: function to handle operations operations: @@ -20,7 +14,7 @@ operations: display_name: Get Temperature description: Operation to get the temperature of a city slug: get_temperature - function: handler + function: operation_handler type: action inputs: fields: @@ -36,10 +30,35 @@ operations: default_value: "New York" ui: display_name: City - outputs: fields: - name: temperature field_type: double ui: display_name: Temperature + - name: post_comment_on_ticket + display_name: Post Comment on Ticket + description: Operation to post a comment on ticket + slug: post_comment_on_ticket + function: operation_handler + type: action + inputs: + fields: + - name: id + description: Ticket ID to post comment on. + field_type: string + is_required: true + ui: + display_name: Ticket ID + - name: comment + description: Comment to post on ticket. + field_type: string + is_required: true + ui: + display_name: Comment + outputs: + fields: + - name: comment_id + field_type: string + ui: + display_name: Comment ID From 8fc1f7274a857fa2dcb7bf2f82784d14c59dd997 Mon Sep 17 00:00:00 2001 From: navneel mandal <navneel99@gmail.com> Date: Tue, 9 Jul 2024 09:29:21 +0530 Subject: [PATCH 04/11] add send slack message --- 14-operations/README.md | 3 + 14-operations/code/package-lock.json | 128 +++++++++++++++++- 14-operations/code/package.json | 3 +- 14-operations/code/src/function-factory.ts | 2 - .../src/functions/operation_handler/index.ts | 7 +- .../operation_handler/send_slack_message.ts | 86 ++++++++++++ .../code/src/test-runner/example.test.ts | 15 -- 14-operations/code/test/runner.ts | 46 +++++-- 14-operations/manifest.yaml | 43 +++++- 9 files changed, 297 insertions(+), 36 deletions(-) create mode 100644 14-operations/code/src/functions/operation_handler/send_slack_message.ts delete mode 100644 14-operations/code/src/test-runner/example.test.ts diff --git a/14-operations/README.md b/14-operations/README.md index c48a227..7fa0169 100644 --- a/14-operations/README.md +++ b/14-operations/README.md @@ -7,4 +7,7 @@ Operations are workflow node blueprint which are used to create worlkflow steps( ## Operations in the snap-in +The snap-in contains the following operations: + + diff --git a/14-operations/code/package-lock.json b/14-operations/code/package-lock.json index 2211e22..f7b0f92 100644 --- a/14-operations/code/package-lock.json +++ b/14-operations/code/package-lock.json @@ -9,7 +9,8 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@devrev/typescript-sdk": "1.1.27", + "@devrev/typescript-sdk": "1.1.28", + "@slack/web-api": "7.3.1", "protobufjs": "7.3.0" }, "devDependencies": { @@ -1837,9 +1838,9 @@ } }, "node_modules/@devrev/typescript-sdk": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/@devrev/typescript-sdk/-/typescript-sdk-1.1.27.tgz", - "integrity": "sha512-Vc37gTv8CMl/vM1WLFYJxdt6Khdzl5RU4/WPAbBeFNOQSyTaZCTaZhIgIbhSWf892tcUqNiV//QvQJsRSNmR3Q==", + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@devrev/typescript-sdk/-/typescript-sdk-1.1.28.tgz", + "integrity": "sha512-MgdM8c7uWsTDpSN5MuiAwHeZGqcc7V99mZyCbNxNMoyle35kVgKgUersMPG5st7mKK5WPcS/Fz0jBZ+Z4hr+Uw==", "dependencies": { "@types/yargs": "^17.0.22", "axios": "^1.3.6", @@ -2824,6 +2825,50 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@slack/logger": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-4.0.0.tgz", + "integrity": "sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==", + "dependencies": { + "@types/node": ">=18.0.0" + }, + "engines": { + "node": ">= 18", + "npm": ">= 8.6.0" + } + }, + "node_modules/@slack/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@slack/types/-/types-2.12.0.tgz", + "integrity": "sha512-yFewzUomYZ2BYaGJidPuIgjoYj5wqPDmi7DLSaGIkf+rCi4YZ2Z3DaiYIbz7qb/PL2NmamWjCvB7e9ArI5HkKg==", + "engines": { + "node": ">= 12.13.0", + "npm": ">= 6.12.0" + } + }, + "node_modules/@slack/web-api": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.3.1.tgz", + "integrity": "sha512-n2KfnlqjaPJ5y98nU5Nn0UwTIxafLwQSQIOLpsQXKGYDF24S/ap5Ebv+ifVMtY+vIJBqj1q2+l3W9bpFHeiJ2A==", + "dependencies": { + "@slack/logger": "^4.0.0", + "@slack/types": "^2.9.0", + "@types/node": ">=18.0.0", + "@types/retry": "0.12.0", + "axios": "^1.6.5", + "eventemitter3": "^5.0.1", + "form-data": "^4.0.0", + "is-electron": "2.2.2", + "is-stream": "^2", + "p-queue": "^6", + "p-retry": "^4", + "retry": "^0.13.1" + }, + "engines": { + "node": ">= 18", + "npm": ">= 8.6.0" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -3019,6 +3064,11 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", @@ -5312,6 +5362,11 @@ "node": ">= 0.6" } }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -6241,6 +6296,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -6359,7 +6419,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "engines": { "node": ">=8" }, @@ -8626,6 +8685,14 @@ "node": ">= 0.8.0" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -8668,6 +8735,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.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", @@ -9243,6 +9353,14 @@ "node": ">=10" } }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", diff --git a/14-operations/code/package.json b/14-operations/code/package.json index a90dc09..48abbae 100644 --- a/14-operations/code/package.json +++ b/14-operations/code/package.json @@ -54,7 +54,8 @@ "yargs": "^17.6.2" }, "dependencies": { - "@devrev/typescript-sdk": "1.1.27", + "@devrev/typescript-sdk": "1.1.28", + "@slack/web-api": "7.3.1", "protobufjs": "7.3.0" } } diff --git a/14-operations/code/src/function-factory.ts b/14-operations/code/src/function-factory.ts index 278fd48..827bfa9 100644 --- a/14-operations/code/src/function-factory.ts +++ b/14-operations/code/src/function-factory.ts @@ -1,9 +1,7 @@ -import on_work_creation from './functions/on_work_creation'; import operation_handler from './functions/operation_handler'; export const functionFactory = { // Add your functions here - on_work_creation, operation_handler, } as const; diff --git a/14-operations/code/src/functions/operation_handler/index.ts b/14-operations/code/src/functions/operation_handler/index.ts index 71a63b6..968023e 100644 --- a/14-operations/code/src/functions/operation_handler/index.ts +++ b/14-operations/code/src/functions/operation_handler/index.ts @@ -4,6 +4,7 @@ import { ExecuteOperationInput,FunctionInput, OperationMap } from '@devrev/types // Operations import { GetTemperature } from './get_temperature'; import { PostCommentOnTicket } from './post_comment_on_ticket'; +import { SendSlackMessage } from './send_slack_message'; /** * Map of operations with the slug mentioned in the manifest. @@ -12,19 +13,21 @@ import { PostCommentOnTicket } from './post_comment_on_ticket'; const operationMap: OperationMap = { get_temperature: GetTemperature, post_comment_on_ticket: PostCommentOnTicket, + send_slack_message: SendSlackMessage, }; export const run = async (events: FunctionInput[]) => { const event = events[0]; const payload = event.payload as ExecuteOperationInput - + console.log("Event: ", event); const operationSlug = payload.metadata!.slug; const operationNamespace = payload.metadata!.namespace; console.log('running operation: ', operationSlug, ' in namespace: ', operationNamespace); const operationFactory = new OperationFactory(operationMap); const operation = operationFactory.getOperation(operationSlug, event); const ctx = operation.GetContext(event); - return await operation.run(ctx, payload, {}); + const resources = event.input_data.resources||{}; + return await operation.run(ctx, payload, resources); }; export default run; diff --git a/14-operations/code/src/functions/operation_handler/send_slack_message.ts b/14-operations/code/src/functions/operation_handler/send_slack_message.ts new file mode 100644 index 0000000..91a0514 --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/send_slack_message.ts @@ -0,0 +1,86 @@ +import { client } from '@devrev/typescript-sdk'; +import { TimelineEntriesCreateRequestType } from '@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +import { WebClient } from '@slack/web-api'; + +interface SendSlackMessageInput { + channel: string; + message: string; +} + +export class SendSlackMessage extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as SendSlackMessageInput; + const channel_id = input_data.channel; + const comment = input_data.message; + + let err: OperationError | undefined = undefined; + if (!channel_id) { + err = { + message: 'Channel ID not found', + type: Error_Type.InvalidRequest, + }; + } + + console.log("context:", context); + + const slack_token = resources.keyrings.slack_token.secret; + let slackClient; + try { + console.log('Creating slack client'); + slackClient = new WebClient(slack_token); + console.log('Slack client created'); + } catch (e: any) { + console.log('Error while creating slack client:', e.message); + err = { + message: 'Error while creating slack client:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + output: { + values: [], + } as OutputValue, + }); + } + console.log('Sending message to slack channel:', channel_id); + try { + const result = await slackClient.chat.postMessage({ + channel: channel_id, + text: comment, + }); + console.log('Message sent: ', result.ts); + return OperationOutput.fromJSON({ + error: err, + output: { + values: [{ message_id: result.ts }], + } as OutputValue, + }); + } catch (e: any) { + console.log('Error while sending message:', e.message); + err = { + message: 'Error while sending message:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + output: { + values: [], + } as OutputValue, + }); + } + } +} diff --git a/14-operations/code/src/test-runner/example.test.ts b/14-operations/code/src/test-runner/example.test.ts deleted file mode 100644 index 7bb7509..0000000 --- a/14-operations/code/src/test-runner/example.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { run } from '../functions/on_work_creation'; - -describe('Test some function', () => { - it('Something', () => { - run([{ - payload: { - work_created: { - work: { - id: 'some-id' - } - } - } - }]); - }); -}); diff --git a/14-operations/code/test/runner.ts b/14-operations/code/test/runner.ts index e19e1f2..c0fa89d 100644 --- a/14-operations/code/test/runner.ts +++ b/14-operations/code/test/runner.ts @@ -32,6 +32,17 @@ import { SnapInsSystemUpdateResponse, } from './types'; + +import { + Context as SnapInContext, + ExecuteOperationResult, + ExecuteOperationResult_SerializationFormat, + ExecutionMetadata, + FunctionExecutionError, + FunctionInput, + OperationOutput, +} from '@devrev/typescript-sdk/dist/snap-ins'; + const app: Express = express(); app.use(bodyParser.json(), bodyParser.urlencoded({ extended: false })); @@ -120,24 +131,27 @@ async function handleEvent(events: any[], isAsync: boolean, resp: Response) { console.error(error.err_msg); receivedError = true; } else { - result = run(f, [event]); + result = await run(f, [event]); } } catch (e) { error = { error: e } as FunctionError; console.error(e); } - // post processing. result is updated in the function - await postRun(event, error, result); + // Any common post processing goes here. The function returns + // only if the function execution was by an operation } + const opResult = await postRun(event,error, result); // Return result. let res: ExecutionResult = {}; - if (result !== undefined) { + if (opResult !== undefined) { + res.function_result = opResult; + } else if (result !== undefined) { res.function_result = result; } - + if (error !== undefined) { res.error = error; } @@ -150,13 +164,25 @@ async function handleEvent(events: any[], isAsync: boolean, resp: Response) { } // post processing -async function postRun(event: any, handlerError: HandlerError, result: any) { +async function postRun(event: any, handlerError: HandlerError, result: any){ console.debug('Function execution complete'); + // Check if the function was invoked by an operation. + if (isInvokedFromOperation(event)) { + // handle operation specific logic + console.debug('Function was invoked by an operation'); + const data: Uint8Array = OperationOutput.encode(result).finish(); + + return { + serialization_format: ExecuteOperationResult_SerializationFormat.Proto, + data: Buffer.from(data).toString('base64'), + } as ExecuteOperationResult; + } if (isActivateHook(event)) { - handleActivateHookResult(event, handlerError, result); + handleActivateHookResult(event,handlerError, result); } else if (isDeactivateHook(event)) { - handleDeactivateHookResult(event, handlerError, result); + handleDeactivateHookResult(event,handlerError, result); } + return undefined } function isActivateHook(event: any): boolean { @@ -167,6 +193,10 @@ function isDeactivateHook(event: any): boolean { return event.execution_metadata.event_type === 'hook:snap_in_deactivate'; } +function isInvokedFromOperation(event: any): boolean { + return event.execution_metadata.operation_slug !== undefined; +} + function handleActivateHookResult(event: any, handlerError: HandlerError, result: any) { let update_req: SnapInsSystemUpdateRequest = { id: event.context.snap_in_id, diff --git a/14-operations/manifest.yaml b/14-operations/manifest.yaml index aed3840..83812ea 100644 --- a/14-operations/manifest.yaml +++ b/14-operations/manifest.yaml @@ -9,6 +9,10 @@ functions: - name: operation_handler description: function to handle operations + +keyring_types: + + operations: - name: get_temperature display_name: Get Temperature @@ -46,19 +50,52 @@ operations: fields: - name: id description: Ticket ID to post comment on. - field_type: string + field_type: text is_required: true ui: display_name: Ticket ID - name: comment description: Comment to post on ticket. - field_type: string + field_type: text is_required: true ui: display_name: Comment outputs: fields: - name: comment_id - field_type: string + field_type: text ui: display_name: Comment ID + - name: send_slack_message + display_name: Send Slack Message + description: Operation to send a message to a Slack channel/thread + slug: send_slack_message + function: operation_handler + type: action + keyrings: + - name: slack_token + display_name: Slack Connection + description: Connection to Slack + types: + - slack + inputs: + fields: + - name: channel + description: Channel to send message to. + field_type: text + is_required: true + ui: + display_name: Channel + - name: message + description: Message to send. + field_type: text + is_required: true + ui: + display_name: Message + outputs: + fields: + - name: message_id + field_type: text + ui: + display_name: Message ID + \ No newline at end of file From de091014b207f6993aff8468fce01d9fa49b2166 Mon Sep 17 00:00:00 2001 From: madhav <madhav.sikka@devrev.ai> Date: Mon, 15 Jul 2024 19:00:44 +0530 Subject: [PATCH 05/11] working --- .../operation_handler/callback_node.ts | 60 +++ .../operation_handler/get_knowledge.ts | 56 +++ .../src/functions/operation_handler/index.ts | 10 +- .../operation_handler/text_to_dataset.ts | 90 +++++ 14-operations/manifest.yaml | 100 +++-- 14-operations/package-lock.json | 6 + 14-operations/steps.json | 380 ++++++++++++++++++ 7 files changed, 645 insertions(+), 57 deletions(-) create mode 100644 14-operations/code/src/functions/operation_handler/callback_node.ts create mode 100644 14-operations/code/src/functions/operation_handler/get_knowledge.ts create mode 100644 14-operations/code/src/functions/operation_handler/text_to_dataset.ts create mode 100644 14-operations/package-lock.json create mode 100644 14-operations/steps.json diff --git a/14-operations/code/src/functions/operation_handler/callback_node.ts b/14-operations/code/src/functions/operation_handler/callback_node.ts new file mode 100644 index 0000000..720a694 --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/callback_node.ts @@ -0,0 +1,60 @@ +import { client } from '@devrev/typescript-sdk'; +import { + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import { postCallAPI } from './text_to_dataset'; + +export class AgentCallback extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(metadata: OperationContext, input: ExecuteOperationInput, _: any): Promise<OperationOutput> { + const data = input.data as Record<string, any>; + const endpoint = metadata.devrev_endpoint; + const token = metadata.secrets.access_token; + + const agent_session_id = data['agent_session_id']; + const skill_call_id = data['skill_call_id']; + const skill_name = data['skill_name']; + const outputJSON = data['output']; + const error = data['error'] || ""; + const output = JSON.parse(outputJSON); + + const req = { + agent_session: agent_session_id, + skill_call_output: { + id: skill_call_id, + name: skill_name, + output: output, + error: error, + }, + } as Record<string, any>; + + try { + const resp = await postCallAPI(`${endpoint}/internal/ai-agents.callback`, req, token); + return OperationOutput.fromJSON({ + error: undefined, + summary: `Executed Data: ${data}`, + output: { + values: [ + { + agent_session_id: agent_session_id, + skill_call_id: skill_call_id, + skill_name: skill_name, + output: output, + callback_request_success: true, + }, + ], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/14-operations/code/src/functions/operation_handler/get_knowledge.ts b/14-operations/code/src/functions/operation_handler/get_knowledge.ts new file mode 100644 index 0000000..855c16f --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/get_knowledge.ts @@ -0,0 +1,56 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; +import { postCallAPI } from './text_to_dataset'; + +interface GetKnowledgeInput { + query: string; +} + +export class GetKnowledge extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as GetKnowledgeInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const query = input_data.query; + + let err: OperationError | undefined = undefined; + if (!query) { + err = { + message: 'query not found', + type: Error_Type.InvalidRequest, + }; + } + + try { + const replyResp = await postCallAPI( + `${endpoint}/internal/recommendations.get-reply`, + { query: input_data.query, surface: 'plug' }, + token + ); + + return OperationOutput.fromJSON({ + summary: `Found knowledge: ${replyResp.data.reply}`, + output: { + values: [{ knowledge: JSON.stringify(replyResp.data.reply)}], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/14-operations/code/src/functions/operation_handler/index.ts b/14-operations/code/src/functions/operation_handler/index.ts index 968023e..2651e0a 100644 --- a/14-operations/code/src/functions/operation_handler/index.ts +++ b/14-operations/code/src/functions/operation_handler/index.ts @@ -3,8 +3,9 @@ import { ExecuteOperationInput,FunctionInput, OperationMap } from '@devrev/types // Operations import { GetTemperature } from './get_temperature'; -import { PostCommentOnTicket } from './post_comment_on_ticket'; -import { SendSlackMessage } from './send_slack_message'; +import { TextToDataset } from './text_to_dataset'; +import { AgentCallback } from './callback_node'; +import { GetKnowledge } from './get_knowledge'; /** * Map of operations with the slug mentioned in the manifest. @@ -12,8 +13,9 @@ import { SendSlackMessage } from './send_slack_message'; */ const operationMap: OperationMap = { get_temperature: GetTemperature, - post_comment_on_ticket: PostCommentOnTicket, - send_slack_message: SendSlackMessage, + text_to_dataset: TextToDataset, + agent_callback_node: AgentCallback, + get_knowledge: GetKnowledge, }; export const run = async (events: FunctionInput[]) => { diff --git a/14-operations/code/src/functions/operation_handler/text_to_dataset.ts b/14-operations/code/src/functions/operation_handler/text_to_dataset.ts new file mode 100644 index 0000000..db5a1cc --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/text_to_dataset.ts @@ -0,0 +1,90 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function postCallAPI(endpoint: string, payload: any, authKey: string) { + try { + const res = await axios.post(endpoint, payload, { + headers: { + Authorization: authKey, + 'Content-type': 'application/json', + }, + }); + const data = res.data; + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface TextToDatasetInput { + query: string; +} + +export class TextToDataset extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as TextToDatasetInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const devrevSDK = client.setupBeta({ endpoint, token }); + const query = input_data.query; + + let err: OperationError | undefined = undefined; + if (!query) { + err = { + message: 'query not found', + type: Error_Type.InvalidRequest, + }; + } + + try { + let datasetsInformation = {} as Record<string, any>; + + const coreSearchResp = await postCallAPI( + `${endpoint}/internal/search.core`, + { query: input_data.query, limit: 3, namespaces: ['dataset'] }, + token + ); + for (const searchResp of coreSearchResp.data.results) { + if (searchResp.type === 'dataset') { + const datasetSummary = searchResp as any; + const datasetId = datasetSummary.dataset.id; + const datasetGetResp = await postCallAPI(`${endpoint}/internal/oasis.dataset.get`, { id: datasetId }, token); + const datasetInfo = { title: datasetGetResp.data.dataset.title, description: datasetGetResp.data.dataset.description, columns: datasetGetResp.data.dataset.columns }; + datasetsInformation[datasetInfo.title] = JSON.stringify(datasetInfo); + } + } + + console.log({ datasetsInformation }); + + return OperationOutput.fromJSON({ + summary: `Found datasets: ${input_data.query}`, + output: { + values: [{ datasets: JSON.stringify(datasetsInformation) }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/14-operations/manifest.yaml b/14-operations/manifest.yaml index 83812ea..bdbf347 100644 --- a/14-operations/manifest.yaml +++ b/14-operations/manifest.yaml @@ -1,5 +1,5 @@ version: "2" -name: "3P Operation Get Temperature" +name: "Insights Agent" description: "Logs a message when a work item is created" service_account: @@ -14,88 +14,82 @@ keyring_types: operations: - - name: get_temperature - display_name: Get Temperature - description: Operation to get the temperature of a city - slug: get_temperature + - name: text_to_dataset + display_name: Text to Dataset + description: Operation to convert text to a dataset + slug: text_to_dataset function: operation_handler type: action inputs: fields: - - name: city - field_type: enum - allowed_values: - - New York - - San Francisco - - Los Angeles - - Chicago - - Houston + - name: query + field_type: text is_required: true - default_value: "New York" ui: - display_name: City + display_name: Query outputs: fields: - - name: temperature - field_type: double + - name: datasets + field_type: text ui: - display_name: Temperature - - name: post_comment_on_ticket - display_name: Post Comment on Ticket - description: Operation to post a comment on ticket - slug: post_comment_on_ticket + display_name: Datasets + + - name: get_knowledge + display_name: Get Knowledge + description: Find answers from knowledge base + slug: get_knowledge function: operation_handler type: action inputs: fields: - - name: id - description: Ticket ID to post comment on. - field_type: text - is_required: true - ui: - display_name: Ticket ID - - name: comment - description: Comment to post on ticket. + - name: query field_type: text is_required: true ui: - display_name: Comment + display_name: Query outputs: fields: - - name: comment_id + - name: knowledge field_type: text ui: - display_name: Comment ID - - name: send_slack_message - display_name: Send Slack Message - description: Operation to send a message to a Slack channel/thread - slug: send_slack_message + display_name: Knowledge + + - name: agent_callback_node + description: Operation to return the output of the workflow to the agent + slug: agent_callback_node function: operation_handler type: action - keyrings: - - name: slack_token - display_name: Slack Connection - description: Connection to Slack - types: - - slack inputs: fields: - - name: channel - description: Channel to send message to. + - name: agent_session_id + field_type: id + id_type: + - ai_agent_session + is_required: true + ui: + display_name: Agent Session + - name: skill_call_id + field_type: text + is_required: true + ui: + display_name: Skill Call ID + - name: skill_name field_type: text is_required: true ui: - display_name: Channel - - name: message - description: Message to send. + display_name: Skill Name + - name: output field_type: text is_required: true ui: - display_name: Message + display_name: Output + - name: error + field_type: text + ui: + display_name: Error outputs: fields: - - name: message_id - field_type: text + - name: success + field_type: bool ui: - display_name: Message ID - \ No newline at end of file + display_name: Success diff --git a/14-operations/package-lock.json b/14-operations/package-lock.json new file mode 100644 index 0000000..bec3453 --- /dev/null +++ b/14-operations/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "14-operations", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/14-operations/steps.json b/14-operations/steps.json new file mode 100644 index 0000000..48b9c5e --- /dev/null +++ b/14-operations/steps.json @@ -0,0 +1,380 @@ +{ + "created_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "created_date": "2024-07-15T12:40:45.534Z", + "description": "Step for manually triggering get account workflow", + "display_id": "workflow_step-160.1355", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1355", + "modified_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "modified_date": "2024-07-15T13:17:39.189Z", + "name": "Update ticket manual trigger", + "next_steps": [ + { + "next_port_name": "input", + "next_step": { + "display_id": "workflow_step-160.1357", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1357" + }, + "port_name": "output" + } + ], + "operation": { + "display_id": "operation-devrev.manual_trigger", + "id": "don:integration:dvrv-us-1:operation/devrev.manual_trigger", + "namespace": "devrev", + "output_ports": [ + { + "name": "output", + "type": "default" + } + ], + "slug": "manual_trigger", + "type": "trigger" + }, + "output_ports": [ + { + "name": "output", + "schema": { + "field_descriptors": [ + { + "field_type": "id", + "db_name": "agent_session_id", + "description": "The ID of the agent session", + "id_type": [ + "ai_agent_session" + ], + "is_required": true, + "name": "agent_session_id" + }, + { + "field_type": "text", + "db_name": "skill_call_id", + "description": "The ID of the skill call being executed", + "is_required": true, + "name": "skill_call_id" + }, + { + "field_type": "text", + "db_name": "skill_name", + "description": "The name of the skill being executed", + "is_required": true, + "name": "skill_name" + }, + { + "field_type": "text", + "db_name": "query", + "description": "The user query to find the datasets for", + "is_required": true, + "name": "query" + } + ], + "type": "field_descriptor" + } + } + ], + "reference_key": "ai_agent_skill_manual_trigger", + "ui_metadata": { + "position": { + "x": 0, + "y": 0 + } + }, + "version": "0.0.1", + "workflow": { + "display_id": "workflow-160", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160" + } +} + +{ + "created_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "created_date": "2024-07-15T12:40:56.306Z", + "description": "Operation to convert text to a dataset", + "display_id": "workflow_step-160.1357", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1357", + "input_values": [ + { + "fields": [ + { + "name": "query", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').query" + } + } + ], + "port_name": "input" + } + ], + "modified_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "modified_date": "2024-07-15T12:45:02.694Z", + "name": "Text To Dataset", + "next_steps": [ + { + "next_port_name": "input", + "next_step": { + "display_id": "workflow_step-160.1358", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1358" + }, + "port_name": "output" + } + ], + "operation": { + "display_id": "operation-insights-agent.text_to_dataset", + "id": "don:integration:dvrv-us-1:devo/787:operation/insights-agent.text_to_dataset", + "input_ports": [ + { + "name": "input", + "type": "default" + } + ], + "namespace": "insights-agent", + "output_ports": [ + { + "name": "output", + "type": "default" + } + ], + "slug": "text_to_dataset", + "type": "action" + }, + "reference_key": "text_to_dataset_1", + "ui_metadata": { + "position": { + "x": 100, + "y": 150 + } + }, + "version": "0.0.1", + "workflow": { + "display_id": "workflow-160", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160" + } +} + +{ + "created_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "created_date": "2024-07-15T12:41:01.582Z", + "description": "Operation to return the output of the workflow to the agent", + "display_id": "workflow_step-160.1358", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1358", + "input_values": [ + { + "fields": [ + { + "name": "agent_session_id", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').agent_session_id" + } + }, + { + "name": "skill_call_id", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').skill_call_id" + } + }, + { + "name": "skill_name", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').skill_name" + } + }, + { + "name": "redis_subscription_id", + "value": { + "type": "literal", + "value": "N/A" + } + }, + { + "name": "output", + "value": { + "type": "jsonata_expression", + "value": "$get('text_to_dataset_1', 'output').datasets" + } + } + ], + "port_name": "input" + } + ], + "modified_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "modified_date": "2024-07-15T12:50:19.063Z", + "name": "Agent Callback Node", + "operation": { + "display_id": "operation-agent-operations-custom.agent_callback_node", + "id": "don:integration:dvrv-us-1:devo/787:operation/agent-operations-custom.agent_callback_node", + "input_ports": [ + { + "name": "input", + "type": "default" + } + ], + "namespace": "agent-operations-custom", + "output_ports": [ + { + "name": "output", + "type": "default" + } + ], + "slug": "agent_callback_node", + "type": "action" + }, + "reference_key": "agent_callback_node_1", + "ui_metadata": { + "position": { + "x": 200, + "y": 300 + } + }, + "version": "0.0.1", + "workflow": { + "display_id": "workflow-160", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160" + } +} \ No newline at end of file From 395681408aac3053902a3877513fb25b071972cf Mon Sep 17 00:00:00 2001 From: madhav <madhav.sikka@devrev.ai> Date: Wed, 7 Aug 2024 15:58:50 +0530 Subject: [PATCH 06/11] bump --- .../src/functions/operation_handler/index.ts | 2 + .../functions/operation_handler/run_sql.ts | 78 +++++++++++++++++++ .../operation_handler/text_to_dataset.ts | 4 +- 14-operations/manifest.yaml | 20 +++++ 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 14-operations/code/src/functions/operation_handler/run_sql.ts diff --git a/14-operations/code/src/functions/operation_handler/index.ts b/14-operations/code/src/functions/operation_handler/index.ts index 2651e0a..80df394 100644 --- a/14-operations/code/src/functions/operation_handler/index.ts +++ b/14-operations/code/src/functions/operation_handler/index.ts @@ -6,6 +6,7 @@ import { GetTemperature } from './get_temperature'; import { TextToDataset } from './text_to_dataset'; import { AgentCallback } from './callback_node'; import { GetKnowledge } from './get_knowledge'; +import { RunSQL } from './run_sql'; /** * Map of operations with the slug mentioned in the manifest. @@ -16,6 +17,7 @@ const operationMap: OperationMap = { text_to_dataset: TextToDataset, agent_callback_node: AgentCallback, get_knowledge: GetKnowledge, + run_sql: RunSQL, }; export const run = async (events: FunctionInput[]) => { diff --git a/14-operations/code/src/functions/operation_handler/run_sql.ts b/14-operations/code/src/functions/operation_handler/run_sql.ts new file mode 100644 index 0000000..e4e034e --- /dev/null +++ b/14-operations/code/src/functions/operation_handler/run_sql.ts @@ -0,0 +1,78 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function postCallAPI(endpoint: string, payload: any, authKey: string) { + try { + const res = await axios.post(endpoint, payload, { + headers: { + Authorization: authKey, + 'Content-type': 'application/json', + }, + }); + const data = res.data; + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface RunSQLInput { + sql_query: string; +} + +export class RunSQL extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as RunSQLInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + const query = input_data.sql_query; + + let err: OperationError | undefined = undefined; + if (!query) { + err = { + message: 'query not found', + type: Error_Type.InvalidRequest, + }; + } + + try { + let datasetsInformation = {} as Record<string, any>; + + const oasisResp = await postCallAPI( + `${endpoint}/internal/oasis.data.query`, + { sql_query: input_data.sql_query }, + token + ); + const res = atob(oasisResp.data.data); + + return OperationOutput.fromJSON({ + summary: `Executed SQL: ${input_data.sql_query}`, + output: { + values: [{ data: res }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/14-operations/code/src/functions/operation_handler/text_to_dataset.ts b/14-operations/code/src/functions/operation_handler/text_to_dataset.ts index db5a1cc..72ae786 100644 --- a/14-operations/code/src/functions/operation_handler/text_to_dataset.ts +++ b/14-operations/code/src/functions/operation_handler/text_to_dataset.ts @@ -70,8 +70,8 @@ export class TextToDataset extends OperationBase { const datasetSummary = searchResp as any; const datasetId = datasetSummary.dataset.id; const datasetGetResp = await postCallAPI(`${endpoint}/internal/oasis.dataset.get`, { id: datasetId }, token); - const datasetInfo = { title: datasetGetResp.data.dataset.title, description: datasetGetResp.data.dataset.description, columns: datasetGetResp.data.dataset.columns }; - datasetsInformation[datasetInfo.title] = JSON.stringify(datasetInfo); + const datasetInfo = { name: datasetGetResp.data.dataset.dataset_id, description: datasetGetResp.data.dataset.description, columns: datasetGetResp.data.dataset.columns }; + datasetsInformation[datasetInfo.name] = JSON.stringify(datasetInfo); } } diff --git a/14-operations/manifest.yaml b/14-operations/manifest.yaml index bdbf347..5209b6a 100644 --- a/14-operations/manifest.yaml +++ b/14-operations/manifest.yaml @@ -34,6 +34,26 @@ operations: ui: display_name: Datasets + - name: run_sql + display_name: Run SQL + description: Operation to run a sql query + slug: run_sql + function: operation_handler + type: action + inputs: + fields: + - name: sql_query + field_type: text + is_required: true + ui: + display_name: SQL Query + outputs: + fields: + - name: data + field_type: text + ui: + display_name: Data + - name: get_knowledge display_name: Get Knowledge description: Find answers from knowledge base From c00759d28a45851b8f396812c83acd42b602cb6f Mon Sep 17 00:00:00 2001 From: madhav <madhav.sikka@devrev.ai> Date: Fri, 4 Oct 2024 04:57:44 +0000 Subject: [PATCH 07/11] agent --- insights-agent/README.md | 13 + insights-agent/callback.json | 58 + insights-agent/cli.txt | 2 + insights-agent/code/.eslintrc.js | 35 + insights-agent/code/.gitignore | 39 + insights-agent/code/.npmrc | 1 + insights-agent/code/.prettierignore | 4 + insights-agent/code/.prettierrc | 15 + insights-agent/code/babel.config.js | 3 + insights-agent/code/jest.config.js | 12 + insights-agent/code/nodemon.json | 5 + insights-agent/code/package-lock.json | 10600 ++++++++++++++++ insights-agent/code/package.json | 61 + .../src/fixtures/on_work_created_event.json | 81 + insights-agent/code/src/function-factory.ts | 8 + .../operation_handler/callback_node.ts | 60 + .../operation_handler/get_current_time.ts | 32 + .../operation_handler/get_knowledge.ts | 56 + .../operation_handler/get_temperature.ts | 60 + .../src/functions/operation_handler/index.ts | 41 + .../post_comment_on_ticket.ts | 85 + .../functions/operation_handler/run_sql.ts | 78 + .../operation_handler/send_slack_message.ts | 86 + .../operation_handler/text_to_dataset.ts | 93 + .../operation_handler/text_to_widget.ts | 89 + insights-agent/code/src/index.ts | 1 + insights-agent/code/src/main.ts | 27 + insights-agent/code/src/operations/index.ts | 26 + .../code/src/test-runner/test-runner.ts | 27 + insights-agent/code/test/http_client.ts | 52 + insights-agent/code/test/main.ts | 29 + insights-agent/code/test/runner.ts | 294 + insights-agent/code/test/types.ts | 87 + insights-agent/code/tsconfig.eslint.json | 4 + insights-agent/code/tsconfig.json | 24 + insights-agent/curl.json | 87 + insights-agent/dim_ticket.json | 78 + insights-agent/manifest.yaml | 151 + insights-agent/manual.json | 50 + insights-agent/package-lock.json | 6 + insights-agent/steps.json | 380 + 41 files changed, 12940 insertions(+) create mode 100644 insights-agent/README.md create mode 100644 insights-agent/callback.json create mode 100644 insights-agent/cli.txt create mode 100644 insights-agent/code/.eslintrc.js create mode 100644 insights-agent/code/.gitignore create mode 100644 insights-agent/code/.npmrc create mode 100644 insights-agent/code/.prettierignore create mode 100644 insights-agent/code/.prettierrc create mode 100644 insights-agent/code/babel.config.js create mode 100644 insights-agent/code/jest.config.js create mode 100644 insights-agent/code/nodemon.json create mode 100644 insights-agent/code/package-lock.json create mode 100644 insights-agent/code/package.json create mode 100644 insights-agent/code/src/fixtures/on_work_created_event.json create mode 100644 insights-agent/code/src/function-factory.ts create mode 100644 insights-agent/code/src/functions/operation_handler/callback_node.ts create mode 100644 insights-agent/code/src/functions/operation_handler/get_current_time.ts create mode 100644 insights-agent/code/src/functions/operation_handler/get_knowledge.ts create mode 100644 insights-agent/code/src/functions/operation_handler/get_temperature.ts create mode 100644 insights-agent/code/src/functions/operation_handler/index.ts create mode 100644 insights-agent/code/src/functions/operation_handler/post_comment_on_ticket.ts create mode 100644 insights-agent/code/src/functions/operation_handler/run_sql.ts create mode 100644 insights-agent/code/src/functions/operation_handler/send_slack_message.ts create mode 100644 insights-agent/code/src/functions/operation_handler/text_to_dataset.ts create mode 100644 insights-agent/code/src/functions/operation_handler/text_to_widget.ts create mode 100644 insights-agent/code/src/index.ts create mode 100644 insights-agent/code/src/main.ts create mode 100644 insights-agent/code/src/operations/index.ts create mode 100644 insights-agent/code/src/test-runner/test-runner.ts create mode 100644 insights-agent/code/test/http_client.ts create mode 100644 insights-agent/code/test/main.ts create mode 100644 insights-agent/code/test/runner.ts create mode 100644 insights-agent/code/test/types.ts create mode 100644 insights-agent/code/tsconfig.eslint.json create mode 100644 insights-agent/code/tsconfig.json create mode 100644 insights-agent/curl.json create mode 100644 insights-agent/dim_ticket.json create mode 100644 insights-agent/manifest.yaml create mode 100644 insights-agent/manual.json create mode 100644 insights-agent/package-lock.json create mode 100644 insights-agent/steps.json diff --git a/insights-agent/README.md b/insights-agent/README.md new file mode 100644 index 0000000..7fa0169 --- /dev/null +++ b/insights-agent/README.md @@ -0,0 +1,13 @@ +## Snap-in containing custom operations + +The snap-in contains custom operations which can be used in the Workflow Builder once snap-in gets successfully activated. + +Operations are workflow node blueprint which are used to create worlkflow steps(nodes). + + +## Operations in the snap-in + +The snap-in contains the following operations: + + + diff --git a/insights-agent/callback.json b/insights-agent/callback.json new file mode 100644 index 0000000..358d1b8 --- /dev/null +++ b/insights-agent/callback.json @@ -0,0 +1,58 @@ +curl --location 'https://api.dev.devrev-eng.ai/internal/workflow-steps.update' \ +--header 'accept: application/json, text/plain, */*' \ +--header 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \ +--header 'authorization: eyJhbGciOiJSUzI1NiIsImlzcyI6Imh0dHBzOi8vYXV0aC10b2tlbi5kZXYuZGV2cmV2LWVuZy5haS8iLCJraWQiOiJzdHNfa2lkX3JzYSIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiamFudXMiXSwiYXpwIjoiZG9uOmlkZW50aXR5OmR2cnYtdXMtMTpkZXZvLzc4NzpkZXZ1LzE4NCIsImV4cCI6MTc5NTQ0NjE4MCwiaHR0cDovL2RldnJldi5haS9hdXRoMF91aWQiOiJkb246aWRlbnRpdHk6ZHZydi11cy0xOmRldm8vc3VwZXI6YXV0aDBfdXNlci9nb29nbGUtb2F1dGgyfDEwMjA4NTI3NjA3MjA3NzcyNzA1MiIsImh0dHA6Ly9kZXZyZXYuYWkvYXV0aDBfdXNlcl9pZCI6Imdvb2dsZS1vYXV0aDJ8MTAyMDg1Mjc2MDcyMDc3NzI3MDUyIiwiaHR0cDovL2RldnJldi5haS9kZXZvX2RvbiI6ImRvbjppZGVudGl0eTpkdnJ2LXVzLTE6ZGV2by83ODciLCJodHRwOi8vZGV2cmV2LmFpL2Rldm9pZCI6IkRFVi03ODciLCJodHRwOi8vZGV2cmV2LmFpL2RldnVpZCI6IkRFVlUtMTg0IiwiaHR0cDovL2RldnJldi5haS9kaXNwbGF5bmFtZSI6Im1hZGhhdi1zaWtrYSIsImh0dHA6Ly9kZXZyZXYuYWkvZW1haWwiOiJtYWRoYXYuc2lra2FAZGV2cmV2LmFpIiwiaHR0cDovL2RldnJldi5haS9mdWxsbmFtZSI6Ik1hZGhhdiBTaWtrYSIsImh0dHA6Ly9kZXZyZXYuYWkvaXNfdmVyaWZpZWQiOnRydWUsImh0dHA6Ly9kZXZyZXYuYWkvdG9rZW50eXBlIjoidXJuOmRldnJldjpwYXJhbXM6b2F1dGg6dG9rZW4tdHlwZTpwYXQiLCJpYXQiOjE3MDA4MzgxODAsImlzcyI6Imh0dHBzOi8vYXV0aC10b2tlbi5kZXYuZGV2cmV2LWVuZy5haS8iLCJqdGkiOiJkb246aWRlbnRpdHk6ZHZydi11cy0xOmRldm8vNzg3OnRva2VuL0p2R2ZyTENaIiwib3JnX2lkIjoib3JnX2RLTm9QM2U2aENsNnJIdUQiLCJzdWIiOiJkb246aWRlbnRpdHk6ZHZydi11cy0xOmRldm8vNzg3OmRldnUvMTg0In0.uS1402rOwQJHqSwHkj70UsIOA93bQpOTTJC06CFkXRBHjHcpjW9fk51RtfDJquXWcF3EilAVmkP5oOVBVjP94RTItq2-evOgjZm0Q3XvhvtQxKBKm8MyUJgPkhNOktXgo8ThYUl16b31jMUKC7NSmTamseJkvc-TRSSO5OT6YV-j2T6Q7LW-ksKr8h8yRLTQt774aX3FGgx_aIlk7RgnVirxtuFgivF0_xXsjQ2SOTRwcZeT1uFNT8xr4lOLD_xq7GGqEaXf_9PPbWxgJtMQvJ4hMp0UERqK59Mxs7DRYdN56cX5DNgIHnLZmwVu7u-kvr1mD-q9pzWYXNoiCNhZdw' \ +--header 'content-type: application/json' \ +--header 'cookie: ajs_anonymous_id=b71940ee-10b4-4845-877d-00dadf2a7745; ajs_user_id=madhav.sikka@devrev.ai; _ga=GA1.1.1760706599.1718992981; __Secure-fes=a347eef6a81e4b359f38000000000001|62e645c0-8c3b-4088-bc21-62ff34072732; _ga_FYCFW5YYCW=GS1.1.1727083317.4.0.1727083317.0.0.0; AWSALB=KkG6Ujiibc+KtkZJ6ZHclXTn9fsRFircNjj1IDT1MqNGguWw2ZKewe3HsilrObOTb+JEaLC8q5nH9YGc1fCINy0MkJNEyFGlYFDrCre0cQoSU096xHi2XLVGTtln; AWSALBCORS=KkG6Ujiibc+KtkZJ6ZHclXTn9fsRFircNjj1IDT1MqNGguWw2ZKewe3HsilrObOTb+JEaLC8q5nH9YGc1fCINy0MkJNEyFGlYFDrCre0cQoSU096xHi2XLVGTtln; _dd_s=logs=0&expire=1727886293529; AWSALB=vtesc0J5YnAdDRKoMkp4G8CbDvL7Yfl3sC7dSA6UAHwB6O0AK0cWuwjH+j2GK5uSuQON9F9XVS0/vlQT2tcQkTBPNnci17CW12/X4V49dXx0TTrLj+z/yq6c4why; AWSALBCORS=vtesc0J5YnAdDRKoMkp4G8CbDvL7Yfl3sC7dSA6UAHwB6O0AK0cWuwjH+j2GK5uSuQON9F9XVS0/vlQT2tcQkTBPNnci17CW12/X4V49dXx0TTrLj+z/yq6c4why; __Secure-fes=a44e3305730645c781b5000000000001|cd87c991-3ca1-4400-905b-6543e83f99c2' \ +--header 'dnt: 1' \ +--header 'origin: https://app.dev.devrev-eng.ai' \ +--header 'priority: u=1, i' \ +--header 'referer: https://app.dev.devrev-eng.ai/' \ +--header 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ +--header 'sec-ch-ua-mobile: ?0' \ +--header 'sec-ch-ua-platform: "macOS"' \ +--header 'sec-fetch-dest: empty' \ +--header 'sec-fetch-mode: cors' \ +--header 'sec-fetch-site: same-site' \ +--header 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36' \ +--header 'x-devrev-client-id: ai.devrev.web-product.dev' \ +--header 'x-devrev-client-platform: web-product' \ +--header 'x-devrev-client-version: c3407b2' \ +--data '{ + "id": "don:integration:dvrv-us-1:devo/787:workflow/378:workflow_step/378.2724", + "input_values": [ + { + "fields": [ + { + "name": "agent_session_id", + "value": { + "type": "jsonata_expression", + "value": "$get('\''ai_agent_skill_manual_trigger'\'', '\''output'\'').agent_session_id" + } + }, + { + "name": "skill_call_id", + "value": { + "type": "jsonata_expression", + "value": "$get('\''ai_agent_skill_manual_trigger'\'', '\''output'\'').skill_call_id" + } + }, + { + "name": "skill_name", + "value": { + "type": "jsonata_expression", + "value": "$get('\''ai_agent_skill_manual_trigger'\'', '\''output'\'').skill_name" + } + }, + { + "name": "output", + "value": { + "type": "jsonata_expression", + "value": "$get('\''get_current_time_1'\'', '\''output'\'')" + } + } + ], + "port_name": "input" + } + ] +}' diff --git a/insights-agent/cli.txt b/insights-agent/cli.txt new file mode 100644 index 0000000..33212c3 --- /dev/null +++ b/insights-agent/cli.txt @@ -0,0 +1,2 @@ +devrev snap_in_package create-one --slug ia-1 +devrev snap_in_version create-one --path . diff --git a/insights-agent/code/.eslintrc.js b/insights-agent/code/.eslintrc.js new file mode 100644 index 0000000..ca876e7 --- /dev/null +++ b/insights-agent/code/.eslintrc.js @@ -0,0 +1,35 @@ +module.exports = { + extends: 'airbnb-typescript/base', + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', // Makes ESLint and Prettier play nicely together + 'plugin:import/recommended', + 'plugin:import/typescript', + ], + ignorePatterns: ['**/dist/*'], + parser: '@typescript-eslint/parser', + parserOptions: { + project: './tsconfig.eslint.json', + }, + plugins: ['prettier', 'unused-imports', 'import', 'simple-import-sort', 'sort-keys-fix'], + root: true, + rules: { + 'import/first': 'error', // Ensures all imports are at the top of the file + 'import/newline-after-import': 'error', // Ensures there’s a newline after the imports + 'import/no-duplicates': 'error', // Merges import statements from the same file + 'import/order': 'off', // Not compatible with simple-import-sort + 'no-unused-vars': 'off', // Handled by @typescript-eslint/no-unused-vars + 'simple-import-sort/exports': 'error', // Auto-formats exports + 'simple-import-sort/imports': 'error', // Auto-formats imports + 'sort-imports': 'off', // Not compatible with simple-import-sort + 'sort-keys-fix/sort-keys-fix': ['error', 'asc', { natural: true }], // Sorts long object key lists alphabetically + 'unused-imports/no-unused-imports': 'error', // Removes unused imports automatically, + '@typescript-eslint/no-explicit-any': 'warn', // Allows any type with a warning + }, + overrides:[{ + "files": ["**/*.test.ts"], + "rules": { + 'simple-import-sort/imports': 'off', // for test files we would want to load the mocked up modules later so on sorting the mocking mechanism will not work + } + }] +}; diff --git a/insights-agent/code/.gitignore b/insights-agent/code/.gitignore new file mode 100644 index 0000000..6db3937 --- /dev/null +++ b/insights-agent/code/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# Testing +coverage/ + +# dependencies +/node_modules + +# 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 + +# System Files +.DS_Store +Thumbs.db + +deps.json +results.json +before-run-data.json + +# packaged app +*.tar.gz diff --git a/insights-agent/code/.npmrc b/insights-agent/code/.npmrc new file mode 100644 index 0000000..cffe8cd --- /dev/null +++ b/insights-agent/code/.npmrc @@ -0,0 +1 @@ +save-exact=true diff --git a/insights-agent/code/.prettierignore b/insights-agent/code/.prettierignore new file mode 100644 index 0000000..640c051 --- /dev/null +++ b/insights-agent/code/.prettierignore @@ -0,0 +1,4 @@ +# Add files here to ignore them from prettier formatting + +/dist + diff --git a/insights-agent/code/.prettierrc b/insights-agent/code/.prettierrc new file mode 100644 index 0000000..de83c71 --- /dev/null +++ b/insights-agent/code/.prettierrc @@ -0,0 +1,15 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "jsxSingleQuote": false, + "arrowParens": "always", + "proseWrap": "never", + "htmlWhitespaceSensitivity": "strict", + "endOfLine": "lf", + "organizeImportsSkipDestructiveCodeActions": true +} diff --git a/insights-agent/code/babel.config.js b/insights-agent/code/babel.config.js new file mode 100644 index 0000000..e6ffbd4 --- /dev/null +++ b/insights-agent/code/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'], +}; diff --git a/insights-agent/code/jest.config.js b/insights-agent/code/jest.config.js new file mode 100644 index 0000000..1bf82d0 --- /dev/null +++ b/insights-agent/code/jest.config.js @@ -0,0 +1,12 @@ +module.exports = { + collectCoverage: true, + coverageDirectory: 'coverage', + coverageThreshold: { + "**/*": { + branches: 60 + } + }, + coverageReporters: ['text'], + preset: 'ts-jest', + testEnvironment: 'node' +}; diff --git a/insights-agent/code/nodemon.json b/insights-agent/code/nodemon.json new file mode 100644 index 0000000..8e47e98 --- /dev/null +++ b/insights-agent/code/nodemon.json @@ -0,0 +1,5 @@ +{ + "execMap": { + "ts": "ts-node" + } +} diff --git a/insights-agent/code/package-lock.json b/insights-agent/code/package-lock.json new file mode 100644 index 0000000..f7b0f92 --- /dev/null +++ b/insights-agent/code/package-lock.json @@ -0,0 +1,10600 @@ +{ + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@devrev/typescript-sdk": "1.1.28", + "@slack/web-api": "7.3.1", + "protobufjs": "7.3.0" + }, + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.18.6", + "@types/body-parser": "1.19.5", + "@types/express": "4.17.21", + "@types/jest": "^29.4.0", + "@types/node": "^18.13.0", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.51.0", + "babel-jest": "^29.4.2", + "body-parser": "1.20.2", + "dotenv": "^16.0.3", + "eslint": "^8.33.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sort-keys-fix": "1.1.2", + "eslint-plugin-unused-imports": "2.0.0", + "express": "4.19.2", + "jest": "^29.4.2", + "nodemon": "^2.0.20", + "prettier": "^2.8.3", + "prettier-plugin-organize-imports": "^3.2.2", + "rimraf": "^4.1.2", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "yargs": "^17.6.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.6", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", + "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", + "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helpers": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/traverse": "^7.24.6", + "@babel/types": "^7.24.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", + "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", + "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz", + "integrity": "sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", + "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz", + "integrity": "sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz", + "integrity": "sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", + "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", + "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", + "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz", + "integrity": "sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", + "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", + "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz", + "integrity": "sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", + "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz", + "integrity": "sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-wrap-function": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz", + "integrity": "sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", + "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz", + "integrity": "sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", + "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", + "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", + "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz", + "integrity": "sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", + "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.6", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", + "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.6.tgz", + "integrity": "sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.6.tgz", + "integrity": "sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz", + "integrity": "sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz", + "integrity": "sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "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-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "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-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz", + "integrity": "sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz", + "integrity": "sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "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-jsx": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", + "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "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-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "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-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.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", + "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz", + "integrity": "sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.6.tgz", + "integrity": "sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.6.tgz", + "integrity": "sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz", + "integrity": "sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz", + "integrity": "sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz", + "integrity": "sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz", + "integrity": "sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz", + "integrity": "sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz", + "integrity": "sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/template": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz", + "integrity": "sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz", + "integrity": "sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz", + "integrity": "sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz", + "integrity": "sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz", + "integrity": "sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz", + "integrity": "sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz", + "integrity": "sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz", + "integrity": "sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz", + "integrity": "sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz", + "integrity": "sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz", + "integrity": "sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz", + "integrity": "sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz", + "integrity": "sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz", + "integrity": "sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz", + "integrity": "sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz", + "integrity": "sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz", + "integrity": "sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz", + "integrity": "sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz", + "integrity": "sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz", + "integrity": "sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz", + "integrity": "sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz", + "integrity": "sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz", + "integrity": "sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz", + "integrity": "sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz", + "integrity": "sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz", + "integrity": "sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz", + "integrity": "sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz", + "integrity": "sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz", + "integrity": "sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz", + "integrity": "sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz", + "integrity": "sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz", + "integrity": "sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz", + "integrity": "sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz", + "integrity": "sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz", + "integrity": "sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.6.tgz", + "integrity": "sha512-H0i+hDLmaYYSt6KU9cZE0gb3Cbssa/oxWis7PX4ofQzbvsfix9Lbh8SRk7LCPDlLWJHUiFeHU0qRRpF/4Zv7mQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-typescript": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz", + "integrity": "sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz", + "integrity": "sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz", + "integrity": "sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz", + "integrity": "sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.6.tgz", + "integrity": "sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.6", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.6", + "@babel/plugin-syntax-import-attributes": "^7.24.6", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.6", + "@babel/plugin-transform-async-generator-functions": "^7.24.6", + "@babel/plugin-transform-async-to-generator": "^7.24.6", + "@babel/plugin-transform-block-scoped-functions": "^7.24.6", + "@babel/plugin-transform-block-scoping": "^7.24.6", + "@babel/plugin-transform-class-properties": "^7.24.6", + "@babel/plugin-transform-class-static-block": "^7.24.6", + "@babel/plugin-transform-classes": "^7.24.6", + "@babel/plugin-transform-computed-properties": "^7.24.6", + "@babel/plugin-transform-destructuring": "^7.24.6", + "@babel/plugin-transform-dotall-regex": "^7.24.6", + "@babel/plugin-transform-duplicate-keys": "^7.24.6", + "@babel/plugin-transform-dynamic-import": "^7.24.6", + "@babel/plugin-transform-exponentiation-operator": "^7.24.6", + "@babel/plugin-transform-export-namespace-from": "^7.24.6", + "@babel/plugin-transform-for-of": "^7.24.6", + "@babel/plugin-transform-function-name": "^7.24.6", + "@babel/plugin-transform-json-strings": "^7.24.6", + "@babel/plugin-transform-literals": "^7.24.6", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.6", + "@babel/plugin-transform-member-expression-literals": "^7.24.6", + "@babel/plugin-transform-modules-amd": "^7.24.6", + "@babel/plugin-transform-modules-commonjs": "^7.24.6", + "@babel/plugin-transform-modules-systemjs": "^7.24.6", + "@babel/plugin-transform-modules-umd": "^7.24.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.6", + "@babel/plugin-transform-new-target": "^7.24.6", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.6", + "@babel/plugin-transform-numeric-separator": "^7.24.6", + "@babel/plugin-transform-object-rest-spread": "^7.24.6", + "@babel/plugin-transform-object-super": "^7.24.6", + "@babel/plugin-transform-optional-catch-binding": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6", + "@babel/plugin-transform-parameters": "^7.24.6", + "@babel/plugin-transform-private-methods": "^7.24.6", + "@babel/plugin-transform-private-property-in-object": "^7.24.6", + "@babel/plugin-transform-property-literals": "^7.24.6", + "@babel/plugin-transform-regenerator": "^7.24.6", + "@babel/plugin-transform-reserved-words": "^7.24.6", + "@babel/plugin-transform-shorthand-properties": "^7.24.6", + "@babel/plugin-transform-spread": "^7.24.6", + "@babel/plugin-transform-sticky-regex": "^7.24.6", + "@babel/plugin-transform-template-literals": "^7.24.6", + "@babel/plugin-transform-typeof-symbol": "^7.24.6", + "@babel/plugin-transform-unicode-escapes": "^7.24.6", + "@babel/plugin-transform-unicode-property-regex": "^7.24.6", + "@babel/plugin-transform-unicode-regex": "^7.24.6", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.6.tgz", + "integrity": "sha512-U10aHPDnokCFRXgyT/MaIRTivUu2K/mu0vJlwRS9LxJmJet+PFQNKpggPyFCUtC6zWSBPjvxjnpNkAn3Uw2m5w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "@babel/plugin-syntax-jsx": "^7.24.6", + "@babel/plugin-transform-modules-commonjs": "^7.24.6", + "@babel/plugin-transform-typescript": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", + "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", + "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", + "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", + "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6", + "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/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/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==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@devrev/typescript-sdk": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@devrev/typescript-sdk/-/typescript-sdk-1.1.28.tgz", + "integrity": "sha512-MgdM8c7uWsTDpSN5MuiAwHeZGqcc7V99mZyCbNxNMoyle35kVgKgUersMPG5st7mKK5WPcS/Fz0jBZ+Z4hr+Uw==", + "dependencies": { + "@types/yargs": "^17.0.22", + "axios": "^1.3.6", + "dotenv": "^16.0.3", + "protobufjs": "^7.3.0", + "yargs": "^17.6.2" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "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/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": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@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": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@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": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@slack/logger": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-4.0.0.tgz", + "integrity": "sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==", + "dependencies": { + "@types/node": ">=18.0.0" + }, + "engines": { + "node": ">= 18", + "npm": ">= 8.6.0" + } + }, + "node_modules/@slack/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@slack/types/-/types-2.12.0.tgz", + "integrity": "sha512-yFewzUomYZ2BYaGJidPuIgjoYj5wqPDmi7DLSaGIkf+rCi4YZ2Z3DaiYIbz7qb/PL2NmamWjCvB7e9ArI5HkKg==", + "engines": { + "node": ">= 12.13.0", + "npm": ">= 6.12.0" + } + }, + "node_modules/@slack/web-api": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.3.1.tgz", + "integrity": "sha512-n2KfnlqjaPJ5y98nU5Nn0UwTIxafLwQSQIOLpsQXKGYDF24S/ap5Ebv+ifVMtY+vIJBqj1q2+l3W9bpFHeiJ2A==", + "dependencies": { + "@slack/logger": "^4.0.0", + "@slack/types": "^2.9.0", + "@types/node": ">=18.0.0", + "@types/retry": "0.12.0", + "axios": "^1.6.5", + "eventemitter3": "^5.0.1", + "form-data": "^4.0.0", + "is-electron": "2.2.2", + "is-stream": "^2", + "p-queue": "^6", + "p-retry": "^4", + "retry": "^0.13.1" + }, + "engines": { + "node": ">= 18", + "npm": ">= 8.6.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", + "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/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==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "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": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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": "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/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.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": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/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-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==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true, + "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.30001627", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz", + "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-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/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": 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.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "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==", + "dev": true, + "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/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": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "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==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.788", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", + "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "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-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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-plugin-simple-import-sort": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", + "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-sort-keys-fix/-/eslint-plugin-sort-keys-fix-1.1.2.tgz", + "integrity": "sha512-DNPHFGCA0/hZIsfODbeLZqaGY/+q3vgtshF85r+YWDNCQ2apd9PNs/zL6ttKm0nD1IFwvxyg3YOTI7FHl4unrw==", + "dev": true, + "dependencies": { + "espree": "^6.1.2", + "esutils": "^2.0.2", + "natural-compare": "^1.4.0", + "requireindex": "~1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", + "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "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": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.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/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "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/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "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/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "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.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "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/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==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "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==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "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-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@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": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==", + "dev": true + }, + "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/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==", + "dev": true + }, + "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==", + "dev": true + }, + "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/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==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "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/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/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==", + "dev": true + }, + "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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "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/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "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/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "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.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "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-locate/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-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "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/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.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.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "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/prettier-plugin-organize-imports": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz", + "integrity": "sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==", + "dev": true, + "peerDependencies": { + "@volar/vue-language-plugin-pug": "^1.0.4", + "@volar/vue-typescript": "^1.0.4", + "prettier": ">=2.0", + "typescript": ">=2.9" + }, + "peerDependenciesMeta": { + "@volar/vue-language-plugin-pug": { + "optional": true + }, + "@volar/vue-typescript": { + "optional": true + } + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/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/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/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "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==", + "dev": true, + "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/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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==", + "dev": true, + "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==", + "dev": true, + "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": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "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/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "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/rimraf/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "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/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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.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/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/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-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-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/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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/ts-jest": { + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.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.1", + "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": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/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/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.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "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==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "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==", + "dev": true, + "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/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "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/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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/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" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/insights-agent/code/package.json b/insights-agent/code/package.json new file mode 100644 index 0000000..48abbae --- /dev/null +++ b/insights-agent/code/package.json @@ -0,0 +1,61 @@ +{ + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "description": "", + "main": "./dist/index.js", + "scripts": { + "lint": "eslint --ignore-path .gitignore .", + "lint:fix": "eslint --fix --ignore-path .gitignore .", + "build": "rimraf ./dist && tsc", + "build:watch": "tsc --watch", + "prepackage": "npm run build", + "package": "tar -cvzf build.tar.gz dist package.json package-lock.json .npmrc", + "start": "ts-node src/main.ts", + "start:watch": "nodemon src/main.ts", + "start:production": "node dist/main.js", + "test:server": "nodemon --watch src --watch test test/main.ts", + "test": "jest", + "test:watch": "jest --watch" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.18.6", + "@types/body-parser": "1.19.5", + "@types/express": "4.17.21", + "@types/jest": "^29.4.0", + "@types/node": "^18.13.0", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.51.0", + "babel-jest": "^29.4.2", + "body-parser": "1.20.2", + "dotenv": "^16.0.3", + "eslint": "^8.33.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sort-keys-fix": "1.1.2", + "eslint-plugin-unused-imports": "2.0.0", + "express": "4.19.2", + "jest": "^29.4.2", + "nodemon": "^2.0.20", + "prettier": "^2.8.3", + "prettier-plugin-organize-imports": "^3.2.2", + "rimraf": "^4.1.2", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "yargs": "^17.6.2" + }, + "dependencies": { + "@devrev/typescript-sdk": "1.1.28", + "@slack/web-api": "7.3.1", + "protobufjs": "7.3.0" + } +} diff --git a/insights-agent/code/src/fixtures/on_work_created_event.json b/insights-agent/code/src/fixtures/on_work_created_event.json new file mode 100644 index 0000000..b66c880 --- /dev/null +++ b/insights-agent/code/src/fixtures/on_work_created_event.json @@ -0,0 +1,81 @@ +{ + "events": [ + { + "payload": { + "id": "don:integration:dvrv-us-1:devo/XXXXXX:webhook/mpLkC87l:webhook_event/A47zYgvZGDM", + "timestamp": "2023-04-03T14:15:08.101098Z", + "type": "work_created", + "unique_key": "ZG9uOmludGVncmF0aW9uOmR2cnYtdXMtMTpkZXZvLzFGR2lCenJhNjpldmVudF9zb3VyY2UvYzMzMDI2Y2UtOTM5Yy00ZWEzLThjYzctOTI4M2M0NWI3ZjRk", + "webhook_id": "don:integration:dvrv-us-1:devo/XXXXXX:webhook/mpLkC87l", + "work_created": { + "work": { + "applies_to_part": { + "display_id": "ENH-9", + "id": "don:core:dvrv-us-1:devo/XXXXXX:enhancement/9", + "id_v1": "don:DEV-XXXXXX:enhancement: 9", + "name": "test-enhancement", + "type": "enhancement" + }, + "created_by": { + "display_handle": "Sample Name", + "display_id": "DEVU-5", + "display_name": "Sample Name", + "email": "i-Demo1.Demo2@domain.com", + "full_name": "Sample Name", + "id": "don:identity:dvrv-us-1:devo/XXXXXX:devu/5", + "id_v1": "don:DEV-XXXXXX:dev_user:DEVU-5", + "state": "active", + "type": "dev_user" + }, + "created_date": "2023-04-03T14: 14: 30.336Z", + "custom_fields": null, + "display_id": "TKT-122", + "id": "don:core:dvrv-us-1:devo/XXXXXX:ticket/122", + "id_v1": "don:DEV-XXXXXX:ticket: 122", + "owned_by": [ + { + "display_handle": "Sample Name", + "display_id": "DEVU-5", + "display_name": "Sample Name", + "email": "i-Demo1.Demo2@domain.com", + "full_name": "Sample Name", + "id": "don:identity:dvrv-us-1:devo/XXXXXX:devu/5", + "id_v1": "don:DEV-XXXXXX:dev_user:DEVU-5", + "state": "active", + "type": "dev_user" + } + ], + "severity": "medium", + "stage": { + "name": "queued", + "ordinal": 700 + }, + "state": "open", + "stock_schema_fragment": "don:core:dvrv-us-1:stock_sf/297430", + "title": "test-ticket", + "type": "ticket" + } + } + }, + "context": { + "dev_oid": "don:identity:dvrv-us-1:devo/XXXXXX", + "automation_id": "don:integration:dvrv-us-1:devo/XXXXXX:automation/be9f0869-77a4-4210-9f84-47409e67c781", + "source_id": "don:integration:dvrv-us-1:devo/XXXXXX:automation/be9f0869-77a4-4210-9f84-47409e67c781", + "snap_in_id": "don:integration:dvrv-us-1:devo/XXXXXX:snap_in/641c009b-0476-40ef-b728-f3ce6fb77bb9", + "snap_in_version_id": "don:integration:dvrv-us-1:devo/XXXXXX:snap_in_package/fd20d23b-372c-48ad-ac24-d13c271c63d6:snap_in_version/d506f96a-131f-451c-87d6-e73605fac8df", + "secrets": { + "service_account_token": "TEST-TOKEN" + } + }, + "input_data": { + "keyrings": { + "devrev": "TEST-TOKEN" + } + }, + "execution_metadata": { + "devrev_endpoint": "https://api.devrev.ai", + "function_name": "on_work_creation" + } + } + ] +} \ No newline at end of file diff --git a/insights-agent/code/src/function-factory.ts b/insights-agent/code/src/function-factory.ts new file mode 100644 index 0000000..827bfa9 --- /dev/null +++ b/insights-agent/code/src/function-factory.ts @@ -0,0 +1,8 @@ +import operation_handler from './functions/operation_handler'; + +export const functionFactory = { + // Add your functions here + operation_handler, +} as const; + +export type FunctionFactoryType = keyof typeof functionFactory; diff --git a/insights-agent/code/src/functions/operation_handler/callback_node.ts b/insights-agent/code/src/functions/operation_handler/callback_node.ts new file mode 100644 index 0000000..720a694 --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/callback_node.ts @@ -0,0 +1,60 @@ +import { client } from '@devrev/typescript-sdk'; +import { + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import { postCallAPI } from './text_to_dataset'; + +export class AgentCallback extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(metadata: OperationContext, input: ExecuteOperationInput, _: any): Promise<OperationOutput> { + const data = input.data as Record<string, any>; + const endpoint = metadata.devrev_endpoint; + const token = metadata.secrets.access_token; + + const agent_session_id = data['agent_session_id']; + const skill_call_id = data['skill_call_id']; + const skill_name = data['skill_name']; + const outputJSON = data['output']; + const error = data['error'] || ""; + const output = JSON.parse(outputJSON); + + const req = { + agent_session: agent_session_id, + skill_call_output: { + id: skill_call_id, + name: skill_name, + output: output, + error: error, + }, + } as Record<string, any>; + + try { + const resp = await postCallAPI(`${endpoint}/internal/ai-agents.callback`, req, token); + return OperationOutput.fromJSON({ + error: undefined, + summary: `Executed Data: ${data}`, + output: { + values: [ + { + agent_session_id: agent_session_id, + skill_call_id: skill_call_id, + skill_name: skill_name, + output: output, + callback_request_success: true, + }, + ], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/insights-agent/code/src/functions/operation_handler/get_current_time.ts b/insights-agent/code/src/functions/operation_handler/get_current_time.ts new file mode 100644 index 0000000..bb7f367 --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/get_current_time.ts @@ -0,0 +1,32 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +interface GetCurrentTimeInput { + query: string; +} + +export class GetCurrentTime extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const currentTime = new Date().toISOString(); + + return OperationOutput.fromJSON({ + summary: `Current time: ${currentTime}`, + output: { + values: [{ current_time: currentTime }], + } as OutputValue, + }); + } +} diff --git a/insights-agent/code/src/functions/operation_handler/get_knowledge.ts b/insights-agent/code/src/functions/operation_handler/get_knowledge.ts new file mode 100644 index 0000000..855c16f --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/get_knowledge.ts @@ -0,0 +1,56 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; +import { postCallAPI } from './text_to_dataset'; + +interface GetKnowledgeInput { + query: string; +} + +export class GetKnowledge extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as GetKnowledgeInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const query = input_data.query; + + let err: OperationError | undefined = undefined; + if (!query) { + err = { + message: 'query not found', + type: Error_Type.InvalidRequest, + }; + } + + try { + const replyResp = await postCallAPI( + `${endpoint}/internal/recommendations.get-reply`, + { query: input_data.query, surface: 'plug' }, + token + ); + + return OperationOutput.fromJSON({ + summary: `Found knowledge: ${replyResp.data.reply}`, + output: { + values: [{ knowledge: JSON.stringify(replyResp.data.reply)}], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/insights-agent/code/src/functions/operation_handler/get_temperature.ts b/insights-agent/code/src/functions/operation_handler/get_temperature.ts new file mode 100644 index 0000000..475798d --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/get_temperature.ts @@ -0,0 +1,60 @@ +import { client, publicSDK } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +interface GetTemperatureInput { + city: string; +} + +export class GetTemperature extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + // This is optional and can be used to provide any extra context required. + override GetContext(): OperationContext { + let baseMetadata = super.GetContext(); + const temperatures: Record<string, number> = { + 'New York': 72, + 'San Francisco': 65, + Seattle: 55, + 'Los Angeles': 80, + Chicago: 70, + Houston: 90, + }; + + return { + ...baseMetadata, + metadata: temperatures, + }; + } + + async run(_context: OperationContext, input: ExecuteOperationInput, _resources: any): Promise<OperationOutput> { + const input_data = input.data as GetTemperatureInput; + + const temperature = _context.metadata ? _context.metadata[input_data.city] : null; + + let err: OperationError | undefined = undefined; + if (!temperature) { + err = { + message: 'City not found', + type: Error_Type.InvalidRequest, + }; + } + const temp = { + error: err, + output: { + values: [{ "temperature": temperature }], + } as OutputValue, + } + return OperationOutput.fromJSON(temp); + } +} diff --git a/insights-agent/code/src/functions/operation_handler/index.ts b/insights-agent/code/src/functions/operation_handler/index.ts new file mode 100644 index 0000000..6540fa4 --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/index.ts @@ -0,0 +1,41 @@ +import { OperationFactory } from '../../operations'; +import { ExecuteOperationInput,FunctionInput, OperationMap } from '@devrev/typescript-sdk/dist/snap-ins'; + +// Operations +import { GetTemperature } from './get_temperature'; +import { TextToDataset } from './text_to_dataset'; +import { AgentCallback } from './callback_node'; +import { GetKnowledge } from './get_knowledge'; +import { RunSQL } from './run_sql'; +import { TextToWidget } from './text_to_widget'; +import { GetCurrentTime } from './get_current_time'; + +/** + * Map of operations with the slug mentioned in the manifest. + * The key is the slug of the operation mentioned in the manifest and value is the operation class. + */ +const operationMap: OperationMap = { + get_temperature: GetTemperature, + text_to_dataset: TextToDataset, + agent_callback_node: AgentCallback, + get_knowledge: GetKnowledge, + run_sql: RunSQL, + text_to_widget: TextToWidget, + get_current_time: GetCurrentTime, +}; + +export const run = async (events: FunctionInput[]) => { + const event = events[0]; + const payload = event.payload as ExecuteOperationInput + console.log("Event: ", event); + const operationSlug = payload.metadata!.slug; + const operationNamespace = payload.metadata!.namespace; + console.log('running operation: ', operationSlug, ' in namespace: ', operationNamespace); + const operationFactory = new OperationFactory(operationMap); + const operation = operationFactory.getOperation(operationSlug, event); + const ctx = operation.GetContext(event); + const resources = event.input_data.resources||{}; + return await operation.run(ctx, payload, resources); +}; + +export default run; diff --git a/insights-agent/code/src/functions/operation_handler/post_comment_on_ticket.ts b/insights-agent/code/src/functions/operation_handler/post_comment_on_ticket.ts new file mode 100644 index 0000000..e8ef4c2 --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/post_comment_on_ticket.ts @@ -0,0 +1,85 @@ +import { client } from '@devrev/typescript-sdk'; +import { TimelineEntriesCreateRequestType } from '@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +interface PostCommentOnTicketInput { + id: string; + comment: string; +} + +export class PostCommentOnTicket extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, _resources: any): Promise<OperationOutput> { + const input_data = input.data as PostCommentOnTicketInput; + const ticket_id = input_data.id; + const comment = input_data.comment; + + let err: OperationError | undefined = undefined; + if (!ticket_id) { + err = { + message: 'Ticket ID not found', + type: Error_Type.InvalidRequest, + }; + } + + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const devrevBetaClient = client.setupBeta({ + endpoint: endpoint, + token: token, + }); + let ticket; + try { + const ticketResponse = await devrevBetaClient.worksGet({ + id: ticket_id, + }); + console.log(JSON.stringify(ticketResponse.data)); + ticket = ticketResponse.data.work; + } catch (e: any) { + err = { + message: 'Error while fetching ticket details:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + }); + } + + try { + const timelineCommentResponse = await devrevBetaClient.timelineEntriesCreate({ + body: comment, + type: TimelineEntriesCreateRequestType.TimelineComment, + object: ticket.id, + }); + console.log(JSON.stringify(timelineCommentResponse.data)); + let commentID = timelineCommentResponse.data.timeline_entry.id; + return OperationOutput.fromJSON({ + error: err, + output: { + values: [{ comment_id: commentID }], + } as OutputValue, + }); + } catch (e: any) { + err = { + message: 'Error while posting comment:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + }); + } + } +} diff --git a/insights-agent/code/src/functions/operation_handler/run_sql.ts b/insights-agent/code/src/functions/operation_handler/run_sql.ts new file mode 100644 index 0000000..e4e034e --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/run_sql.ts @@ -0,0 +1,78 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function postCallAPI(endpoint: string, payload: any, authKey: string) { + try { + const res = await axios.post(endpoint, payload, { + headers: { + Authorization: authKey, + 'Content-type': 'application/json', + }, + }); + const data = res.data; + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface RunSQLInput { + sql_query: string; +} + +export class RunSQL extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as RunSQLInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + const query = input_data.sql_query; + + let err: OperationError | undefined = undefined; + if (!query) { + err = { + message: 'query not found', + type: Error_Type.InvalidRequest, + }; + } + + try { + let datasetsInformation = {} as Record<string, any>; + + const oasisResp = await postCallAPI( + `${endpoint}/internal/oasis.data.query`, + { sql_query: input_data.sql_query }, + token + ); + const res = atob(oasisResp.data.data); + + return OperationOutput.fromJSON({ + summary: `Executed SQL: ${input_data.sql_query}`, + output: { + values: [{ data: res }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/insights-agent/code/src/functions/operation_handler/send_slack_message.ts b/insights-agent/code/src/functions/operation_handler/send_slack_message.ts new file mode 100644 index 0000000..91a0514 --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/send_slack_message.ts @@ -0,0 +1,86 @@ +import { client } from '@devrev/typescript-sdk'; +import { TimelineEntriesCreateRequestType } from '@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +import { WebClient } from '@slack/web-api'; + +interface SendSlackMessageInput { + channel: string; + message: string; +} + +export class SendSlackMessage extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as SendSlackMessageInput; + const channel_id = input_data.channel; + const comment = input_data.message; + + let err: OperationError | undefined = undefined; + if (!channel_id) { + err = { + message: 'Channel ID not found', + type: Error_Type.InvalidRequest, + }; + } + + console.log("context:", context); + + const slack_token = resources.keyrings.slack_token.secret; + let slackClient; + try { + console.log('Creating slack client'); + slackClient = new WebClient(slack_token); + console.log('Slack client created'); + } catch (e: any) { + console.log('Error while creating slack client:', e.message); + err = { + message: 'Error while creating slack client:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + output: { + values: [], + } as OutputValue, + }); + } + console.log('Sending message to slack channel:', channel_id); + try { + const result = await slackClient.chat.postMessage({ + channel: channel_id, + text: comment, + }); + console.log('Message sent: ', result.ts); + return OperationOutput.fromJSON({ + error: err, + output: { + values: [{ message_id: result.ts }], + } as OutputValue, + }); + } catch (e: any) { + console.log('Error while sending message:', e.message); + err = { + message: 'Error while sending message:' + e.message, + type: Error_Type.InvalidRequest, + }; + return OperationOutput.fromJSON({ + error: err, + output: { + values: [], + } as OutputValue, + }); + } + } +} diff --git a/insights-agent/code/src/functions/operation_handler/text_to_dataset.ts b/insights-agent/code/src/functions/operation_handler/text_to_dataset.ts new file mode 100644 index 0000000..f95c346 --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/text_to_dataset.ts @@ -0,0 +1,93 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function postCallAPI(endpoint: string, payload: any, authKey: string) { + try { + const res = await axios.post(endpoint, payload, { + headers: { + Authorization: authKey, + 'Content-type': 'application/json', + }, + }); + const data = res.data; + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface TextToDatasetInput { + query: string; +} + +export class TextToDataset extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as TextToDatasetInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const devrevSDK = client.setupBeta({ endpoint, token }); + const query = input_data.query; + + let err: OperationError | undefined = undefined; + if (!query) { + err = { + message: 'query not found', + type: Error_Type.InvalidRequest, + }; + } + + try { + const coreSearchResp = await postCallAPI( + `${endpoint}/internal/search.core`, + { query: `is_system:true ${input_data.query}`, limit: 10, namespaces: ['dataset'] }, + token + ); + const datasetGetPromises = coreSearchResp.data.results + .filter((searchResp: any) => searchResp.type === 'dataset') + .map(async (searchResp: any) => { + const datasetSummary = searchResp; + const datasetId = datasetSummary.dataset.id; + const datasetGetResp = await postCallAPI(`${endpoint}/internal/oasis.dataset.get`, { id: datasetId }, token); + const datasetInfo = { + name: datasetGetResp.data.dataset.dataset_id, + description: datasetGetResp.data.dataset.description, + columns: datasetGetResp.data.dataset.columns.filter((column: any) => column.description), + }; + return { name: datasetInfo.name, info: JSON.stringify(datasetInfo) }; + }); + + const datasetInfos = await Promise.all(datasetGetPromises); + const datasetsInformation = Object.fromEntries(datasetInfos.map(({ name, info }) => [name, info])); + + return OperationOutput.fromJSON({ + summary: `Found datasets: ${input_data.query}`, + output: { + values: [{ datasets: JSON.stringify(datasetsInformation) }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/insights-agent/code/src/functions/operation_handler/text_to_widget.ts b/insights-agent/code/src/functions/operation_handler/text_to_widget.ts new file mode 100644 index 0000000..8762360 --- /dev/null +++ b/insights-agent/code/src/functions/operation_handler/text_to_widget.ts @@ -0,0 +1,89 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function postCallAPI(endpoint: string, payload: any, authKey: string) { + try { + const res = await axios.post(endpoint, payload, { + headers: { + Authorization: authKey, + 'Content-type': 'application/json', + }, + }); + const data = res.data; + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface TextToWidgetInput { + query: string; +} + +export class TextToWidget extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as TextToWidgetInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const devrevSDK = client.setupBeta({ endpoint, token }); + const query = input_data.query; + + let err: OperationError | undefined = undefined; + if (!query) { + err = { + message: 'query not found', + type: Error_Type.InvalidRequest, + }; + } + + try { + let widgetIds = [] as string[]; + + const coreSearchResp = await postCallAPI( + `${endpoint}/internal/search.core`, + { query: `is_system:true ${input_data.query}`, limit: 10, namespaces: ['widget'] }, + token + ); + for (const searchResp of coreSearchResp.data.results) { + if (searchResp.type === 'widget') { + const widgetSummary = searchResp as any; + const widgetId = widgetSummary.widget.id; + widgetIds.push(widgetId); + } + } + + const batchResp = await postCallAPI(`${endpoint}/internal/batch.apply`, { items: widgetIds.map((id) => ({ batch_type: 'widgets_get', id: id })) }, token); + const widgets = batchResp.data.items.map((item: any) => item.widget).map((widget: any) => ({ id: widget.id, title: widget.title, description: widget.description, data_sources: widget.data_sources, sub_widgets: widget.sub_widgets })); + + return OperationOutput.fromJSON({ + summary: `Found widget ids: ${input_data.query}`, + output: { + values: [{ widgets: JSON.stringify(widgets) }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/insights-agent/code/src/index.ts b/insights-agent/code/src/index.ts new file mode 100644 index 0000000..5254e38 --- /dev/null +++ b/insights-agent/code/src/index.ts @@ -0,0 +1 @@ +export * from './function-factory'; diff --git a/insights-agent/code/src/main.ts b/insights-agent/code/src/main.ts new file mode 100644 index 0000000..2bb6a36 --- /dev/null +++ b/insights-agent/code/src/main.ts @@ -0,0 +1,27 @@ +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +import { FunctionFactoryType } from './function-factory'; +import { testRunner } from './test-runner/test-runner'; + +(async () => { + const argv = await yargs(hideBin(process.argv)).options({ + fixturePath: { + require: true, + type: 'string', + }, + functionName: { + require: true, + type: 'string', + }, + }).argv; + + if (!argv.fixturePath || !argv.functionName) { + console.error('Please make sure you have passed fixturePath & functionName'); + } + + await testRunner({ + fixturePath: argv.fixturePath, + functionName: argv.functionName as FunctionFactoryType, + }); +})(); diff --git a/insights-agent/code/src/operations/index.ts b/insights-agent/code/src/operations/index.ts new file mode 100644 index 0000000..3db0e21 --- /dev/null +++ b/insights-agent/code/src/operations/index.ts @@ -0,0 +1,26 @@ +import { OperationMap,OperationIfc, FunctionInput } from '@devrev/typescript-sdk/dist/snap-ins'; + +/** + * OperationFactory is a factory class that creates a map of operations with the slug mentioned + * in the manifest. + */ +export class OperationFactory { + operationMap: OperationMap; + + constructor(operationMap?: OperationMap) { + this.operationMap = operationMap || {}; + } + +/** + * @param slug The slug of the operation mentioned in the manifest + * @param event Event object that is passed to the snap-in + * @returns Operation + */ + public getOperation(slug: string, event: FunctionInput): OperationIfc { + if (!this.operationMap[slug]) { + throw new Error(`Operation with slug ${slug} not found`); + } + return new this.operationMap[slug](event); + } +} + diff --git a/insights-agent/code/src/test-runner/test-runner.ts b/insights-agent/code/src/test-runner/test-runner.ts new file mode 100644 index 0000000..15c7222 --- /dev/null +++ b/insights-agent/code/src/test-runner/test-runner.ts @@ -0,0 +1,27 @@ +import * as dotenv from 'dotenv'; + +import { functionFactory, FunctionFactoryType } from '../function-factory'; + +export interface TestRunnerProps { + functionName: FunctionFactoryType; + fixturePath: string; +} + +export const testRunner = async ({ functionName, fixturePath }: TestRunnerProps) => { + //Since we were not using the env anywhere its not require to load it + dotenv.config(); + + if (!functionFactory[functionName]) { + console.error(`${functionName} is not found in the functionFactory`); + console.error('Add your function to the function-factory.ts file'); + throw new Error('Function is not found in the functionFactory'); + } + + //Since the import is loaded dynamically, we need to use require + const run = functionFactory[functionName]; + + // eslint-disable-next-line @typescript-eslint/no-var-requires + const eventFixture = require(`../fixtures/${fixturePath}`); + + await run(eventFixture); +}; diff --git a/insights-agent/code/test/http_client.ts b/insights-agent/code/test/http_client.ts new file mode 100644 index 0000000..0e222f8 --- /dev/null +++ b/insights-agent/code/test/http_client.ts @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; + +interface SetupOptions { + endpoint: string; + token?: string; +} + +export interface HttpRequest { + headers?: any; + path: string; + body: unknown; +} + +export class HTTPClient { + public instance: AxiosInstance; + + constructor({ endpoint, token }: SetupOptions) { + const axiosConfig: AxiosRequestConfig = { + baseURL: endpoint, + headers: { + Authorization: token, + }, + }; + + this.instance = axios.create({ + ...axiosConfig, + }); + } + + async post<T>({ headers, path, body }: HttpRequest): Promise<AxiosResponse<T>> { + return this.instance.request({ + method: 'POST', + headers: headers, + data: body, + url: path, + }); + } +} diff --git a/insights-agent/code/test/main.ts b/insights-agent/code/test/main.ts new file mode 100644 index 0000000..8ff9ef3 --- /dev/null +++ b/insights-agent/code/test/main.ts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; +import { startServer } from './runner'; + +(async () => { + const argv = await yargs(hideBin(process.argv)).options({ + port: { + require: false, + type: 'number', + }, + }).argv; + + const port = argv.port || 8000; + startServer(port); +})(); diff --git a/insights-agent/code/test/runner.ts b/insights-agent/code/test/runner.ts new file mode 100644 index 0000000..c0fa89d --- /dev/null +++ b/insights-agent/code/test/runner.ts @@ -0,0 +1,294 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import bodyParser from 'body-parser'; +import express, { Express, Handler, Request, Response } from 'express'; + +import process from 'process'; +import { functionFactory, FunctionFactoryType } from '../src/function-factory'; +import { HTTPClient, HttpRequest } from './http_client'; +import { + ActivateHookResult, + DeactivateHookResult, + ExecutionResult, + FunctionError, + HandlerError, + RuntimeError, + RuntimeErrorType, + SnapInsSystemUpdateRequest, + SnapInsSystemUpdateRequestInactive, + SnapInsSystemUpdateRequestStatus, + SnapInsSystemUpdateResponse, +} from './types'; + + +import { + Context as SnapInContext, + ExecuteOperationResult, + ExecuteOperationResult_SerializationFormat, + ExecutionMetadata, + FunctionExecutionError, + FunctionInput, + OperationOutput, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +const app: Express = express(); +app.use(bodyParser.json(), bodyParser.urlencoded({ extended: false })); + +export const startServer = (port: number) => { + app.listen(port, () => { + console.log(`[server]: Server is running at http://localhost:${port}`); + }); +}; + +// handle async requests +app.post('/handle/async', async (req: Request, resp: Response) => { + const events = req.body; + if (events === undefined) { + resp.status(400).send('Invalid request format: body is undefined'); + return; + } + + await handleEvent(events, true /* isAsync */, resp); +}); + +app.post('/handle/sync', async (req: Request, resp: Response) => { + if (req.body === undefined) { + resp.status(400).send('Invalid request format: body is undefined'); + return; + } + // for sync invokation, wrap in an array + const events: any[] = [req.body]; + await handleEvent(events, false /* isAsync */, resp); +}); + +async function run(f: any, event: any): Promise<any> { + let result = await f(event); + return result; +} + +async function handleEvent(events: any[], isAsync: boolean, resp: Response) { + let error; + let results: ExecutionResult[] = []; + let receivedError = false; + + if (!Array.isArray(events)) { + let errMsg = 'Invalid request format: body is not an array'; + error = { + err_type: RuntimeErrorType.InvalidRequest, + err_msg: errMsg, + } as RuntimeError; + console.error(error.err_msg); + resp.status(400).send(errMsg); + return; + } + // if the request is synchronous, there should be a single event + if (!isAsync) { + if (events.length > 1) { + let errMsg = 'Invalid request format: multiple events provided for synchronous request'; + error = { + err_type: RuntimeErrorType.InvalidRequest, + err_msg: errMsg, + } as RuntimeError; + console.error(error.err_msg); + resp.status(400).send(errMsg); + return; + } + } else { + // return a success response back to the server + resp.status(200).send(); + } + + for (let event of events) { + let result; + const functionName: FunctionFactoryType = event.execution_metadata.function_name as FunctionFactoryType; + if (functionName === undefined) { + error = { + err_type: RuntimeErrorType.FunctionNameNotProvided, + err_msg: 'Function name not provided in event', + } as RuntimeError; + console.error(error.err_msg); + receivedError = true; + } else { + const f = functionFactory[functionName]; + try { + if (f == undefined) { + error = { + err_type: RuntimeErrorType.FunctionNotFound, + err_msg: `Function ${event.execution_metadata.function_name} not found in factory`, + } as RuntimeError; + console.error(error.err_msg); + receivedError = true; + } else { + result = await run(f, [event]); + } + } catch (e) { + error = { error: e } as FunctionError; + console.error(e); + } + + // Any common post processing goes here. The function returns + // only if the function execution was by an operation + } + const opResult = await postRun(event,error, result); + + // Return result. + let res: ExecutionResult = {}; + + if (opResult !== undefined) { + res.function_result = opResult; + } else if (result !== undefined) { + res.function_result = result; + } + + if (error !== undefined) { + res.error = error; + } + results.push(res); + } + + if (!isAsync) { + resp.status(200).send(results[0]); + } +} + +// post processing +async function postRun(event: any, handlerError: HandlerError, result: any){ + console.debug('Function execution complete'); + // Check if the function was invoked by an operation. + if (isInvokedFromOperation(event)) { + // handle operation specific logic + console.debug('Function was invoked by an operation'); + const data: Uint8Array = OperationOutput.encode(result).finish(); + + return { + serialization_format: ExecuteOperationResult_SerializationFormat.Proto, + data: Buffer.from(data).toString('base64'), + } as ExecuteOperationResult; + } + if (isActivateHook(event)) { + handleActivateHookResult(event,handlerError, result); + } else if (isDeactivateHook(event)) { + handleDeactivateHookResult(event,handlerError, result); + } + return undefined +} + +function isActivateHook(event: any): boolean { + return event.execution_metadata.event_type === 'hook:snap_in_activate'; +} + +function isDeactivateHook(event: any): boolean { + return event.execution_metadata.event_type === 'hook:snap_in_deactivate'; +} + +function isInvokedFromOperation(event: any): boolean { + return event.execution_metadata.operation_slug !== undefined; +} + +function handleActivateHookResult(event: any, handlerError: HandlerError, result: any) { + let update_req: SnapInsSystemUpdateRequest = { + id: event.context.snap_in_id, + status: SnapInsSystemUpdateRequestStatus.Active, + }; + let res = getActivateHookResult(result); + update_req.inputs_values = res.inputs_values; + + if (handlerError !== undefined || res?.status === 'error') { + console.debug('Setting snap-in status to error'); + update_req.status = SnapInsSystemUpdateRequestStatus.Error; + } + + return updateSnapInState(event, update_req); +} + +function handleDeactivateHookResult(event: any, handlerError: HandlerError, result: any) { + let update_req: SnapInsSystemUpdateRequest = { + id: event.context.snap_in_id, + status: SnapInsSystemUpdateRequestStatus.Inactive, + }; + let res = getDeactivateHookResult(result); + update_req.inputs_values = res.inputs_values; + if (event.payload.force_deactivate) { + console.debug('Snap-in is being force deactivated, errors ignored'); + } + if ((handlerError !== undefined || res?.status === 'error') && !event.payload.force_deactivate) { + console.debug('Setting snap-in status to error'); + update_req.status = SnapInsSystemUpdateRequestStatus.Error; + } else { + if (event.payload.is_deletion) { + console.debug('Marking snap-in to be deleted'); + (update_req as SnapInsSystemUpdateRequestInactive).is_deletion = true; + } else { + console.debug('Setting snap-in status to inactive'); + } + } + + return updateSnapInState(event, update_req); +} + +// Update the snap-in status based on hook result. +async function updateSnapInState(event: any, update_req: SnapInsSystemUpdateRequest) { + console.debug('Updating snap-in state after running async hook'); + const { secrets } = event.context; + const client = new HTTPClient({ + endpoint: event.execution_metadata.devrev_endpoint, + token: secrets?.service_account_token, + }); + + const request: HttpRequest = { + path: '/internal/snap-ins.system-update', + body: update_req, + }; + + try { + await client.post<SnapInsSystemUpdateResponse>(request); + } catch (e) { + console.error(e); + } +} + +function getActivateHookResult(input: any): ActivateHookResult { + let res = {} as ActivateHookResult; + if (input instanceof Object) { + if (input.status === 'active' || input.status === 'error') { + res.status = input.status; + } else if (input.status !== undefined) { + console.error(`Invalid status field ${input.status}: status must be active or error`); + } + if (input.inputs_values instanceof Object) { + res.inputs_values = input.inputs_values; + } else if (input.inputs_values !== undefined) { + console.error(`Invalid inputs_values field ${input.inputs_values}: inputs_values is not an object`); + } + } + return res; +} + +function getDeactivateHookResult(input: any): DeactivateHookResult { + let res = {} as DeactivateHookResult; + if (input instanceof Object) { + if (input.status === 'inactive' || input.status === 'error') { + res.status = input.status; + } else if (input.status !== undefined) { + console.error(`Invalid status field ${input.status}: status must be inactive or error`); + } + if (input.inputs_values instanceof Object) { + res.inputs_values = input.inputs_values; + } else if (input.inputs_values !== undefined) { + console.error(`Invalid inputs_values field ${input.inputs_values}: inputs_values is not an object`); + } + } + return res; +} diff --git a/insights-agent/code/test/types.ts b/insights-agent/code/test/types.ts new file mode 100644 index 0000000..6199093 --- /dev/null +++ b/insights-agent/code/test/types.ts @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +/* + Error Types +*/ + +export enum RuntimeErrorType { + FunctionNotFound = 'FUNCTION_NOT_FOUND', + FunctionNameNotProvided = 'FUNCTION_NAME_NOT_PROVIDED', + InvalidRequest = 'INVALID_REQUEST', +} + +export type FunctionError = { + error: unknown; +}; + +export type RuntimeError = { + err_type: RuntimeErrorType; + err_msg: string; +}; + +/* + Snap-in types +*/ + +/** snap-ins-system-update-request */ +export type SnapInsSystemUpdateRequest = ( + | SnapInsSystemUpdateRequestActive + | SnapInsSystemUpdateRequestError + | SnapInsSystemUpdateRequestInactive +) & { + /** The ID of the snap-in to update. */ + id: string; + /** Values of the inputs. */ + inputs_values?: object; + status: SnapInsSystemUpdateRequestStatus; +}; + +/* snap-ins-system-update-request-active */ +export type SnapInsSystemUpdateRequestActive = object; + +/* snap-ins-system-update-request-error */ +export type SnapInsSystemUpdateRequestError = object; + +/* snap-ins-system-update-request-inactive */ +export interface SnapInsSystemUpdateRequestInactive { + /** Parameter to proceed with deletion of snap-in. */ + is_deletion?: boolean; +} + +export enum SnapInsSystemUpdateRequestStatus { + Active = 'active', + Error = 'error', + Inactive = 'inactive', +} + +/* snap-ins-system-update-response */ +export type SnapInsSystemUpdateResponse = object; + +export type HandlerError = FunctionError | RuntimeError | undefined; + +export type ExecutionResult = { + function_result?: any; + error?: HandlerError; +}; + +export type ActivateHookResult = { + status: 'active' | 'error'; + inputs_values?: Record<string, any>; +}; + +export type DeactivateHookResult = { + status: 'inactive' | 'error'; + inputs_values?: Record<string, any>; +}; diff --git a/insights-agent/code/tsconfig.eslint.json b/insights-agent/code/tsconfig.eslint.json new file mode 100644 index 0000000..c8722d7 --- /dev/null +++ b/insights-agent/code/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["./**/*.ts", "./**/*.js", "./.*.js"] +} diff --git a/insights-agent/code/tsconfig.json b/insights-agent/code/tsconfig.json new file mode 100644 index 0000000..92f5866 --- /dev/null +++ b/insights-agent/code/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "baseUrl": "./", + "paths": { + "*": ["./src/*"] + }, + "outDir": "./dist", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "declaration": true, + "allowJs": true, + "allowSyntheticDefaultImports": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src", "test"], + "exclude": ["node_modules", "dist", "test"] +} diff --git a/insights-agent/curl.json b/insights-agent/curl.json new file mode 100644 index 0000000..0dd75dd --- /dev/null +++ b/insights-agent/curl.json @@ -0,0 +1,87 @@ +[ + { + "id": "don:integration:dvrv-us-1:devo/787:workflow/378:workflow_step/378.2693", + "description": "Step for manually triggering get account workflow", + "name": "Manual", + "output_ports": [ + { + "name": "output", + "schema": { + "field_descriptors": [ + { + "field_type": "id", + "db_name": "agent_session_id", + "description": "The ID of the agent session", + "id_type": [ + "ai_agent_session" + ], + "is_required": true, + "name": "agent_session_id" + }, + { + "field_type": "text", + "db_name": "skill_call_id", + "description": "The ID of the skill call being executed", + "is_required": true, + "name": "skill_call_id" + }, + { + "field_type": "text", + "db_name": "skill_name", + "description": "The name of the skill being executed", + "is_required": true, + "name": "skill_name" + } + ], + "type": "field_descriptor" + } + } + ], + "reference_key": "ai_agent_skill_manual_trigger" + }, + { + "id": "don:integration:dvrv-us-1:devo/787:workflow/378:workflow_step/378.2705", + "input_values": [ + { + "fields": [ + { + "name": "agent_session_id", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').agent_session_id" + } + }, + { + "name": "skill_call_id", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').skill_call_id" + } + }, + { + "name": "skill_name", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').skill_name" + } + }, + { + "name": "redis_subscription_id", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').redis_subscription_id" + } + }, + { + "name": "output", + "value": { + "type": "jsonata_expression", + "value": "$get('get_current_time_1', 'output').current_time" + } + } + ], + "port_name": "input" + } + ] + } +] \ No newline at end of file diff --git a/insights-agent/dim_ticket.json b/insights-agent/dim_ticket.json new file mode 100644 index 0000000..f161778 --- /dev/null +++ b/insights-agent/dim_ticket.json @@ -0,0 +1,78 @@ +{ + "columns": { + "update": [ + { + "name": "sentiment_json", + "description": "A JSON with a 'label' field indicating the sentiment: Delighted, Happy, Neutral, Unhappy, Frustrated" + }, + { + "name": "actual_close_date", + "description": "The actual close date of the ticket. Example: 2024-09-24T09:04:59.438Z" + }, + { + "name": "subtype", + "description": "The subtype of the ticket" + }, + { + "name": "surveys_aggregation_json", + "description": "A JSON array with each element having an 'average' field denoting the CSAT score (between 1-5) of a survey response" + }, + { + "name": "created_date", + "description": "The date when the ticket was created. Example: 2024-09-24T09:04:59.438Z" + }, + { + "name": "stage_json", + "description": "A JSON with a 'name' field indicating the stage of the ticket. Example: queued, awaiting_development" + }, + { + "name": "rev_oid", + "description": "The ID of the rev org object (customer) to which this ticket belongs to" + }, + { + "name": "modified_by_id", + "description": "The ID of the user who last modified the ticket" + }, + { + "name": "created_by_id", + "description": "The ID of the user who created the ticket" + }, + { + "name": "applies_to_part_id", + "description": "The ID of the part object to which this ticket belongs to" + }, + { + "name": "group", + "description": "The ID of the group object of dev users to which this ticket belongs to" + }, + { + "name": "target_close_date", + "description": "The target close date of the ticket. Example: 2024-09-24T09:04:59.438Z" + }, + { + "name": "owned_by_ids", + "description": "The list of IDs of the users who own the ticket" + }, + { + "name": "severity", + "description": "The severity of the ticket denoted by an integer value where: 5->blocker, 6->high, 7->medium, 8->low" + }, + { + "name": "reported_by_ids", + "description": "The list of IDs of the users who reported the ticket" + }, + { + "name": "modified_date", + "description": "The date when the ticket was last modified. Example: 2024-09-24T09:04:59.438Z" + }, + { + "name": "id", + "description": "The unique ID of the ticket object" + }, + { + "name": "account_id", + "description": "" + } + ] + } +} \ No newline at end of file diff --git a/insights-agent/manifest.yaml b/insights-agent/manifest.yaml new file mode 100644 index 0000000..7c87432 --- /dev/null +++ b/insights-agent/manifest.yaml @@ -0,0 +1,151 @@ +version: "2" +name: "Insights Agent" +description: "Logs a message when a work item is created" + +service_account: + display_name: 3P Operation Bot + +functions: + - name: operation_handler + description: function to handle operations + +operations: + - name: text_to_dataset + display_name: Text to Dataset + description: Operation to convert text to a dataset + slug: text_to_dataset + function: operation_handler + type: action + inputs: + fields: + - name: query + field_type: text + is_required: true + ui: + display_name: Query + outputs: + fields: + - name: datasets + field_type: text + ui: + display_name: Datasets + + - name: text_to_widget + display_name: Text to Widget + description: Operation to convert text to a widget + slug: text_to_widget + function: operation_handler + type: action + inputs: + fields: + - name: query + field_type: text + is_required: true + ui: + display_name: Query + outputs: + fields: + - name: widgets + field_type: text + ui: + display_name: Widgets + + - name: get_current_time + display_name: Get Current Time + description: Operation to get the current time + slug: get_current_time + function: operation_handler + type: action + inputs: + fields: + - name: query + field_type: text + is_required: true + ui: + display_name: Query + outputs: + fields: + - name: current_time + field_type: text + ui: + display_name: Current Time + + - name: run_sql + display_name: Run SQL + description: Operation to run a sql query + slug: run_sql + function: operation_handler + type: action + inputs: + fields: + - name: sql_query + field_type: text + is_required: true + ui: + display_name: SQL Query + outputs: + fields: + - name: data + field_type: text + ui: + display_name: Data + + - name: get_knowledge + display_name: Get Knowledge + description: Find answers from knowledge base + slug: get_knowledge + function: operation_handler + type: action + inputs: + fields: + - name: query + field_type: text + is_required: true + ui: + display_name: Query + outputs: + fields: + - name: knowledge + field_type: text + ui: + display_name: Knowledge + + - name: agent_callback_node + description: Operation to return the output of the workflow to the agent + slug: agent_callback_node + function: operation_handler + type: action + inputs: + fields: + - name: agent_session_id + field_type: id + id_type: + - ai_agent_session + is_required: true + ui: + display_name: Agent Session + - name: skill_call_id + field_type: text + is_required: true + ui: + display_name: Skill Call ID + - name: skill_name + field_type: text + is_required: true + ui: + display_name: Skill Name + - name: output + field_type: text + is_required: true + ui: + display_name: Output + - name: error + field_type: text + ui: + display_name: Error + outputs: + fields: + - name: success + field_type: bool + ui: + display_name: Success diff --git a/insights-agent/manual.json b/insights-agent/manual.json new file mode 100644 index 0000000..fae4386 --- /dev/null +++ b/insights-agent/manual.json @@ -0,0 +1,50 @@ +curl --request POST \ + --url https://api.dev.devrev-eng.ai/internal/workflow-steps.update \ + --header 'Authorization: eyJhbGciOiJSUzI1NiIsImlzcyI6Imh0dHBzOi8vYXV0aC10b2tlbi5kZXYuZGV2cmV2LWVuZy5haS8iLCJraWQiOiJzdHNfa2lkX3JzYSIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiamFudXMiXSwiYXpwIjoiZG9uOmlkZW50aXR5OmR2cnYtdXMtMTpkZXZvLzc4NzpkZXZ1LzE4NCIsImV4cCI6MTc5NTQ0NjE4MCwiaHR0cDovL2RldnJldi5haS9hdXRoMF91aWQiOiJkb246aWRlbnRpdHk6ZHZydi11cy0xOmRldm8vc3VwZXI6YXV0aDBfdXNlci9nb29nbGUtb2F1dGgyfDEwMjA4NTI3NjA3MjA3NzcyNzA1MiIsImh0dHA6Ly9kZXZyZXYuYWkvYXV0aDBfdXNlcl9pZCI6Imdvb2dsZS1vYXV0aDJ8MTAyMDg1Mjc2MDcyMDc3NzI3MDUyIiwiaHR0cDovL2RldnJldi5haS9kZXZvX2RvbiI6ImRvbjppZGVudGl0eTpkdnJ2LXVzLTE6ZGV2by83ODciLCJodHRwOi8vZGV2cmV2LmFpL2Rldm9pZCI6IkRFVi03ODciLCJodHRwOi8vZGV2cmV2LmFpL2RldnVpZCI6IkRFVlUtMTg0IiwiaHR0cDovL2RldnJldi5haS9kaXNwbGF5bmFtZSI6Im1hZGhhdi1zaWtrYSIsImh0dHA6Ly9kZXZyZXYuYWkvZW1haWwiOiJtYWRoYXYuc2lra2FAZGV2cmV2LmFpIiwiaHR0cDovL2RldnJldi5haS9mdWxsbmFtZSI6Ik1hZGhhdiBTaWtrYSIsImh0dHA6Ly9kZXZyZXYuYWkvaXNfdmVyaWZpZWQiOnRydWUsImh0dHA6Ly9kZXZyZXYuYWkvdG9rZW50eXBlIjoidXJuOmRldnJldjpwYXJhbXM6b2F1dGg6dG9rZW4tdHlwZTpwYXQiLCJpYXQiOjE3MDA4MzgxODAsImlzcyI6Imh0dHBzOi8vYXV0aC10b2tlbi5kZXYuZGV2cmV2LWVuZy5haS8iLCJqdGkiOiJkb246aWRlbnRpdHk6ZHZydi11cy0xOmRldm8vNzg3OnRva2VuL0p2R2ZyTENaIiwib3JnX2lkIjoib3JnX2RLTm9QM2U2aENsNnJIdUQiLCJzdWIiOiJkb246aWRlbnRpdHk6ZHZydi11cy0xOmRldm8vNzg3OmRldnUvMTg0In0.uS1402rOwQJHqSwHkj70UsIOA93bQpOTTJC06CFkXRBHjHcpjW9fk51RtfDJquXWcF3EilAVmkP5oOVBVjP94RTItq2-evOgjZm0Q3XvhvtQxKBKm8MyUJgPkhNOktXgo8ThYUl16b31jMUKC7NSmTamseJkvc-TRSSO5OT6YV-j2T6Q7LW-ksKr8h8yRLTQt774aX3FGgx_aIlk7RgnVirxtuFgivF0_xXsjQ2SOTRwcZeT1uFNT8xr4lOLD_xq7GGqEaXf_9PPbWxgJtMQvJ4hMp0UERqK59Mxs7DRYdN56cX5DNgIHnLZmwVu7u-kvr1mD-q9pzWYXNoiCNhZdw' \ + --header 'Content-Type: application/json' \ + --cookie 'AWSALB=UnukZSVjCN847Dq4D0fq4hUNGkZiAyjwraDl9wjtT4cz1IdZ0HLylvutVM5vLh5BkBRGqHyqo2D1GZIeqQNZDKquF%2BJvsa61NRPUP24o%2Bo0PQNIi83AFRTnJNYWk; AWSALBCORS=UnukZSVjCN847Dq4D0fq4hUNGkZiAyjwraDl9wjtT4cz1IdZ0HLylvutVM5vLh5BkBRGqHyqo2D1GZIeqQNZDKquF%2BJvsa61NRPUP24o%2Bo0PQNIi83AFRTnJNYWk; __Secure-fes=37f45195c32440699454000000000001%7Ccb90c2bf-4354-467d-a4c7-fd18f8a2bf10' \ + --data '{ + "id": "don:integration:dvrv-us-1:devo/787:workflow/378:workflow_step/378.2718", + "output_ports": [ + { + "name": "output", + "schema": { + "field_descriptors": [ + { + "field_type": "id", + "db_name": "agent_session_id", + "description": "The ID of the agent session", + "id_type": [ + "ai_agent_session" + ], + "is_required": true, + "name": "agent_session_id" + }, + { + "field_type": "text", + "db_name": "skill_call_id", + "description": "The ID of the skill call being executed", + "is_required": true, + "name": "skill_call_id" + }, + { + "field_type": "text", + "db_name": "skill_name", + "description": "The name of the skill being executed", + "is_required": true, + "name": "skill_name" + }, + { + "field_type": "text", + "db_name": "query", + "description": "The query", + "is_required": true, + "name": "query" + } + ], + "type": "field_descriptor" + } + } + ], + "reference_key": "ai_agent_skill_manual_trigger" +}' diff --git a/insights-agent/package-lock.json b/insights-agent/package-lock.json new file mode 100644 index 0000000..22b3d43 --- /dev/null +++ b/insights-agent/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "insights-agent", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} diff --git a/insights-agent/steps.json b/insights-agent/steps.json new file mode 100644 index 0000000..48b9c5e --- /dev/null +++ b/insights-agent/steps.json @@ -0,0 +1,380 @@ +{ + "created_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "created_date": "2024-07-15T12:40:45.534Z", + "description": "Step for manually triggering get account workflow", + "display_id": "workflow_step-160.1355", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1355", + "modified_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "modified_date": "2024-07-15T13:17:39.189Z", + "name": "Update ticket manual trigger", + "next_steps": [ + { + "next_port_name": "input", + "next_step": { + "display_id": "workflow_step-160.1357", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1357" + }, + "port_name": "output" + } + ], + "operation": { + "display_id": "operation-devrev.manual_trigger", + "id": "don:integration:dvrv-us-1:operation/devrev.manual_trigger", + "namespace": "devrev", + "output_ports": [ + { + "name": "output", + "type": "default" + } + ], + "slug": "manual_trigger", + "type": "trigger" + }, + "output_ports": [ + { + "name": "output", + "schema": { + "field_descriptors": [ + { + "field_type": "id", + "db_name": "agent_session_id", + "description": "The ID of the agent session", + "id_type": [ + "ai_agent_session" + ], + "is_required": true, + "name": "agent_session_id" + }, + { + "field_type": "text", + "db_name": "skill_call_id", + "description": "The ID of the skill call being executed", + "is_required": true, + "name": "skill_call_id" + }, + { + "field_type": "text", + "db_name": "skill_name", + "description": "The name of the skill being executed", + "is_required": true, + "name": "skill_name" + }, + { + "field_type": "text", + "db_name": "query", + "description": "The user query to find the datasets for", + "is_required": true, + "name": "query" + } + ], + "type": "field_descriptor" + } + } + ], + "reference_key": "ai_agent_skill_manual_trigger", + "ui_metadata": { + "position": { + "x": 0, + "y": 0 + } + }, + "version": "0.0.1", + "workflow": { + "display_id": "workflow-160", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160" + } +} + +{ + "created_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "created_date": "2024-07-15T12:40:56.306Z", + "description": "Operation to convert text to a dataset", + "display_id": "workflow_step-160.1357", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1357", + "input_values": [ + { + "fields": [ + { + "name": "query", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').query" + } + } + ], + "port_name": "input" + } + ], + "modified_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "modified_date": "2024-07-15T12:45:02.694Z", + "name": "Text To Dataset", + "next_steps": [ + { + "next_port_name": "input", + "next_step": { + "display_id": "workflow_step-160.1358", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1358" + }, + "port_name": "output" + } + ], + "operation": { + "display_id": "operation-insights-agent.text_to_dataset", + "id": "don:integration:dvrv-us-1:devo/787:operation/insights-agent.text_to_dataset", + "input_ports": [ + { + "name": "input", + "type": "default" + } + ], + "namespace": "insights-agent", + "output_ports": [ + { + "name": "output", + "type": "default" + } + ], + "slug": "text_to_dataset", + "type": "action" + }, + "reference_key": "text_to_dataset_1", + "ui_metadata": { + "position": { + "x": 100, + "y": 150 + } + }, + "version": "0.0.1", + "workflow": { + "display_id": "workflow-160", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160" + } +} + +{ + "created_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "created_date": "2024-07-15T12:41:01.582Z", + "description": "Operation to return the output of the workflow to the agent", + "display_id": "workflow_step-160.1358", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160:workflow_step/160.1358", + "input_values": [ + { + "fields": [ + { + "name": "agent_session_id", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').agent_session_id" + } + }, + { + "name": "skill_call_id", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').skill_call_id" + } + }, + { + "name": "skill_name", + "value": { + "type": "jsonata_expression", + "value": "$get('ai_agent_skill_manual_trigger', 'output').skill_name" + } + }, + { + "name": "redis_subscription_id", + "value": { + "type": "literal", + "value": "N/A" + } + }, + { + "name": "output", + "value": { + "type": "jsonata_expression", + "value": "$get('text_to_dataset_1', 'output').datasets" + } + } + ], + "port_name": "input" + } + ], + "modified_by": { + "type": "dev_user", + "display_handle": "madhav-sikka", + "display_id": "DEVU-184", + "display_name": "madhav-sikka", + "display_picture": { + "display_id": "artifact-29610", + "file": { + "type": "image/png" + }, + "headers": { + "content_disposition": "inline" + }, + "id": "don:core:dvrv-us-1:devo/787:artifact/29610", + "id_v1": "don:DEV-787:artifact:29610", + "original_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27test.png&X-Amz-Signature=6c72ba5dca0459089c85383fada95c655a9e78b6ce3f6ad2fd41f6449b79345f", + "preview_url": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "email": "madhav.sikka@devrev.ai", + "full_name": "Madhav Sikka", + "id": "don:identity:dvrv-us-1:devo/787:devu/184", + "id_v1": "don:DEV-787:dev_user:DEVU-184", + "state": "active", + "thumbnail": "https://devrev-dev-artifacts.s3.dualstack.us-east-1.amazonaws.com/preview/300/ziH3cySi8O6c4jaAc2b-jg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQJKT3RYYV22TEGPU%2F20240712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240712T141540Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D31536000&response-content-disposition=inline%3B%20filename%2A%3DUTF-8%27%27300&X-Amz-Signature=75710488b73f42667b3e81c7592be402f0e6a639d05fb938ff79d7783f7bbab8" + }, + "modified_date": "2024-07-15T12:50:19.063Z", + "name": "Agent Callback Node", + "operation": { + "display_id": "operation-agent-operations-custom.agent_callback_node", + "id": "don:integration:dvrv-us-1:devo/787:operation/agent-operations-custom.agent_callback_node", + "input_ports": [ + { + "name": "input", + "type": "default" + } + ], + "namespace": "agent-operations-custom", + "output_ports": [ + { + "name": "output", + "type": "default" + } + ], + "slug": "agent_callback_node", + "type": "action" + }, + "reference_key": "agent_callback_node_1", + "ui_metadata": { + "position": { + "x": 200, + "y": 300 + } + }, + "version": "0.0.1", + "workflow": { + "display_id": "workflow-160", + "id": "don:integration:dvrv-us-1:devo/787:workflow/160" + } +} \ No newline at end of file From c7d44af0d7fbd56fe13702a49340a18967f5346a Mon Sep 17 00:00:00 2001 From: tinkering-bhatia <taarush.bhatia@devrev.ai> Date: Fri, 18 Oct 2024 02:04:38 +0530 Subject: [PATCH 08/11] Add operations --- anz-demo-operations/README.md | 13 + anz-demo-operations/build.tar.gz | Bin 0 -> 89147 bytes anz-demo-operations/code/.eslintrc.js | 35 + anz-demo-operations/code/.gitignore | 39 + anz-demo-operations/code/.npmrc | 1 + anz-demo-operations/code/.prettierignore | 4 + anz-demo-operations/code/.prettierrc | 15 + anz-demo-operations/code/babel.config.js | 3 + anz-demo-operations/code/jest.config.js | 12 + anz-demo-operations/code/nodemon.json | 5 + anz-demo-operations/code/package-lock.json | 10600 ++++++++++++++++ anz-demo-operations/code/package.json | 61 + .../src/fixtures/on_work_created_event.json | 81 + .../code/src/function-factory.ts | 8 + .../operation_handler/get_bank_feed.ts | 72 + .../get_bank_feed_transactions.ts | 72 + .../operation_handler/get_current_time.ts | 32 + .../operation_handler/get_temperature.ts | 60 + .../src/functions/operation_handler/index.ts | 41 + .../list_bank_disruptions.ts | 68 + .../operation_handler/list_bank_feeds.ts | 74 + .../operation_handler/refresh_bank_feed.ts | 71 + anz-demo-operations/code/src/index.ts | 1 + anz-demo-operations/code/src/main.ts | 27 + .../code/src/operations/index.ts | 26 + .../code/src/test-runner/test-runner.ts | 27 + anz-demo-operations/code/test/http_client.ts | 52 + anz-demo-operations/code/test/main.ts | 29 + anz-demo-operations/code/test/runner.ts | 294 + anz-demo-operations/code/test/types.ts | 87 + anz-demo-operations/code/tsconfig.eslint.json | 4 + anz-demo-operations/code/tsconfig.json | 24 + anz-demo-operations/manifest.yaml | 154 + anz-demo-operations/package-lock.json | 6 + 34 files changed, 12098 insertions(+) create mode 100644 anz-demo-operations/README.md create mode 100644 anz-demo-operations/build.tar.gz create mode 100644 anz-demo-operations/code/.eslintrc.js create mode 100644 anz-demo-operations/code/.gitignore create mode 100644 anz-demo-operations/code/.npmrc create mode 100644 anz-demo-operations/code/.prettierignore create mode 100644 anz-demo-operations/code/.prettierrc create mode 100644 anz-demo-operations/code/babel.config.js create mode 100644 anz-demo-operations/code/jest.config.js create mode 100644 anz-demo-operations/code/nodemon.json create mode 100644 anz-demo-operations/code/package-lock.json create mode 100644 anz-demo-operations/code/package.json create mode 100644 anz-demo-operations/code/src/fixtures/on_work_created_event.json create mode 100644 anz-demo-operations/code/src/function-factory.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/get_bank_feed.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/get_bank_feed_transactions.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/get_current_time.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/get_temperature.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/index.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/list_bank_disruptions.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts create mode 100644 anz-demo-operations/code/src/functions/operation_handler/refresh_bank_feed.ts create mode 100644 anz-demo-operations/code/src/index.ts create mode 100644 anz-demo-operations/code/src/main.ts create mode 100644 anz-demo-operations/code/src/operations/index.ts create mode 100644 anz-demo-operations/code/src/test-runner/test-runner.ts create mode 100644 anz-demo-operations/code/test/http_client.ts create mode 100644 anz-demo-operations/code/test/main.ts create mode 100644 anz-demo-operations/code/test/runner.ts create mode 100644 anz-demo-operations/code/test/types.ts create mode 100644 anz-demo-operations/code/tsconfig.eslint.json create mode 100644 anz-demo-operations/code/tsconfig.json create mode 100644 anz-demo-operations/manifest.yaml create mode 100644 anz-demo-operations/package-lock.json diff --git a/anz-demo-operations/README.md b/anz-demo-operations/README.md new file mode 100644 index 0000000..7fa0169 --- /dev/null +++ b/anz-demo-operations/README.md @@ -0,0 +1,13 @@ +## Snap-in containing custom operations + +The snap-in contains custom operations which can be used in the Workflow Builder once snap-in gets successfully activated. + +Operations are workflow node blueprint which are used to create worlkflow steps(nodes). + + +## Operations in the snap-in + +The snap-in contains the following operations: + + + diff --git a/anz-demo-operations/build.tar.gz b/anz-demo-operations/build.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..16483f3b3e2b7de1fafa1723056cadec10e51530 GIT binary patch literal 89147 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 literal 0 HcmV?d00001 diff --git a/anz-demo-operations/code/.eslintrc.js b/anz-demo-operations/code/.eslintrc.js new file mode 100644 index 0000000..ca876e7 --- /dev/null +++ b/anz-demo-operations/code/.eslintrc.js @@ -0,0 +1,35 @@ +module.exports = { + extends: 'airbnb-typescript/base', + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', // Makes ESLint and Prettier play nicely together + 'plugin:import/recommended', + 'plugin:import/typescript', + ], + ignorePatterns: ['**/dist/*'], + parser: '@typescript-eslint/parser', + parserOptions: { + project: './tsconfig.eslint.json', + }, + plugins: ['prettier', 'unused-imports', 'import', 'simple-import-sort', 'sort-keys-fix'], + root: true, + rules: { + 'import/first': 'error', // Ensures all imports are at the top of the file + 'import/newline-after-import': 'error', // Ensures there’s a newline after the imports + 'import/no-duplicates': 'error', // Merges import statements from the same file + 'import/order': 'off', // Not compatible with simple-import-sort + 'no-unused-vars': 'off', // Handled by @typescript-eslint/no-unused-vars + 'simple-import-sort/exports': 'error', // Auto-formats exports + 'simple-import-sort/imports': 'error', // Auto-formats imports + 'sort-imports': 'off', // Not compatible with simple-import-sort + 'sort-keys-fix/sort-keys-fix': ['error', 'asc', { natural: true }], // Sorts long object key lists alphabetically + 'unused-imports/no-unused-imports': 'error', // Removes unused imports automatically, + '@typescript-eslint/no-explicit-any': 'warn', // Allows any type with a warning + }, + overrides:[{ + "files": ["**/*.test.ts"], + "rules": { + 'simple-import-sort/imports': 'off', // for test files we would want to load the mocked up modules later so on sorting the mocking mechanism will not work + } + }] +}; diff --git a/anz-demo-operations/code/.gitignore b/anz-demo-operations/code/.gitignore new file mode 100644 index 0000000..6db3937 --- /dev/null +++ b/anz-demo-operations/code/.gitignore @@ -0,0 +1,39 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# Testing +coverage/ + +# dependencies +/node_modules + +# 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 + +# System Files +.DS_Store +Thumbs.db + +deps.json +results.json +before-run-data.json + +# packaged app +*.tar.gz diff --git a/anz-demo-operations/code/.npmrc b/anz-demo-operations/code/.npmrc new file mode 100644 index 0000000..cffe8cd --- /dev/null +++ b/anz-demo-operations/code/.npmrc @@ -0,0 +1 @@ +save-exact=true diff --git a/anz-demo-operations/code/.prettierignore b/anz-demo-operations/code/.prettierignore new file mode 100644 index 0000000..640c051 --- /dev/null +++ b/anz-demo-operations/code/.prettierignore @@ -0,0 +1,4 @@ +# Add files here to ignore them from prettier formatting + +/dist + diff --git a/anz-demo-operations/code/.prettierrc b/anz-demo-operations/code/.prettierrc new file mode 100644 index 0000000..de83c71 --- /dev/null +++ b/anz-demo-operations/code/.prettierrc @@ -0,0 +1,15 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "jsxSingleQuote": false, + "arrowParens": "always", + "proseWrap": "never", + "htmlWhitespaceSensitivity": "strict", + "endOfLine": "lf", + "organizeImportsSkipDestructiveCodeActions": true +} diff --git a/anz-demo-operations/code/babel.config.js b/anz-demo-operations/code/babel.config.js new file mode 100644 index 0000000..e6ffbd4 --- /dev/null +++ b/anz-demo-operations/code/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'], +}; diff --git a/anz-demo-operations/code/jest.config.js b/anz-demo-operations/code/jest.config.js new file mode 100644 index 0000000..1bf82d0 --- /dev/null +++ b/anz-demo-operations/code/jest.config.js @@ -0,0 +1,12 @@ +module.exports = { + collectCoverage: true, + coverageDirectory: 'coverage', + coverageThreshold: { + "**/*": { + branches: 60 + } + }, + coverageReporters: ['text'], + preset: 'ts-jest', + testEnvironment: 'node' +}; diff --git a/anz-demo-operations/code/nodemon.json b/anz-demo-operations/code/nodemon.json new file mode 100644 index 0000000..8e47e98 --- /dev/null +++ b/anz-demo-operations/code/nodemon.json @@ -0,0 +1,5 @@ +{ + "execMap": { + "ts": "ts-node" + } +} diff --git a/anz-demo-operations/code/package-lock.json b/anz-demo-operations/code/package-lock.json new file mode 100644 index 0000000..f7b0f92 --- /dev/null +++ b/anz-demo-operations/code/package-lock.json @@ -0,0 +1,10600 @@ +{ + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@devrev/typescript-sdk": "1.1.28", + "@slack/web-api": "7.3.1", + "protobufjs": "7.3.0" + }, + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.18.6", + "@types/body-parser": "1.19.5", + "@types/express": "4.17.21", + "@types/jest": "^29.4.0", + "@types/node": "^18.13.0", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.51.0", + "babel-jest": "^29.4.2", + "body-parser": "1.20.2", + "dotenv": "^16.0.3", + "eslint": "^8.33.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sort-keys-fix": "1.1.2", + "eslint-plugin-unused-imports": "2.0.0", + "express": "4.19.2", + "jest": "^29.4.2", + "nodemon": "^2.0.20", + "prettier": "^2.8.3", + "prettier-plugin-organize-imports": "^3.2.2", + "rimraf": "^4.1.2", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "yargs": "^17.6.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.6", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", + "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", + "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helpers": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/traverse": "^7.24.6", + "@babel/types": "^7.24.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", + "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", + "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz", + "integrity": "sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", + "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz", + "integrity": "sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz", + "integrity": "sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", + "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", + "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", + "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz", + "integrity": "sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", + "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", + "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz", + "integrity": "sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", + "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz", + "integrity": "sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-wrap-function": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz", + "integrity": "sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-member-expression-to-functions": "^7.24.6", + "@babel/helper-optimise-call-expression": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", + "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz", + "integrity": "sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", + "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", + "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", + "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz", + "integrity": "sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.24.6", + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", + "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.6", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", + "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.6.tgz", + "integrity": "sha512-bYndrJ6Ph6Ar+GaB5VAc0JPoP80bQCm4qon6JEzXfRl5QZyQ8Ur1K6k7htxWmPA5z+k7JQvaMUrtXlqclWYzKw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.6.tgz", + "integrity": "sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz", + "integrity": "sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz", + "integrity": "sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "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-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "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-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz", + "integrity": "sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz", + "integrity": "sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "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-jsx": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz", + "integrity": "sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "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-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "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-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.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz", + "integrity": "sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz", + "integrity": "sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.6.tgz", + "integrity": "sha512-VEP2o4iR2DqQU6KPgizTW2mnMx6BG5b5O9iQdrW9HesLkv8GIA8x2daXBQxw1MrsIkFQGA/iJ204CKoQ8UcnAA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.6.tgz", + "integrity": "sha512-NTBA2SioI3OsHeIn6sQmhvXleSl9T70YY/hostQLveWs0ic+qvbA3fa0kwAwQ0OA/XGaAerNZRQGJyRfhbJK4g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-remap-async-to-generator": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz", + "integrity": "sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz", + "integrity": "sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz", + "integrity": "sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz", + "integrity": "sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz", + "integrity": "sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz", + "integrity": "sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/template": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz", + "integrity": "sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz", + "integrity": "sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz", + "integrity": "sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz", + "integrity": "sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz", + "integrity": "sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz", + "integrity": "sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz", + "integrity": "sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz", + "integrity": "sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz", + "integrity": "sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz", + "integrity": "sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz", + "integrity": "sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz", + "integrity": "sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz", + "integrity": "sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz", + "integrity": "sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-simple-access": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz", + "integrity": "sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz", + "integrity": "sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz", + "integrity": "sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz", + "integrity": "sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz", + "integrity": "sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz", + "integrity": "sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz", + "integrity": "sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz", + "integrity": "sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-replace-supers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz", + "integrity": "sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz", + "integrity": "sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz", + "integrity": "sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz", + "integrity": "sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz", + "integrity": "sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz", + "integrity": "sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz", + "integrity": "sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz", + "integrity": "sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz", + "integrity": "sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz", + "integrity": "sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz", + "integrity": "sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz", + "integrity": "sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz", + "integrity": "sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.6.tgz", + "integrity": "sha512-H0i+hDLmaYYSt6KU9cZE0gb3Cbssa/oxWis7PX4ofQzbvsfix9Lbh8SRk7LCPDlLWJHUiFeHU0qRRpF/4Zv7mQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/plugin-syntax-typescript": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz", + "integrity": "sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz", + "integrity": "sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz", + "integrity": "sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz", + "integrity": "sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.6.tgz", + "integrity": "sha512-CrxEAvN7VxfjOG8JNF2Y/eMqMJbZPZ185amwGUBp8D9USK90xQmv7dLdFSa+VbD7fdIqcy/Mfv7WtzG8+/qxKg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.6", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.6", + "@babel/plugin-syntax-import-attributes": "^7.24.6", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.6", + "@babel/plugin-transform-async-generator-functions": "^7.24.6", + "@babel/plugin-transform-async-to-generator": "^7.24.6", + "@babel/plugin-transform-block-scoped-functions": "^7.24.6", + "@babel/plugin-transform-block-scoping": "^7.24.6", + "@babel/plugin-transform-class-properties": "^7.24.6", + "@babel/plugin-transform-class-static-block": "^7.24.6", + "@babel/plugin-transform-classes": "^7.24.6", + "@babel/plugin-transform-computed-properties": "^7.24.6", + "@babel/plugin-transform-destructuring": "^7.24.6", + "@babel/plugin-transform-dotall-regex": "^7.24.6", + "@babel/plugin-transform-duplicate-keys": "^7.24.6", + "@babel/plugin-transform-dynamic-import": "^7.24.6", + "@babel/plugin-transform-exponentiation-operator": "^7.24.6", + "@babel/plugin-transform-export-namespace-from": "^7.24.6", + "@babel/plugin-transform-for-of": "^7.24.6", + "@babel/plugin-transform-function-name": "^7.24.6", + "@babel/plugin-transform-json-strings": "^7.24.6", + "@babel/plugin-transform-literals": "^7.24.6", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.6", + "@babel/plugin-transform-member-expression-literals": "^7.24.6", + "@babel/plugin-transform-modules-amd": "^7.24.6", + "@babel/plugin-transform-modules-commonjs": "^7.24.6", + "@babel/plugin-transform-modules-systemjs": "^7.24.6", + "@babel/plugin-transform-modules-umd": "^7.24.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.6", + "@babel/plugin-transform-new-target": "^7.24.6", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.6", + "@babel/plugin-transform-numeric-separator": "^7.24.6", + "@babel/plugin-transform-object-rest-spread": "^7.24.6", + "@babel/plugin-transform-object-super": "^7.24.6", + "@babel/plugin-transform-optional-catch-binding": "^7.24.6", + "@babel/plugin-transform-optional-chaining": "^7.24.6", + "@babel/plugin-transform-parameters": "^7.24.6", + "@babel/plugin-transform-private-methods": "^7.24.6", + "@babel/plugin-transform-private-property-in-object": "^7.24.6", + "@babel/plugin-transform-property-literals": "^7.24.6", + "@babel/plugin-transform-regenerator": "^7.24.6", + "@babel/plugin-transform-reserved-words": "^7.24.6", + "@babel/plugin-transform-shorthand-properties": "^7.24.6", + "@babel/plugin-transform-spread": "^7.24.6", + "@babel/plugin-transform-sticky-regex": "^7.24.6", + "@babel/plugin-transform-template-literals": "^7.24.6", + "@babel/plugin-transform-typeof-symbol": "^7.24.6", + "@babel/plugin-transform-unicode-escapes": "^7.24.6", + "@babel/plugin-transform-unicode-property-regex": "^7.24.6", + "@babel/plugin-transform-unicode-regex": "^7.24.6", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.6.tgz", + "integrity": "sha512-U10aHPDnokCFRXgyT/MaIRTivUu2K/mu0vJlwRS9LxJmJet+PFQNKpggPyFCUtC6zWSBPjvxjnpNkAn3Uw2m5w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-validator-option": "^7.24.6", + "@babel/plugin-syntax-jsx": "^7.24.6", + "@babel/plugin-transform-modules-commonjs": "^7.24.6", + "@babel/plugin-transform-typescript": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", + "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", + "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", + "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.6", + "@babel/generator": "^7.24.6", + "@babel/helper-environment-visitor": "^7.24.6", + "@babel/helper-function-name": "^7.24.6", + "@babel/helper-hoist-variables": "^7.24.6", + "@babel/helper-split-export-declaration": "^7.24.6", + "@babel/parser": "^7.24.6", + "@babel/types": "^7.24.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", + "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.6", + "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/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/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==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@devrev/typescript-sdk": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@devrev/typescript-sdk/-/typescript-sdk-1.1.28.tgz", + "integrity": "sha512-MgdM8c7uWsTDpSN5MuiAwHeZGqcc7V99mZyCbNxNMoyle35kVgKgUersMPG5st7mKK5WPcS/Fz0jBZ+Z4hr+Uw==", + "dependencies": { + "@types/yargs": "^17.0.22", + "axios": "^1.3.6", + "dotenv": "^16.0.3", + "protobufjs": "^7.3.0", + "yargs": "^17.6.2" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "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/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": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@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": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@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": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@slack/logger": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-4.0.0.tgz", + "integrity": "sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==", + "dependencies": { + "@types/node": ">=18.0.0" + }, + "engines": { + "node": ">= 18", + "npm": ">= 8.6.0" + } + }, + "node_modules/@slack/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@slack/types/-/types-2.12.0.tgz", + "integrity": "sha512-yFewzUomYZ2BYaGJidPuIgjoYj5wqPDmi7DLSaGIkf+rCi4YZ2Z3DaiYIbz7qb/PL2NmamWjCvB7e9ArI5HkKg==", + "engines": { + "node": ">= 12.13.0", + "npm": ">= 6.12.0" + } + }, + "node_modules/@slack/web-api": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-7.3.1.tgz", + "integrity": "sha512-n2KfnlqjaPJ5y98nU5Nn0UwTIxafLwQSQIOLpsQXKGYDF24S/ap5Ebv+ifVMtY+vIJBqj1q2+l3W9bpFHeiJ2A==", + "dependencies": { + "@slack/logger": "^4.0.0", + "@slack/types": "^2.9.0", + "@types/node": ">=18.0.0", + "@types/retry": "0.12.0", + "axios": "^1.6.5", + "eventemitter3": "^5.0.1", + "form-data": "^4.0.0", + "is-electron": "2.2.2", + "is-stream": "^2", + "p-queue": "^6", + "p-retry": "^4", + "retry": "^0.13.1" + }, + "engines": { + "node": ">= 18", + "npm": ">= 8.6.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz", + "integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "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.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/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==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "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": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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": "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/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.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": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/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-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==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true, + "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.30001627", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001627.tgz", + "integrity": "sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-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/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": 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.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "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==", + "dev": true, + "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/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": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "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==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.788", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz", + "integrity": "sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "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-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", + "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.2", + "has": "^1.0.3", + "is-core-module": "^2.8.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.12.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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-plugin-simple-import-sort": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-7.0.0.tgz", + "integrity": "sha512-U3vEDB5zhYPNfxT5TYR7u01dboFZp+HNpnGhkDB2g/2E4wZ/g1Q9Ton8UwCLfRV9yAKyYqDh62oHOamvkFxsvw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-sort-keys-fix/-/eslint-plugin-sort-keys-fix-1.1.2.tgz", + "integrity": "sha512-DNPHFGCA0/hZIsfODbeLZqaGY/+q3vgtshF85r+YWDNCQ2apd9PNs/zL6ttKm0nD1IFwvxyg3YOTI7FHl4unrw==", + "dev": true, + "dependencies": { + "espree": "^6.1.2", + "esutils": "^2.0.2", + "natural-compare": "^1.4.0", + "requireindex": "~1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-sort-keys-fix/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", + "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "dev": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/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/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "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": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.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/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "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/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "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/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "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.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "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/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==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "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==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "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-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@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": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/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/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==", + "dev": true + }, + "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/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==", + "dev": true + }, + "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==", + "dev": true + }, + "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/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==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "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/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/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==", + "dev": true + }, + "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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "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/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "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/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "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.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "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-locate/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-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "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/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.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.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "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/prettier-plugin-organize-imports": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz", + "integrity": "sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog==", + "dev": true, + "peerDependencies": { + "@volar/vue-language-plugin-pug": "^1.0.4", + "@volar/vue-typescript": "^1.0.4", + "prettier": ">=2.0", + "typescript": ">=2.9" + }, + "peerDependenciesMeta": { + "@volar/vue-language-plugin-pug": { + "optional": true + }, + "@volar/vue-typescript": { + "optional": true + } + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/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/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/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "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==", + "dev": true, + "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/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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==", + "dev": true, + "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==", + "dev": true, + "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": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "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/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "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/rimraf/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "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/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "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==", + "dev": true + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "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.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/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/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-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-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/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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/ts-jest": { + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.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.1", + "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": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/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/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.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "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==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "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==", + "dev": true, + "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/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "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/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "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/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" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/anz-demo-operations/code/package.json b/anz-demo-operations/code/package.json new file mode 100644 index 0000000..48abbae --- /dev/null +++ b/anz-demo-operations/code/package.json @@ -0,0 +1,61 @@ +{ + "name": "devrev-snaps-typescript-template", + "version": "1.0.0", + "description": "", + "main": "./dist/index.js", + "scripts": { + "lint": "eslint --ignore-path .gitignore .", + "lint:fix": "eslint --fix --ignore-path .gitignore .", + "build": "rimraf ./dist && tsc", + "build:watch": "tsc --watch", + "prepackage": "npm run build", + "package": "tar -cvzf build.tar.gz dist package.json package-lock.json .npmrc", + "start": "ts-node src/main.ts", + "start:watch": "nodemon src/main.ts", + "start:production": "node dist/main.js", + "test:server": "nodemon --watch src --watch test test/main.ts", + "test": "jest", + "test:watch": "jest --watch" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.20.12", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.18.6", + "@types/body-parser": "1.19.5", + "@types/express": "4.17.21", + "@types/jest": "^29.4.0", + "@types/node": "^18.13.0", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^5.51.0", + "babel-jest": "^29.4.2", + "body-parser": "1.20.2", + "dotenv": "^16.0.3", + "eslint": "^8.33.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-prettier": "4.0.0", + "eslint-plugin-simple-import-sort": "7.0.0", + "eslint-plugin-sort-keys-fix": "1.1.2", + "eslint-plugin-unused-imports": "2.0.0", + "express": "4.19.2", + "jest": "^29.4.2", + "nodemon": "^2.0.20", + "prettier": "^2.8.3", + "prettier-plugin-organize-imports": "^3.2.2", + "rimraf": "^4.1.2", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "yargs": "^17.6.2" + }, + "dependencies": { + "@devrev/typescript-sdk": "1.1.28", + "@slack/web-api": "7.3.1", + "protobufjs": "7.3.0" + } +} diff --git a/anz-demo-operations/code/src/fixtures/on_work_created_event.json b/anz-demo-operations/code/src/fixtures/on_work_created_event.json new file mode 100644 index 0000000..b66c880 --- /dev/null +++ b/anz-demo-operations/code/src/fixtures/on_work_created_event.json @@ -0,0 +1,81 @@ +{ + "events": [ + { + "payload": { + "id": "don:integration:dvrv-us-1:devo/XXXXXX:webhook/mpLkC87l:webhook_event/A47zYgvZGDM", + "timestamp": "2023-04-03T14:15:08.101098Z", + "type": "work_created", + "unique_key": "ZG9uOmludGVncmF0aW9uOmR2cnYtdXMtMTpkZXZvLzFGR2lCenJhNjpldmVudF9zb3VyY2UvYzMzMDI2Y2UtOTM5Yy00ZWEzLThjYzctOTI4M2M0NWI3ZjRk", + "webhook_id": "don:integration:dvrv-us-1:devo/XXXXXX:webhook/mpLkC87l", + "work_created": { + "work": { + "applies_to_part": { + "display_id": "ENH-9", + "id": "don:core:dvrv-us-1:devo/XXXXXX:enhancement/9", + "id_v1": "don:DEV-XXXXXX:enhancement: 9", + "name": "test-enhancement", + "type": "enhancement" + }, + "created_by": { + "display_handle": "Sample Name", + "display_id": "DEVU-5", + "display_name": "Sample Name", + "email": "i-Demo1.Demo2@domain.com", + "full_name": "Sample Name", + "id": "don:identity:dvrv-us-1:devo/XXXXXX:devu/5", + "id_v1": "don:DEV-XXXXXX:dev_user:DEVU-5", + "state": "active", + "type": "dev_user" + }, + "created_date": "2023-04-03T14: 14: 30.336Z", + "custom_fields": null, + "display_id": "TKT-122", + "id": "don:core:dvrv-us-1:devo/XXXXXX:ticket/122", + "id_v1": "don:DEV-XXXXXX:ticket: 122", + "owned_by": [ + { + "display_handle": "Sample Name", + "display_id": "DEVU-5", + "display_name": "Sample Name", + "email": "i-Demo1.Demo2@domain.com", + "full_name": "Sample Name", + "id": "don:identity:dvrv-us-1:devo/XXXXXX:devu/5", + "id_v1": "don:DEV-XXXXXX:dev_user:DEVU-5", + "state": "active", + "type": "dev_user" + } + ], + "severity": "medium", + "stage": { + "name": "queued", + "ordinal": 700 + }, + "state": "open", + "stock_schema_fragment": "don:core:dvrv-us-1:stock_sf/297430", + "title": "test-ticket", + "type": "ticket" + } + } + }, + "context": { + "dev_oid": "don:identity:dvrv-us-1:devo/XXXXXX", + "automation_id": "don:integration:dvrv-us-1:devo/XXXXXX:automation/be9f0869-77a4-4210-9f84-47409e67c781", + "source_id": "don:integration:dvrv-us-1:devo/XXXXXX:automation/be9f0869-77a4-4210-9f84-47409e67c781", + "snap_in_id": "don:integration:dvrv-us-1:devo/XXXXXX:snap_in/641c009b-0476-40ef-b728-f3ce6fb77bb9", + "snap_in_version_id": "don:integration:dvrv-us-1:devo/XXXXXX:snap_in_package/fd20d23b-372c-48ad-ac24-d13c271c63d6:snap_in_version/d506f96a-131f-451c-87d6-e73605fac8df", + "secrets": { + "service_account_token": "TEST-TOKEN" + } + }, + "input_data": { + "keyrings": { + "devrev": "TEST-TOKEN" + } + }, + "execution_metadata": { + "devrev_endpoint": "https://api.devrev.ai", + "function_name": "on_work_creation" + } + } + ] +} \ No newline at end of file diff --git a/anz-demo-operations/code/src/function-factory.ts b/anz-demo-operations/code/src/function-factory.ts new file mode 100644 index 0000000..827bfa9 --- /dev/null +++ b/anz-demo-operations/code/src/function-factory.ts @@ -0,0 +1,8 @@ +import operation_handler from './functions/operation_handler'; + +export const functionFactory = { + // Add your functions here + operation_handler, +} as const; + +export type FunctionFactoryType = keyof typeof functionFactory; diff --git a/anz-demo-operations/code/src/functions/operation_handler/get_bank_feed.ts b/anz-demo-operations/code/src/functions/operation_handler/get_bank_feed.ts new file mode 100644 index 0000000..a54cdb8 --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/get_bank_feed.ts @@ -0,0 +1,72 @@ +import { + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function getCallAPI(endpoint: string) { + try { + const res = await axios.get(endpoint, { + headers: { + 'Content-type': 'application/json', + }, + }); + const data = res.data; + console.log(data); + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface GetBankFeedInput { + bank_feed_id: string; +} + +export class GetBankFeed extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as GetBankFeedInput; + let bank_feed_id = input_data.bank_feed_id; + const endpoint = 'https://devrev-demo.proxy.beeceptor.com/account/feeds'; + + if (!bank_feed_id) { + bank_feed_id = 'westpac'; + } + + bank_feed_id.replace(' ', '-'); + + try { + const apiResp = await getCallAPI( + `${endpoint}/${bank_feed_id}/status`, + ); + + return OperationOutput.fromJSON({ + summary: `${apiResp.data.name} feed - status: ${apiResp.data.status}, last synced: ${apiResp.data.last_synced}, disruptions: ${apiResp.data.disruptions}`, + output: { + values: [{ + name: apiResp.data.name, + status: apiResp.data.status, + last_synced: apiResp.data.last_synced, + disruptions: apiResp.data.disruptions, + }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/anz-demo-operations/code/src/functions/operation_handler/get_bank_feed_transactions.ts b/anz-demo-operations/code/src/functions/operation_handler/get_bank_feed_transactions.ts new file mode 100644 index 0000000..a385b58 --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/get_bank_feed_transactions.ts @@ -0,0 +1,72 @@ +import { + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function getCallAPI(endpoint: string) { + try { + const res = await axios.get(endpoint, { + headers: { + 'Content-type': 'application/json', + }, + }); + const data = res.data; + console.log(data); + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface GetBankFeedTransactionsInput { + bank_feed_id: string; +} + +export class GetBankFeedTransactions extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as GetBankFeedTransactionsInput; + let bank_feed_id = input_data.bank_feed_id; + const endpoint = 'https://devrev-demo.proxy.beeceptor.com/account/feeds'; + + if (!bank_feed_id) { + bank_feed_id = 'westpac'; + } + + bank_feed_id.replace(' ', '-'); + + try { + const apiResp = await getCallAPI( + `${endpoint}/${bank_feed_id}/transactions`, + ); + + const transactions = JSON.stringify(apiResp.data.transactions); + + return OperationOutput.fromJSON({ + summary: `${apiResp.data.name} transactions - ${transactions}`, + output: { + values: [{ + name: apiResp.data.name, + transactions: transactions, + }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/anz-demo-operations/code/src/functions/operation_handler/get_current_time.ts b/anz-demo-operations/code/src/functions/operation_handler/get_current_time.ts new file mode 100644 index 0000000..bb7f367 --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/get_current_time.ts @@ -0,0 +1,32 @@ +import { client } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +interface GetCurrentTimeInput { + query: string; +} + +export class GetCurrentTime extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const currentTime = new Date().toISOString(); + + return OperationOutput.fromJSON({ + summary: `Current time: ${currentTime}`, + output: { + values: [{ current_time: currentTime }], + } as OutputValue, + }); + } +} diff --git a/anz-demo-operations/code/src/functions/operation_handler/get_temperature.ts b/anz-demo-operations/code/src/functions/operation_handler/get_temperature.ts new file mode 100644 index 0000000..475798d --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/get_temperature.ts @@ -0,0 +1,60 @@ +import { client, publicSDK } from '@devrev/typescript-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +interface GetTemperatureInput { + city: string; +} + +export class GetTemperature extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + // This is optional and can be used to provide any extra context required. + override GetContext(): OperationContext { + let baseMetadata = super.GetContext(); + const temperatures: Record<string, number> = { + 'New York': 72, + 'San Francisco': 65, + Seattle: 55, + 'Los Angeles': 80, + Chicago: 70, + Houston: 90, + }; + + return { + ...baseMetadata, + metadata: temperatures, + }; + } + + async run(_context: OperationContext, input: ExecuteOperationInput, _resources: any): Promise<OperationOutput> { + const input_data = input.data as GetTemperatureInput; + + const temperature = _context.metadata ? _context.metadata[input_data.city] : null; + + let err: OperationError | undefined = undefined; + if (!temperature) { + err = { + message: 'City not found', + type: Error_Type.InvalidRequest, + }; + } + const temp = { + error: err, + output: { + values: [{ "temperature": temperature }], + } as OutputValue, + } + return OperationOutput.fromJSON(temp); + } +} diff --git a/anz-demo-operations/code/src/functions/operation_handler/index.ts b/anz-demo-operations/code/src/functions/operation_handler/index.ts new file mode 100644 index 0000000..6f4376c --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/index.ts @@ -0,0 +1,41 @@ +import { OperationFactory } from '../../operations'; +import { ExecuteOperationInput,FunctionInput, OperationMap } from '@devrev/typescript-sdk/dist/snap-ins'; + +// Operations +import { GetTemperature } from './get_temperature'; +import { GetBankFeed } from './get_bank_feed'; +import { GetBankFeedTransactions } from './get_bank_feed_transactions'; +import { ListBankFeeds } from './list_bank_feeds'; +import { RefreshBankFeed } from './refresh_bank_feed'; +import { ListBankDisruptions } from './list_bank_disruptions'; +import { GetCurrentTime } from './get_current_time'; + +/** + * Map of operations with the slug mentioned in the manifest. + * The key is the slug of the operation mentioned in the manifest and value is the operation class. + */ +const operationMap: OperationMap = { + get_temperature: GetTemperature, + get_bank_feed: GetBankFeed, + get_bank_feed_transactions: GetBankFeedTransactions, + list_bank_feeds: ListBankFeeds, + refresh_bank_feed: RefreshBankFeed, + list_bank_disruptions: ListBankDisruptions, + get_current_time: GetCurrentTime, +}; + +export const run = async (events: FunctionInput[]) => { + const event = events[0]; + const payload = event.payload as ExecuteOperationInput + console.log("Event: ", event); + const operationSlug = payload.metadata!.slug; + const operationNamespace = payload.metadata!.namespace; + console.log('running operation: ', operationSlug, ' in namespace: ', operationNamespace); + const operationFactory = new OperationFactory(operationMap); + const operation = operationFactory.getOperation(operationSlug, event); + const ctx = operation.GetContext(event); + const resources = event.input_data.resources||{}; + return await operation.run(ctx, payload, resources); +}; + +export default run; diff --git a/anz-demo-operations/code/src/functions/operation_handler/list_bank_disruptions.ts b/anz-demo-operations/code/src/functions/operation_handler/list_bank_disruptions.ts new file mode 100644 index 0000000..d944486 --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/list_bank_disruptions.ts @@ -0,0 +1,68 @@ +import { + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function getCallAPI(endpoint: string) { + try { + const res = await axios.get(endpoint, { + headers: { + 'Content-type': 'application/json', + }, + }); + const data = res.data; + console.log(data); + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface ListBankDisruptionsInput { + active: boolean; +} + +export class ListBankDisruptions extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as ListBankDisruptionsInput; + let active = input_data.active; + if (!active) { + active = true; + } + const endpoint = 'https://devrev-demo.proxy.beeceptor.com/feeds'; + + try { + const apiResp = await getCallAPI( + `${endpoint}/status`, + ); + + const feeds = JSON.stringify(apiResp.data.feeds); + + return OperationOutput.fromJSON({ + summary: `List of bank disruptions - ${feeds}`, + output: { + values: [{ + bank_statuses: feeds, + }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts b/anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts new file mode 100644 index 0000000..8e8fe1f --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts @@ -0,0 +1,74 @@ +import { + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; +import { type } from 'os'; + +export async function getCallAPI(endpoint: string) { + try { + const res = await axios.get(endpoint, { + headers: { + 'Content-type': 'application/json', + }, + }); + const data = res.data; + console.log(data); + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface ListBankFeedsInput { + active: boolean; +} + +export class ListBankFeeds extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as ListBankFeedsInput; + let active = input_data.active; + if (!active) { + active = true; + } + const endpoint = 'https://devrev-demo.proxy.beeceptor.com/account/feeds/list'; + + try { + const apiResp = await getCallAPI( + `${endpoint}`, + ); + console.log(typeof apiResp.data) + console.log(apiResp.data.feeds) + let feeds = apiResp.data; + if (typeof apiResp.data !== 'string') { + feeds = JSON.stringify(apiResp.data); + } + console.log(feeds) + + return OperationOutput.fromJSON({ + summary: `List of bank feeds - ${feeds}`, + output: { + values: [{ + feeds: feeds, + }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/anz-demo-operations/code/src/functions/operation_handler/refresh_bank_feed.ts b/anz-demo-operations/code/src/functions/operation_handler/refresh_bank_feed.ts new file mode 100644 index 0000000..ac0c7fa --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/refresh_bank_feed.ts @@ -0,0 +1,71 @@ +import { + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function getCallAPI(endpoint: string) { + try { + const res = await axios.get(endpoint, { + headers: { + 'Content-type': 'application/json', + }, + }); + const data = res.data; + console.log(data); + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface RefreshBankFeedInput { + bank_feed_id: string; +} + +export class RefreshBankFeed extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as RefreshBankFeedInput; + let bank_feed_id = input_data.bank_feed_id; + const endpoint = 'https://devrev-demo.proxy.beeceptor.com/account/feeds'; + + if (!bank_feed_id) { + bank_feed_id = 'westpac'; + } + + bank_feed_id.replace(' ', '-'); + + try { + const apiResp = await getCallAPI( + `${endpoint}/${bank_feed_id}/refresh`, + ); + + return OperationOutput.fromJSON({ + summary: `${apiResp.data.message}`, + output: { + values: [{ + name: apiResp.data.name, + status: apiResp.data.status, + message: apiResp.data.message, + }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ error: err }); + } + } +} diff --git a/anz-demo-operations/code/src/index.ts b/anz-demo-operations/code/src/index.ts new file mode 100644 index 0000000..5254e38 --- /dev/null +++ b/anz-demo-operations/code/src/index.ts @@ -0,0 +1 @@ +export * from './function-factory'; diff --git a/anz-demo-operations/code/src/main.ts b/anz-demo-operations/code/src/main.ts new file mode 100644 index 0000000..2bb6a36 --- /dev/null +++ b/anz-demo-operations/code/src/main.ts @@ -0,0 +1,27 @@ +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +import { FunctionFactoryType } from './function-factory'; +import { testRunner } from './test-runner/test-runner'; + +(async () => { + const argv = await yargs(hideBin(process.argv)).options({ + fixturePath: { + require: true, + type: 'string', + }, + functionName: { + require: true, + type: 'string', + }, + }).argv; + + if (!argv.fixturePath || !argv.functionName) { + console.error('Please make sure you have passed fixturePath & functionName'); + } + + await testRunner({ + fixturePath: argv.fixturePath, + functionName: argv.functionName as FunctionFactoryType, + }); +})(); diff --git a/anz-demo-operations/code/src/operations/index.ts b/anz-demo-operations/code/src/operations/index.ts new file mode 100644 index 0000000..3db0e21 --- /dev/null +++ b/anz-demo-operations/code/src/operations/index.ts @@ -0,0 +1,26 @@ +import { OperationMap,OperationIfc, FunctionInput } from '@devrev/typescript-sdk/dist/snap-ins'; + +/** + * OperationFactory is a factory class that creates a map of operations with the slug mentioned + * in the manifest. + */ +export class OperationFactory { + operationMap: OperationMap; + + constructor(operationMap?: OperationMap) { + this.operationMap = operationMap || {}; + } + +/** + * @param slug The slug of the operation mentioned in the manifest + * @param event Event object that is passed to the snap-in + * @returns Operation + */ + public getOperation(slug: string, event: FunctionInput): OperationIfc { + if (!this.operationMap[slug]) { + throw new Error(`Operation with slug ${slug} not found`); + } + return new this.operationMap[slug](event); + } +} + diff --git a/anz-demo-operations/code/src/test-runner/test-runner.ts b/anz-demo-operations/code/src/test-runner/test-runner.ts new file mode 100644 index 0000000..15c7222 --- /dev/null +++ b/anz-demo-operations/code/src/test-runner/test-runner.ts @@ -0,0 +1,27 @@ +import * as dotenv from 'dotenv'; + +import { functionFactory, FunctionFactoryType } from '../function-factory'; + +export interface TestRunnerProps { + functionName: FunctionFactoryType; + fixturePath: string; +} + +export const testRunner = async ({ functionName, fixturePath }: TestRunnerProps) => { + //Since we were not using the env anywhere its not require to load it + dotenv.config(); + + if (!functionFactory[functionName]) { + console.error(`${functionName} is not found in the functionFactory`); + console.error('Add your function to the function-factory.ts file'); + throw new Error('Function is not found in the functionFactory'); + } + + //Since the import is loaded dynamically, we need to use require + const run = functionFactory[functionName]; + + // eslint-disable-next-line @typescript-eslint/no-var-requires + const eventFixture = require(`../fixtures/${fixturePath}`); + + await run(eventFixture); +}; diff --git a/anz-demo-operations/code/test/http_client.ts b/anz-demo-operations/code/test/http_client.ts new file mode 100644 index 0000000..0e222f8 --- /dev/null +++ b/anz-demo-operations/code/test/http_client.ts @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; + +interface SetupOptions { + endpoint: string; + token?: string; +} + +export interface HttpRequest { + headers?: any; + path: string; + body: unknown; +} + +export class HTTPClient { + public instance: AxiosInstance; + + constructor({ endpoint, token }: SetupOptions) { + const axiosConfig: AxiosRequestConfig = { + baseURL: endpoint, + headers: { + Authorization: token, + }, + }; + + this.instance = axios.create({ + ...axiosConfig, + }); + } + + async post<T>({ headers, path, body }: HttpRequest): Promise<AxiosResponse<T>> { + return this.instance.request({ + method: 'POST', + headers: headers, + data: body, + url: path, + }); + } +} diff --git a/anz-demo-operations/code/test/main.ts b/anz-demo-operations/code/test/main.ts new file mode 100644 index 0000000..8ff9ef3 --- /dev/null +++ b/anz-demo-operations/code/test/main.ts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; +import { startServer } from './runner'; + +(async () => { + const argv = await yargs(hideBin(process.argv)).options({ + port: { + require: false, + type: 'number', + }, + }).argv; + + const port = argv.port || 8000; + startServer(port); +})(); diff --git a/anz-demo-operations/code/test/runner.ts b/anz-demo-operations/code/test/runner.ts new file mode 100644 index 0000000..c0fa89d --- /dev/null +++ b/anz-demo-operations/code/test/runner.ts @@ -0,0 +1,294 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +import bodyParser from 'body-parser'; +import express, { Express, Handler, Request, Response } from 'express'; + +import process from 'process'; +import { functionFactory, FunctionFactoryType } from '../src/function-factory'; +import { HTTPClient, HttpRequest } from './http_client'; +import { + ActivateHookResult, + DeactivateHookResult, + ExecutionResult, + FunctionError, + HandlerError, + RuntimeError, + RuntimeErrorType, + SnapInsSystemUpdateRequest, + SnapInsSystemUpdateRequestInactive, + SnapInsSystemUpdateRequestStatus, + SnapInsSystemUpdateResponse, +} from './types'; + + +import { + Context as SnapInContext, + ExecuteOperationResult, + ExecuteOperationResult_SerializationFormat, + ExecutionMetadata, + FunctionExecutionError, + FunctionInput, + OperationOutput, +} from '@devrev/typescript-sdk/dist/snap-ins'; + +const app: Express = express(); +app.use(bodyParser.json(), bodyParser.urlencoded({ extended: false })); + +export const startServer = (port: number) => { + app.listen(port, () => { + console.log(`[server]: Server is running at http://localhost:${port}`); + }); +}; + +// handle async requests +app.post('/handle/async', async (req: Request, resp: Response) => { + const events = req.body; + if (events === undefined) { + resp.status(400).send('Invalid request format: body is undefined'); + return; + } + + await handleEvent(events, true /* isAsync */, resp); +}); + +app.post('/handle/sync', async (req: Request, resp: Response) => { + if (req.body === undefined) { + resp.status(400).send('Invalid request format: body is undefined'); + return; + } + // for sync invokation, wrap in an array + const events: any[] = [req.body]; + await handleEvent(events, false /* isAsync */, resp); +}); + +async function run(f: any, event: any): Promise<any> { + let result = await f(event); + return result; +} + +async function handleEvent(events: any[], isAsync: boolean, resp: Response) { + let error; + let results: ExecutionResult[] = []; + let receivedError = false; + + if (!Array.isArray(events)) { + let errMsg = 'Invalid request format: body is not an array'; + error = { + err_type: RuntimeErrorType.InvalidRequest, + err_msg: errMsg, + } as RuntimeError; + console.error(error.err_msg); + resp.status(400).send(errMsg); + return; + } + // if the request is synchronous, there should be a single event + if (!isAsync) { + if (events.length > 1) { + let errMsg = 'Invalid request format: multiple events provided for synchronous request'; + error = { + err_type: RuntimeErrorType.InvalidRequest, + err_msg: errMsg, + } as RuntimeError; + console.error(error.err_msg); + resp.status(400).send(errMsg); + return; + } + } else { + // return a success response back to the server + resp.status(200).send(); + } + + for (let event of events) { + let result; + const functionName: FunctionFactoryType = event.execution_metadata.function_name as FunctionFactoryType; + if (functionName === undefined) { + error = { + err_type: RuntimeErrorType.FunctionNameNotProvided, + err_msg: 'Function name not provided in event', + } as RuntimeError; + console.error(error.err_msg); + receivedError = true; + } else { + const f = functionFactory[functionName]; + try { + if (f == undefined) { + error = { + err_type: RuntimeErrorType.FunctionNotFound, + err_msg: `Function ${event.execution_metadata.function_name} not found in factory`, + } as RuntimeError; + console.error(error.err_msg); + receivedError = true; + } else { + result = await run(f, [event]); + } + } catch (e) { + error = { error: e } as FunctionError; + console.error(e); + } + + // Any common post processing goes here. The function returns + // only if the function execution was by an operation + } + const opResult = await postRun(event,error, result); + + // Return result. + let res: ExecutionResult = {}; + + if (opResult !== undefined) { + res.function_result = opResult; + } else if (result !== undefined) { + res.function_result = result; + } + + if (error !== undefined) { + res.error = error; + } + results.push(res); + } + + if (!isAsync) { + resp.status(200).send(results[0]); + } +} + +// post processing +async function postRun(event: any, handlerError: HandlerError, result: any){ + console.debug('Function execution complete'); + // Check if the function was invoked by an operation. + if (isInvokedFromOperation(event)) { + // handle operation specific logic + console.debug('Function was invoked by an operation'); + const data: Uint8Array = OperationOutput.encode(result).finish(); + + return { + serialization_format: ExecuteOperationResult_SerializationFormat.Proto, + data: Buffer.from(data).toString('base64'), + } as ExecuteOperationResult; + } + if (isActivateHook(event)) { + handleActivateHookResult(event,handlerError, result); + } else if (isDeactivateHook(event)) { + handleDeactivateHookResult(event,handlerError, result); + } + return undefined +} + +function isActivateHook(event: any): boolean { + return event.execution_metadata.event_type === 'hook:snap_in_activate'; +} + +function isDeactivateHook(event: any): boolean { + return event.execution_metadata.event_type === 'hook:snap_in_deactivate'; +} + +function isInvokedFromOperation(event: any): boolean { + return event.execution_metadata.operation_slug !== undefined; +} + +function handleActivateHookResult(event: any, handlerError: HandlerError, result: any) { + let update_req: SnapInsSystemUpdateRequest = { + id: event.context.snap_in_id, + status: SnapInsSystemUpdateRequestStatus.Active, + }; + let res = getActivateHookResult(result); + update_req.inputs_values = res.inputs_values; + + if (handlerError !== undefined || res?.status === 'error') { + console.debug('Setting snap-in status to error'); + update_req.status = SnapInsSystemUpdateRequestStatus.Error; + } + + return updateSnapInState(event, update_req); +} + +function handleDeactivateHookResult(event: any, handlerError: HandlerError, result: any) { + let update_req: SnapInsSystemUpdateRequest = { + id: event.context.snap_in_id, + status: SnapInsSystemUpdateRequestStatus.Inactive, + }; + let res = getDeactivateHookResult(result); + update_req.inputs_values = res.inputs_values; + if (event.payload.force_deactivate) { + console.debug('Snap-in is being force deactivated, errors ignored'); + } + if ((handlerError !== undefined || res?.status === 'error') && !event.payload.force_deactivate) { + console.debug('Setting snap-in status to error'); + update_req.status = SnapInsSystemUpdateRequestStatus.Error; + } else { + if (event.payload.is_deletion) { + console.debug('Marking snap-in to be deleted'); + (update_req as SnapInsSystemUpdateRequestInactive).is_deletion = true; + } else { + console.debug('Setting snap-in status to inactive'); + } + } + + return updateSnapInState(event, update_req); +} + +// Update the snap-in status based on hook result. +async function updateSnapInState(event: any, update_req: SnapInsSystemUpdateRequest) { + console.debug('Updating snap-in state after running async hook'); + const { secrets } = event.context; + const client = new HTTPClient({ + endpoint: event.execution_metadata.devrev_endpoint, + token: secrets?.service_account_token, + }); + + const request: HttpRequest = { + path: '/internal/snap-ins.system-update', + body: update_req, + }; + + try { + await client.post<SnapInsSystemUpdateResponse>(request); + } catch (e) { + console.error(e); + } +} + +function getActivateHookResult(input: any): ActivateHookResult { + let res = {} as ActivateHookResult; + if (input instanceof Object) { + if (input.status === 'active' || input.status === 'error') { + res.status = input.status; + } else if (input.status !== undefined) { + console.error(`Invalid status field ${input.status}: status must be active or error`); + } + if (input.inputs_values instanceof Object) { + res.inputs_values = input.inputs_values; + } else if (input.inputs_values !== undefined) { + console.error(`Invalid inputs_values field ${input.inputs_values}: inputs_values is not an object`); + } + } + return res; +} + +function getDeactivateHookResult(input: any): DeactivateHookResult { + let res = {} as DeactivateHookResult; + if (input instanceof Object) { + if (input.status === 'inactive' || input.status === 'error') { + res.status = input.status; + } else if (input.status !== undefined) { + console.error(`Invalid status field ${input.status}: status must be inactive or error`); + } + if (input.inputs_values instanceof Object) { + res.inputs_values = input.inputs_values; + } else if (input.inputs_values !== undefined) { + console.error(`Invalid inputs_values field ${input.inputs_values}: inputs_values is not an object`); + } + } + return res; +} diff --git a/anz-demo-operations/code/test/types.ts b/anz-demo-operations/code/test/types.ts new file mode 100644 index 0000000..6199093 --- /dev/null +++ b/anz-demo-operations/code/test/types.ts @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2024 DevRev Inc. All rights reserved. + +Disclaimer: +The code provided herein is intended solely for testing purposes. +Under no circumstances should it be utilized in a production environment. Use of +this code in live systems, production environments, or any situation where +reliability and stability are critical is strongly discouraged. The code is +provided as-is, without any warranties or guarantees of any kind, and the user +assumes all risks associated with its use. It is the responsibility of the user +to ensure that proper testing and validation procedures are carried out before +deploying any code into production environments. +*/ + +/* + Error Types +*/ + +export enum RuntimeErrorType { + FunctionNotFound = 'FUNCTION_NOT_FOUND', + FunctionNameNotProvided = 'FUNCTION_NAME_NOT_PROVIDED', + InvalidRequest = 'INVALID_REQUEST', +} + +export type FunctionError = { + error: unknown; +}; + +export type RuntimeError = { + err_type: RuntimeErrorType; + err_msg: string; +}; + +/* + Snap-in types +*/ + +/** snap-ins-system-update-request */ +export type SnapInsSystemUpdateRequest = ( + | SnapInsSystemUpdateRequestActive + | SnapInsSystemUpdateRequestError + | SnapInsSystemUpdateRequestInactive +) & { + /** The ID of the snap-in to update. */ + id: string; + /** Values of the inputs. */ + inputs_values?: object; + status: SnapInsSystemUpdateRequestStatus; +}; + +/* snap-ins-system-update-request-active */ +export type SnapInsSystemUpdateRequestActive = object; + +/* snap-ins-system-update-request-error */ +export type SnapInsSystemUpdateRequestError = object; + +/* snap-ins-system-update-request-inactive */ +export interface SnapInsSystemUpdateRequestInactive { + /** Parameter to proceed with deletion of snap-in. */ + is_deletion?: boolean; +} + +export enum SnapInsSystemUpdateRequestStatus { + Active = 'active', + Error = 'error', + Inactive = 'inactive', +} + +/* snap-ins-system-update-response */ +export type SnapInsSystemUpdateResponse = object; + +export type HandlerError = FunctionError | RuntimeError | undefined; + +export type ExecutionResult = { + function_result?: any; + error?: HandlerError; +}; + +export type ActivateHookResult = { + status: 'active' | 'error'; + inputs_values?: Record<string, any>; +}; + +export type DeactivateHookResult = { + status: 'inactive' | 'error'; + inputs_values?: Record<string, any>; +}; diff --git a/anz-demo-operations/code/tsconfig.eslint.json b/anz-demo-operations/code/tsconfig.eslint.json new file mode 100644 index 0000000..c8722d7 --- /dev/null +++ b/anz-demo-operations/code/tsconfig.eslint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["./**/*.ts", "./**/*.js", "./.*.js"] +} diff --git a/anz-demo-operations/code/tsconfig.json b/anz-demo-operations/code/tsconfig.json new file mode 100644 index 0000000..92f5866 --- /dev/null +++ b/anz-demo-operations/code/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "baseUrl": "./", + "paths": { + "*": ["./src/*"] + }, + "outDir": "./dist", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "declaration": true, + "allowJs": true, + "allowSyntheticDefaultImports": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src", "test"], + "exclude": ["node_modules", "dist", "test"] +} diff --git a/anz-demo-operations/manifest.yaml b/anz-demo-operations/manifest.yaml new file mode 100644 index 0000000..e1fbb6b --- /dev/null +++ b/anz-demo-operations/manifest.yaml @@ -0,0 +1,154 @@ +version: "2" +name: "ANZ Demo Operations" +description: "Operation for ANZ Demo" + +service_account: + display_name: Xero Bot + +functions: + - name: operation_handler + description: function to handle operations + +operations: + - name: list_bank_feeds + display_name: List Bank Feeds + description: Operation to list bank feeds + slug: list_bank_feeds + function: operation_handler + type: action + inputs: + fields: + - name: active + field_type: bool + is_required: true + ui: + display_name: Active + outputs: + fields: + - name: feeds + field_type: text + ui: + display_name: Feeds + + - name: get_bank_feed + display_name: Get Bank Feed + description: Operation to get details of a bank feed + slug: get_bank_feed + function: operation_handler + type: action + inputs: + fields: + - name: bank_feed_id + field_type: text + is_required: true + ui: + display_name: Bank Feed Id + outputs: + fields: + - name: name + field_type: text + ui: + display_name: Name + - name: status + field_type: text + ui: + display_name: Status + - name: last_synced + field_type: text + ui: + display_name: Last Synced + - name: disruptions + field_type: bool + ui: + display_name: Disruptions + + - name: get_current_time + display_name: Get Current Time + description: Operation to get the current time + slug: get_current_time + function: operation_handler + type: action + inputs: + fields: + - name: query + field_type: text + is_required: true + ui: + display_name: Query + outputs: + fields: + - name: current_time + field_type: text + ui: + display_name: Current Time + + - name: get_bank_feed_transactions + display_name: Get Bank Feed Transactions + description: Operation to get transactions of a bank feed + slug: get_bank_feed_transactions + function: operation_handler + type: action + inputs: + fields: + - name: bank_feed_id + field_type: text + is_required: true + ui: + display_name: Bank Feed Id + outputs: + fields: + - name: name + field_type: text + ui: + display_name: Name + - name: transactions + field_type: text + ui: + display_name: Transactions + + - name: refresh_bank_feed + display_name: Refresh Bank Feed + description: Operation to refresh a bank feed + slug: refresh_bank_feed + function: operation_handler + type: action + inputs: + fields: + - name: bank_feed_id + field_type: text + is_required: true + ui: + display_name: Bank Feed Id + outputs: + fields: + - name: name + field_type: text + ui: + display_name: Name + - name: status + field_type: text + ui: + display_name: Status + - name: message + field_type: text + ui: + display_name: Message + + - name: list_bank_disruptions + description: Operation to list bank disruptions + slug: list_bank_disruptions + function: operation_handler + type: action + inputs: + fields: + - name: active + field_type: bool + is_required: true + ui: + display_name: Active + outputs: + fields: + - name: bank_statuses + field_type: text + ui: + display_name: Bank Statuses diff --git a/anz-demo-operations/package-lock.json b/anz-demo-operations/package-lock.json new file mode 100644 index 0000000..22b3d43 --- /dev/null +++ b/anz-demo-operations/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "insights-agent", + "lockfileVersion": 2, + "requires": true, + "packages": {} +} From 980b38a4457babf9c1726100637c730f0dc21132 Mon Sep 17 00:00:00 2001 From: tinkering-bhatia <taarush.bhatia@devrev.ai> Date: Fri, 18 Oct 2024 02:05:24 +0530 Subject: [PATCH 09/11] remove logs --- .../code/src/functions/operation_handler/list_bank_feeds.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts b/anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts index 8e8fe1f..0b04c7f 100644 --- a/anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts +++ b/anz-demo-operations/code/src/functions/operation_handler/list_bank_feeds.ts @@ -51,13 +51,10 @@ export class ListBankFeeds extends OperationBase { const apiResp = await getCallAPI( `${endpoint}`, ); - console.log(typeof apiResp.data) - console.log(apiResp.data.feeds) let feeds = apiResp.data; if (typeof apiResp.data !== 'string') { feeds = JSON.stringify(apiResp.data); } - console.log(feeds) return OperationOutput.fromJSON({ summary: `List of bank feeds - ${feeds}`, From d80160fb92a580abad94284fbc39cf40e099ac69 Mon Sep 17 00:00:00 2001 From: tinkering-bhatia <taarush.bhatia@devrev.ai> Date: Fri, 18 Oct 2024 15:34:27 +0530 Subject: [PATCH 10/11] Added linking custom op --- anz-demo-operations/code/package-lock.json | 8 +- anz-demo-operations/code/package.json | 2 +- .../src/functions/operation_handler/index.ts | 3 + .../link_ticket_to_conversation.ts | 185 +++++++++++ anz-demo-operations/manifest.yaml | 286 ++++++++++-------- 5 files changed, 356 insertions(+), 128 deletions(-) create mode 100644 anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts diff --git a/anz-demo-operations/code/package-lock.json b/anz-demo-operations/code/package-lock.json index f7b0f92..45eabda 100644 --- a/anz-demo-operations/code/package-lock.json +++ b/anz-demo-operations/code/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@devrev/typescript-sdk": "1.1.28", + "@devrev/typescript-sdk": "1.1.32", "@slack/web-api": "7.3.1", "protobufjs": "7.3.0" }, @@ -1838,9 +1838,9 @@ } }, "node_modules/@devrev/typescript-sdk": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/@devrev/typescript-sdk/-/typescript-sdk-1.1.28.tgz", - "integrity": "sha512-MgdM8c7uWsTDpSN5MuiAwHeZGqcc7V99mZyCbNxNMoyle35kVgKgUersMPG5st7mKK5WPcS/Fz0jBZ+Z4hr+Uw==", + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/@devrev/typescript-sdk/-/typescript-sdk-1.1.32.tgz", + "integrity": "sha512-kdheAi2xLM5SR+gf46tnGjCgcFo3s21s6ZtmoW1sVxotjBHOtUFhwqTz4F2SBlfqHQckppdDKekeg/W4yBoJ1A==", "dependencies": { "@types/yargs": "^17.0.22", "axios": "^1.3.6", diff --git a/anz-demo-operations/code/package.json b/anz-demo-operations/code/package.json index 48abbae..42fd10c 100644 --- a/anz-demo-operations/code/package.json +++ b/anz-demo-operations/code/package.json @@ -54,7 +54,7 @@ "yargs": "^17.6.2" }, "dependencies": { - "@devrev/typescript-sdk": "1.1.28", + "@devrev/typescript-sdk": "1.1.32", "@slack/web-api": "7.3.1", "protobufjs": "7.3.0" } diff --git a/anz-demo-operations/code/src/functions/operation_handler/index.ts b/anz-demo-operations/code/src/functions/operation_handler/index.ts index 6f4376c..e3ebbdf 100644 --- a/anz-demo-operations/code/src/functions/operation_handler/index.ts +++ b/anz-demo-operations/code/src/functions/operation_handler/index.ts @@ -9,6 +9,8 @@ import { ListBankFeeds } from './list_bank_feeds'; import { RefreshBankFeed } from './refresh_bank_feed'; import { ListBankDisruptions } from './list_bank_disruptions'; import { GetCurrentTime } from './get_current_time'; +import { LinkTicketToConversation } from './link_ticket_to_conversation'; +import { link } from 'fs'; /** * Map of operations with the slug mentioned in the manifest. @@ -22,6 +24,7 @@ const operationMap: OperationMap = { refresh_bank_feed: RefreshBankFeed, list_bank_disruptions: ListBankDisruptions, get_current_time: GetCurrentTime, + link_ticket_to_conversation: LinkTicketToConversation, }; export const run = async (events: FunctionInput[]) => { diff --git a/anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts b/anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts new file mode 100644 index 0000000..458802a --- /dev/null +++ b/anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts @@ -0,0 +1,185 @@ +import { client } from '@devrev/typescript-sdk'; +import { LinksCreateRequest, LinkType, LinksCreateResponse, UserSummary, UserType, RevUserSummary, WorksUpdateRequestReportedBy } from '@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk'; +import { + Error as OperationError, + Error_Type, + ExecuteOperationInput, + FunctionInput, + OperationBase, + OperationContext, + OperationOutput, + OutputValue, +} from '@devrev/typescript-sdk/dist/snap-ins'; +import axios from 'axios'; + +export async function postCallAPI(endpoint: string, payload: any, authKey: string) { + try { + const res = await axios.post(endpoint, payload, { + headers: { + Authorization: authKey, + 'Content-type': 'application/json', + }, + }); + const data = res.data; + return { success: true, errMessage: 'Data successfully fetched', data: data }; + } catch (error: any) { + if (error.response) { + return { success: false, errMessage: error.response.data }; + } else if (error.request) { + return { success: false, errMessage: error.request.data }; + } else { + return { success: false, errMessage: error }; + } + } +} + +interface LinkTicketToConversationInput { + ticket_id: string; + agent_session_id: string; +} + +export class LinkTicketToConversation extends OperationBase { + constructor(e: FunctionInput) { + super(e); + } + + async run(context: OperationContext, input: ExecuteOperationInput, resources: any): Promise<OperationOutput> { + const input_data = input.data as LinkTicketToConversationInput; + const endpoint = context.devrev_endpoint; + const token = context.secrets.access_token; + + const devrevSDK = client.setupBeta({ endpoint, token }); + const ticket_id = input_data.ticket_id; + const agent_session_id = input_data.agent_session_id; + + let err: OperationError | undefined = undefined; + if (!ticket_id) { + err = { + message: 'ticket_id not found', + type: Error_Type.InvalidRequest, + }; + } + if (!agent_session_id) { + err = { + message: 'agent_session_id not found', + type: Error_Type.InvalidRequest, + }; + } + + + try { + const aiAgentSessionGetResp = await postCallAPI( + `${endpoint}/internal/ai-agents.sessions.get`, + { id: `${agent_session_id}`}, + token + ); + const session_object = aiAgentSessionGetResp.data.session.session_object; + if (typeof session_object !== 'string') { + return OperationOutput.fromJSON({ + summary: `Could not link ticket to conversation: ${ticket_id}`, + output: { + values: [{ + ticket_id: ticket_id, + session_object: JSON.stringify(session_object), + message: 'Session object is not a string, ticket created but could not link to conversation', + }], + } as OutputValue, + }); + } + if (!session_object.includes("conversation")) { + return OperationOutput.fromJSON({ + summary: `Could not link ticket to conversation: ${ticket_id}`, + output: { + values: [{ + ticket_id: ticket_id, + session_object: JSON.stringify(session_object), + message: 'Session object is not a conversation, ticket created but could not link to conversation', + }], + } as OutputValue, + }); + } + + const conversationResp = await devrevSDK.conversationsGetPost({ id: session_object }); + if (!(conversationResp.status >= 200 && conversationResp.status < 300)) { + return OperationOutput.fromJSON({ + summary: `Could not link ticket to conversation: ${ticket_id}`, + output: { + values: [{ + ticket_id: ticket_id, + session_object: JSON.stringify(session_object), + message: 'Ticket created but could not link to conversation', + }], + } as OutputValue, + }); + } + const members = conversationResp.data.conversation.members; + const revUsers: RevUserSummary[] = members.filter((member: UserSummary) => member.type === UserType.RevUser); + const reported_by = revUsers[0].id; + const rev_org = revUsers[0].rev_org?.id + + const linksCreateReq: LinksCreateRequest = { + link_type: LinkType.IsRelatedTo, + source: session_object, + target: ticket_id, + }; + + const createLinkResp = await devrevSDK.linksCreate(linksCreateReq); + if (!(createLinkResp.status >= 200 && createLinkResp.status < 300)) { + return OperationOutput.fromJSON({ + summary: `Could not link ticket to conversation: ${ticket_id}`, + output: { + values: [{ + ticket_id: ticket_id, + session_object: JSON.stringify(session_object), + message: 'Ticket created but could not link to conversation', + }], + } as OutputValue, + }); + } + + if (rev_org && reported_by) { + const updateTicketResp = await devrevSDK.worksUpdate({ + id: ticket_id, + rev_org, + reported_by: { + set: [reported_by], + } + }); + if (!(updateTicketResp.status >= 200 && updateTicketResp.status < 300)) { + return OperationOutput.fromJSON({ + summary: `Could not link ticket to conversation: ${ticket_id}`, + output: { + values: [{ + ticket_id: ticket_id, + session_object: JSON.stringify(session_object), + message: 'Ticket created and linked to conversation but could not update ticket with customer details', + }], + } as OutputValue, + }); + } + } + + return OperationOutput.fromJSON({ + summary: `Linked ticket to conversation: ${ticket_id}`, + output: { + values: [{ + ticket_id: ticket_id, + session_object: JSON.stringify(session_object), + message: 'Ticket created and linked to conversation, and updated ticket with customer details', + }], + } as OutputValue, + }); + } catch (err) { + return OperationOutput.fromJSON({ + summary: `Could not link ticket to conversation: ${ticket_id}`, + output: { + values: [{ + ticket_id: ticket_id, + session_object: "Not found", + message: 'Ticket created but could not be linked to conversation', + }], + } as OutputValue, + }); + } + } +} diff --git a/anz-demo-operations/manifest.yaml b/anz-demo-operations/manifest.yaml index e1fbb6b..85b22b6 100644 --- a/anz-demo-operations/manifest.yaml +++ b/anz-demo-operations/manifest.yaml @@ -1,5 +1,5 @@ version: "2" -name: "ANZ Demo Operations" +name: "ANZ Demo Link TKT-CONV" description: "Operation for ANZ Demo" service_account: @@ -10,145 +10,185 @@ functions: description: function to handle operations operations: - - name: list_bank_feeds - display_name: List Bank Feeds - description: Operation to list bank feeds - slug: list_bank_feeds - function: operation_handler - type: action - inputs: - fields: - - name: active - field_type: bool - is_required: true - ui: - display_name: Active - outputs: - fields: - - name: feeds - field_type: text - ui: - display_name: Feeds + # - name: list_bank_feeds + # display_name: List Bank Feeds + # description: Operation to list bank feeds + # slug: list_bank_feeds + # function: operation_handler + # type: action + # inputs: + # fields: + # - name: active + # field_type: bool + # is_required: true + # ui: + # display_name: Active + # outputs: + # fields: + # - name: feeds + # field_type: text + # ui: + # display_name: Feeds - - name: get_bank_feed - display_name: Get Bank Feed - description: Operation to get details of a bank feed - slug: get_bank_feed - function: operation_handler - type: action - inputs: - fields: - - name: bank_feed_id - field_type: text - is_required: true - ui: - display_name: Bank Feed Id - outputs: - fields: - - name: name - field_type: text - ui: - display_name: Name - - name: status - field_type: text - ui: - display_name: Status - - name: last_synced - field_type: text - ui: - display_name: Last Synced - - name: disruptions - field_type: bool - ui: - display_name: Disruptions + # - name: get_bank_feed + # display_name: Get Bank Feed + # description: Operation to get details of a bank feed + # slug: get_bank_feed + # function: operation_handler + # type: action + # inputs: + # fields: + # - name: bank_feed_id + # field_type: text + # is_required: true + # ui: + # display_name: Bank Feed Id + # outputs: + # fields: + # - name: name + # field_type: text + # ui: + # display_name: Name + # - name: status + # field_type: text + # ui: + # display_name: Status + # - name: last_synced + # field_type: text + # ui: + # display_name: Last Synced + # - name: disruptions + # field_type: bool + # ui: + # display_name: Disruptions - - name: get_current_time - display_name: Get Current Time - description: Operation to get the current time - slug: get_current_time - function: operation_handler - type: action - inputs: - fields: - - name: query - field_type: text - is_required: true - ui: - display_name: Query - outputs: - fields: - - name: current_time - field_type: text - ui: - display_name: Current Time + # - name: get_current_time + # display_name: Get Current Time + # description: Operation to get the current time + # slug: get_current_time + # function: operation_handler + # type: action + # inputs: + # fields: + # - name: query + # field_type: text + # is_required: true + # ui: + # display_name: Query + # outputs: + # fields: + # - name: current_time + # field_type: text + # ui: + # display_name: Current Time + + # - name: get_bank_feed_transactions + # display_name: Get Bank Feed Transactions + # description: Operation to get transactions of a bank feed + # slug: get_bank_feed_transactions + # function: operation_handler + # type: action + # inputs: + # fields: + # - name: bank_feed_id + # field_type: text + # is_required: true + # ui: + # display_name: Bank Feed Id + # outputs: + # fields: + # - name: name + # field_type: text + # ui: + # display_name: Name + # - name: transactions + # field_type: text + # ui: + # display_name: Transactions + + # - name: refresh_bank_feed + # display_name: Refresh Bank Feed + # description: Operation to refresh a bank feed + # slug: refresh_bank_feed + # function: operation_handler + # type: action + # inputs: + # fields: + # - name: bank_feed_id + # field_type: text + # is_required: true + # ui: + # display_name: Bank Feed Id + # outputs: + # fields: + # - name: name + # field_type: text + # ui: + # display_name: Name + # - name: status + # field_type: text + # ui: + # display_name: Status + # - name: message + # field_type: text + # ui: + # display_name: Message - - name: get_bank_feed_transactions - display_name: Get Bank Feed Transactions - description: Operation to get transactions of a bank feed - slug: get_bank_feed_transactions + # - name: list_bank_disruptions + # description: Operation to list bank disruptions + # slug: list_bank_disruptions + # function: operation_handler + # type: action + # inputs: + # fields: + # - name: active + # field_type: bool + # is_required: true + # ui: + # display_name: Active + # outputs: + # fields: + # - name: bank_statuses + # field_type: text + # ui: + # display_name: Bank Statuses + + - name: link_ticket_to_conversation + description: Operation to link created ticket to conversation + slug: link_ticket_to_conversation function: operation_handler type: action inputs: fields: - - name: bank_feed_id - field_type: text + - name: agent_session_id + field_type: id + id_type: + - ai_agent_session is_required: true ui: - display_name: Bank Feed Id - outputs: - fields: - - name: name - field_type: text - ui: - display_name: Name - - name: transactions - field_type: text - ui: - display_name: Transactions - - - name: refresh_bank_feed - display_name: Refresh Bank Feed - description: Operation to refresh a bank feed - slug: refresh_bank_feed - function: operation_handler - type: action - inputs: - fields: - - name: bank_feed_id - field_type: text + display_name: Agent Session + - name: ticket_id + field_type: id + id_type: + - ticket is_required: true ui: - display_name: Bank Feed Id + display_name: Ticket + outputs: fields: - - name: name - field_type: text + - name: ticket_id + field_type: id + id_type: + - ticket + is_required: true ui: - display_name: Name - - name: status + display_name: Ticket + - name: session_object field_type: text ui: - display_name: Status + display_name: Session Object - name: message field_type: text ui: display_name: Message - - - name: list_bank_disruptions - description: Operation to list bank disruptions - slug: list_bank_disruptions - function: operation_handler - type: action - inputs: - fields: - - name: active - field_type: bool - is_required: true - ui: - display_name: Active - outputs: - fields: - - name: bank_statuses - field_type: text - ui: - display_name: Bank Statuses From 5cae66a6d9a71a280ebd6af17f18f8dc0c919570 Mon Sep 17 00:00:00 2001 From: tinkering-bhatia <taarush.bhatia@devrev.ai> Date: Mon, 21 Oct 2024 01:26:23 +0530 Subject: [PATCH 11/11] Updated code --- anz-demo-operations/build.tar.gz | Bin 89147 -> 90335 bytes .../link_ticket_to_conversation.ts | 24 ++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/anz-demo-operations/build.tar.gz b/anz-demo-operations/build.tar.gz index 16483f3b3e2b7de1fafa1723056cadec10e51530..58c4c3545c9f837c9f194a91815b5c4c84dd2ef7 100644 GIT binary patch literal 90335 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	mD|xX8{YB`H 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 literal 89147 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 diff --git a/anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts b/anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts index 458802a..35d17e2 100644 --- a/anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts +++ b/anz-demo-operations/code/src/functions/operation_handler/link_ticket_to_conversation.ts @@ -99,8 +99,12 @@ export class LinkTicketToConversation extends OperationBase { }); } - const conversationResp = await devrevSDK.conversationsGetPost({ id: session_object }); - if (!(conversationResp.status >= 200 && conversationResp.status < 300)) { + const conversationResp = await postCallAPI( + `${endpoint}/internal/conversations.get`, + { id: `${session_object}`}, + token + ); + if (!conversationResp.success) { return OperationOutput.fromJSON({ summary: `Could not link ticket to conversation: ${ticket_id}`, output: { @@ -112,10 +116,20 @@ export class LinkTicketToConversation extends OperationBase { } as OutputValue, }); } + console.log(conversationResp.data); const members = conversationResp.data.conversation.members; - const revUsers: RevUserSummary[] = members.filter((member: UserSummary) => member.type === UserType.RevUser); - const reported_by = revUsers[0].id; - const rev_org = revUsers[0].rev_org?.id + console.log(members); + let reported_by: string | undefined; + for (const member of members) { + if (member.id.includes("revu")) { + reported_by = member.id; + break; + } + } + let rev_org: string | undefined; + if (conversationResp.data.conversation.rev_orgs.length > 0) { + rev_org = conversationResp.data.conversation.rev_orgs[0].id; + } const linksCreateReq: LinksCreateRequest = { link_type: LinkType.IsRelatedTo,