diff --git a/README.md b/README.md index 44490c2..171c420 100644 --- a/README.md +++ b/README.md @@ -43,9 +43,9 @@ You can then create the worker client using a url import: ```ts import howsoUrl from "@/data/engine/howso.caml?url"; import migrationsUrl from "@/data/engine/migrations.caml?url"; -import { type ClientOptions, Trainee, WasmClient } from "@howso/engine/wasm"; +import { type ClientOptions, Trainee, WasmClient } from "@howso/engine"; -const getClient = async (): WasmClient => { +const getClient = async (): Promise => { const worker = new Worker(new URL("@/workers/AmalgamWorker", import.meta.url), { type: "module" }); const client = new WasmClient(worker, { howsoUrl, diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..4ddd6ea --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,18 @@ +// @ts-check + +import eslint from "@eslint/js"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + eslint.configs.recommended, + ...tseslint.configs.recommended, + eslintPluginPrettierRecommended, + { + rules: { + "@typescript-eslint/no-empty-object-type": "warn", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unused-vars": "warn", + }, + }, +); diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..4e089d7 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,17 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +export default { + preset: "ts-jest", + testEnvironment: "jsdom", + testMatch: ["**/?(*.)+(spec|test).ts?(x)"], + transform: { + "^.+\\.[tj]s$": [ + "ts-jest", + { + // Allow importing from /webassembly/ + tsconfig: { + allowJs: true, + }, + }, + ], + }, +}; diff --git a/package-lock.json b/package-lock.json index c13d6bf..7374f6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,23 +9,30 @@ "version": "0.0.0", "license": "AGPL-3.0-only", "dependencies": { - "@howso/amalgam-lang": "^54.3.17", - "@howso/openapi-client": "^2.0.1", - "@microsoft/fetch-event-source": "^2.0.1", + "@howso/amalgam-lang": "^54.3.18", "uuid": "^9.0.0" }, "devDependencies": { + "@eslint/js": "^9.10.0", + "@rollup/plugin-typescript": "^11.1.6", "@types/emscripten": "^1.39.10", + "@types/eslint__js": "^8.42.3", "@types/node": "^18.15.2", "@types/uuid": "^9.0.1", - "@typescript-eslint/eslint-plugin": "^6.20.0", - "@typescript-eslint/parser": "^6.20.0", - "eslint": "^8.56.0", + "@typescript-eslint/parser": "^8.5.0", + "eslint": "^9.10.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "prettier": "^3.2.5", + "eslint-plugin-prettier": "^5.2.1", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "prettier": "^3.3.3", "rimraf": "^5.0.5", - "typescript": "^5.5.3" + "rollup": "^4.12.1", + "ts-jest": "^29.2.5", + "typescript": "^5.6.2", + "typescript-eslint": "^8.5.0", + "vite": "^5.1.6", + "vite-plugin-eslint": "^1.8.1" }, "engines": { "node": ">=18" @@ -40,2056 +47,2839 @@ "node": ">=0.10.0" } }, - "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==", + "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": { - "eslint-visitor-keys": "^3.3.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "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" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "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": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@howso/amalgam-lang": { - "version": "54.3.17", - "resolved": "https://dpbuild.jfrog.io/artifactory/api/npm/npm-virtual/@howso/amalgam-lang/-/@howso/amalgam-lang-54.3.17.tgz", - "integrity": "sha512-ALMFB2Cxe78T2qM4eES3nmBtka5HlYuigPtJV4QJLDGoo7iIIp7ocnF3hxByhIPIBCYKLzM/1QtNsywibh6Tyw==" - }, - "node_modules/@howso/openapi-client": { - "version": "2.0.1", - "resolved": "https://dpbuild.jfrog.io/artifactory/api/npm/npm-virtual/@howso/openapi-client/-/@howso/openapi-client-2.0.1.tgz", - "integrity": "sha512-8+M1YFHexhX19zRGS4oA0QJpjyMDrVyJ+SwDczT0vLsq4UM5fa1l82lLCN+zxVfFYXPhKBKgZZ57/yp0DFwsRg==", + "node_modules/@babel/generator": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.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==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=10.10.0" + "node": ">=6.9.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==", + "node_modules/@babel/helper-compilation-targets/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, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/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/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/@microsoft/fetch-event-source": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", - "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==" + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, - "optional": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "dependencies": { + "color-convert": "^1.9.0" }, - "funding": { - "url": "https://opencollective.com/unts" + "engines": { + "node": ">=4" } }, - "node_modules/@types/emscripten": { - "version": "1.39.10", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", - "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", - "dev": true + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } }, - "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/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } }, - "node_modules/@types/node": { - "version": "18.17.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", - "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", - "dev": true + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "node_modules/@types/uuid": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", - "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", - "dev": true + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz", - "integrity": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==", + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/type-utils": "6.20.0", - "@typescript-eslint/utils": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "has-flag": "^3.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=4" } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz", - "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==", + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", - "debug": "^4.3.4" + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "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": { - "eslint": "^7.0.0 || ^8.0.0" + "@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" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz", - "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==", + "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": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=6.9.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz", - "integrity": "sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/utils": "6.20.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.9.0" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "@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" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz", - "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==", + "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, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz", - "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.9.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/typescript-estree/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==", + "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": { - "balanced-match": "^1.0.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "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": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz", - "integrity": "sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==", + "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": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz", - "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==", + "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": { - "@typescript-eslint/types": "6.20.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "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, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" }, - "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" + "@babel/core": "^7.0.0-0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "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": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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==", + "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": { - "color-convert": "^2.0.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-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==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/traverse": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", "dev": true, "dependencies": { - "fill-range": "^7.1.1" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "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, + "optional": true, + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "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/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/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "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, + "optional": true, + "peer": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "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/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } }, - "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==", + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } }, - "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==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], "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" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8.6.0" + "node": ">=12" } }, - "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==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 6" + "node": ">=12" } }, - "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.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "reusify": "^1.0.4" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "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==", + "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": { - "flat-cache": "^3.0.4" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.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==", + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "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==", + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/flat-cache": { + "node_modules/@eslint/eslintrc": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "dependencies": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "dev": true, "engines": { - "node": ">=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", "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" + "levn": "^0.4.1" }, "engines": { - "node": "*" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@howso/amalgam-lang": { + "version": "54.3.18", + "resolved": "https://dpbuild.jfrog.io/artifactory/api/npm/npm-virtual/@howso/amalgam-lang/-/amalgam-lang-54.3.18.tgz", + "integrity": "sha512-RbBj7YXhuWjRKNqF3k53n2FAnDtvhlFYLvN+LWHhpQobbJXBQX7qNOjyFvGtszI3Bo0oqorVYU+QmsUGVIc0OA==" + }, + "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": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "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==", + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=18.18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=14" + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "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/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "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==", + "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": { - "is-glob": "^4.0.3" + "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": ">=10.13.0" + "node": ">=8" } }, - "node_modules/glob/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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "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" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "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/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } }, - "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==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "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": ">= 4" + "node": ">=8" } }, - "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==", + "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": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@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": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "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": ">=0.8.19" + "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/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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": { - "once": "^1.3.0", - "wrappy": "1" + "@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/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/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.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==", + "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": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "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": { - "is-extglob": "^2.1.1" + "@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": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "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": ">=0.12.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "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": ">=8" - } - }, - "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": "^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/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "node_modules/@jest/reporters/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": { - "@isaacs/cliui": "^8.0.2" + "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": ">=14" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, - "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==", + "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": { - "argparse": "^2.0.1" + "@sinclair/typebox": "^0.27.8" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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-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/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "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": { - "json-buffer": "3.0.1" + "@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/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "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": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "@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": ">= 0.8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "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": { - "p-locate": "^5.0.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "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 || >=16.14" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "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": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=8.6" + "node": ">=6.0.0" } }, - "node_modules/minimatch": { + "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=6.0.0" } }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "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": ">=16 || 14 >=14.17" + "node": ">=6.0.0" } }, - "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==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, - "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/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "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": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "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==", + "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": { - "yocto-queue": "^0.1.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "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==", + "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, - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "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==", + "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": { - "callsites": "^3.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=6" + "node": ">= 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==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "optional": true, "engines": { - "node": ">=8" + "node": ">=14" } }, - "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==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "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==", + "node_modules/@rollup/plugin-typescript": { + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", + "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } } }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": 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==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "cpu": [ + "arm" + ], "dev": true, - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "optional": true, + "os": [ + "android" + ] }, - "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==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">= 0.8.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "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/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==", + "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": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 10" } }, - "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==", + "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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "optional": true, + "peer": true }, - "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==", + "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, - "engines": { - "node": ">=4" - } + "optional": true, + "peer": true }, - "node_modules/reusify": { + "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, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node16": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "optional": true, + "peer": 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/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "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": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@babel/types": "^7.0.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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, - "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" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "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": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@babel/types": "^7.20.7" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@types/emscripten": { + "version": "1.39.10", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "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==", + "node_modules/@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@types/eslint": "*" } }, - "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==", + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "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, - "engines": { - "node": ">=8" + "dependencies": { + "@types/node": "*" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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, - "engines": { - "node": ">=8" + "dependencies": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/string-width-cjs": { - "name": "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==", + "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/node": { + "version": "18.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", + "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", + "dev": true + }, + "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/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, + "node_modules/@types/uuid": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", + "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "@types/yargs-parser": "*" } }, - "node_modules/string-width-cjs/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/@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==", "dev": true }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", + "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/type-utils": "8.5.0", + "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@typescript-eslint/parser": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", + "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "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==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", + "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", + "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/utils": "8.5.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "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==", + "node_modules/@typescript-eslint/types": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", + "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", "dev": true, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-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==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", + "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "node_modules/@typescript-eslint/typescript-estree/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": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" + "balanced-match": "^1.0.0" } }, - "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/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==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ts-api-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.0.tgz", - "integrity": "sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw==", + "node_modules/@typescript-eslint/utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.2.0" + "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", + "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1" + "@typescript-eslint/types": "8.5.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">= 0.8.0" - } - }, - "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" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "acorn": "bin/acorn" }, "engines": { - "node": ">=14.17" + "node": ">=0.4.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==", + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" + "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/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "acorn": "^8.11.0" }, "engines": { - "node": ">= 8" + "node": ">=0.4.0" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "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": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "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": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wrap-ansi-cjs": { - "name": "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==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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, + "optional": true, + "peer": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "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-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-istanbul/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/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-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-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@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" + }, + "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/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.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "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.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-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/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.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "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": "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/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "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/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.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "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==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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==", "dev": true }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "node_modules/cliui/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==", @@ -2103,327 +2893,6731 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/cliui/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==", + "dev": true, + "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/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": "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/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/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "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/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/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-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, + "optional": true, + "peer": 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/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": 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/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "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, + "optional": true, + "peer": 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/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.22", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.22.tgz", + "integrity": "sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==", + "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/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { "node": ">=12" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.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": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.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/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/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/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "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/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/execa/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/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/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.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "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": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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/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/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "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/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 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/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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "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/glob/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/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-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/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/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.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "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-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "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==", + "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/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-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "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==", + "dev": true, + "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-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-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-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "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/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": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "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/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-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/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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-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-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/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/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-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-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "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-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-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-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-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/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/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-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-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/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-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-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/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/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "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": "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/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/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "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-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/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/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "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.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "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/nwsapi": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "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/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "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.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "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/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "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/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "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/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "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/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/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "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-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", + "fsevents": "~2.3.2" + } + }, + "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/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/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "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/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": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "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": "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/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/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/synckit": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "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/test-exclude/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/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/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-jest": { + "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "dependencies": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.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-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, + "optional": true, + "peer": 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/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz", + "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.5.0", + "@typescript-eslint/parser": "8.5.0", + "@typescript-eslint/utils": "8.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "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/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "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, + "optional": true, + "peer": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "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/vite": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-eslint": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz", + "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "@types/eslint": "^8.4.5", + "rollup": "^2.77.2" + }, + "peerDependencies": { + "eslint": ">=7", + "vite": ">=2" + } + }, + "node_modules/vite-plugin-eslint/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/vite-plugin-eslint/node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=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/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "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==", + "dev": true, + "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-cjs/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==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "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/write-file-atomic/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/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/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==", + "dev": true + }, + "node_modules/yargs/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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "optional": true, + "peer": 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" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true + }, + "@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "dev": true, + "requires": { + "@babel/types": "^7.25.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "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, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true + }, + "@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "dev": true, + "requires": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" + } + }, + "@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.25.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-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, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-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, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + } + }, + "@babel/traverse": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@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, + "optional": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@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, + "optional": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "dev": true, + "optional": true + }, + "@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, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true + }, + "@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + } + }, + "@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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" + } + }, + "@eslint/js": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.10.0.tgz", + "integrity": "sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==", + "dev": true + }, + "@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true + }, + "@eslint/plugin-kit": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.1.0.tgz", + "integrity": "sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==", + "dev": true, + "requires": { + "levn": "^0.4.1" + } + }, + "@howso/amalgam-lang": { + "version": "54.3.18", + "resolved": "https://dpbuild.jfrog.io/artifactory/api/npm/npm-virtual/@howso/amalgam-lang/-/amalgam-lang-54.3.18.tgz", + "integrity": "sha512-RbBj7YXhuWjRKNqF3k53n2FAnDtvhlFYLvN+LWHhpQobbJXBQX7qNOjyFvGtszI3Bo0oqorVYU+QmsUGVIc0OA==" + }, + "@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 + }, + "@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "requires": { + "@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" + } + }, + "@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, + "requires": { + "@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" + } + }, + "@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, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@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, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@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, + "requires": { + "jest-get-type": "^29.6.3" + } + }, + "@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, + "requires": { + "@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" + } + }, + "@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + } + }, + "@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "@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, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@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, + "requires": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@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, + "requires": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@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, + "requires": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "requires": { + "@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" + } + }, + "@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, + "requires": { + "@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" + } + }, + "@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, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@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 + }, + "@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 + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "@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, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true + }, + "@rollup/plugin-typescript": { + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", + "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + } + }, + "@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "dev": true, + "optional": true + }, + "@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 + }, + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@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, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@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, + "optional": true, + "peer": true + }, + "@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, + "optional": true, + "peer": true + }, + "@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, + "optional": true, + "peer": true + }, + "@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, + "optional": true, + "peer": true + }, + "@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, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@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, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@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, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@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, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/emscripten": { + "version": "1.39.10", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", + "dev": true + }, + "@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint__js": { + "version": "8.42.3", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", + "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "dev": true, + "requires": { + "@types/eslint": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "@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, + "requires": { + "@types/node": "*" + } + }, + "@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 + }, + "@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, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@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, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "@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 + }, + "@types/node": { + "version": "18.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", + "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", + "dev": true + }, + "@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 + }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, + "@types/uuid": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", + "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@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==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.5.0.tgz", + "integrity": "sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/type-utils": "8.5.0", + "@typescript-eslint/utils": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.5.0.tgz", + "integrity": "sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.5.0.tgz", + "integrity": "sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.5.0.tgz", + "integrity": "sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "8.5.0", + "@typescript-eslint/utils": "8.5.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/types": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.5.0.tgz", + "integrity": "sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.5.0.tgz", + "integrity": "sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/visitor-keys": "8.5.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.5.0", + "@typescript-eslint/types": "8.5.0", + "@typescript-eslint/typescript-estree": "8.5.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.5.0.tgz", + "integrity": "sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.5.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true + }, + "acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "requires": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "requires": { + "acorn": "^8.11.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "optional": true, + "peer": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "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, + "requires": { + "@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" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "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, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "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, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@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-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, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "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, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-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 + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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 + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "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 + }, + "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, + "requires": { + "@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" + } + }, + "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, + "optional": true, + "peer": true + }, + "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, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "requires": {} + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.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 + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "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 + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "optional": true, + "peer": true + }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.5.22", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.22.tgz", + "integrity": "sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==", + "dev": true + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "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, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, + "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 + }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + } + }, + "eslint": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz", + "integrity": "sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.10.0", + "@eslint/plugin-kit": "^0.1.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.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" + }, "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true + } } }, - "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/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "requires": {} }, - "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==", + "eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true }, - "@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==", + "eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "requires": { - "eslint-visitor-keys": "^3.3.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "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 }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "requires": { - "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" + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true + } } }, - "@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "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 }, - "@howso/amalgam-lang": { - "version": "54.3.17", - "resolved": "https://dpbuild.jfrog.io/artifactory/api/npm/npm-virtual/@howso/amalgam-lang/-/@howso/amalgam-lang-54.3.17.tgz", - "integrity": "sha512-ALMFB2Cxe78T2qM4eES3nmBtka5HlYuigPtJV4QJLDGoo7iIIp7ocnF3hxByhIPIBCYKLzM/1QtNsywibh6Tyw==" - }, - "@howso/openapi-client": { - "version": "2.0.1", - "resolved": "https://dpbuild.jfrog.io/artifactory/api/npm/npm-virtual/@howso/openapi-client/-/@howso/openapi-client-2.0.1.tgz", - "integrity": "sha512-8+M1YFHexhX19zRGS4oA0QJpjyMDrVyJ+SwDczT0vLsq4UM5fa1l82lLCN+zxVfFYXPhKBKgZZ57/yp0DFwsRg==" + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "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, "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "estraverse": "^5.2.0" } }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, - "@humanwhocodes/object-schema": { + "estree-walker": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "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" }, "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "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 - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } } } }, - "@microsoft/fetch-event-source": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", - "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==" + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@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" } }, - "@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==", + "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 }, - "@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==", + "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 + }, + "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, "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@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" + }, + "dependencies": { + "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, + "requires": { + "is-glob": "^4.0.1" + } + } } }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "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 }, - "@types/emscripten": { - "version": "1.39.10", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", - "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", + "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 }, - "@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 + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } }, - "@types/node": { - "version": "18.17.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", - "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", - "dev": true + "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, + "requires": { + "bser": "2.1.1" + } }, - "@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", - "dev": true + "file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "requires": { + "flat-cache": "^4.0.0" + } }, - "@types/uuid": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", - "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", - "dev": true + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } }, - "@typescript-eslint/eslint-plugin": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz", - "integrity": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==", + "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, "requires": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/type-utils": "6.20.0", - "@typescript-eslint/utils": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "to-regex-range": "^5.0.1" } }, - "@typescript-eslint/parser": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz", - "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==", + "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, "requires": { - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", - "debug": "^4.3.4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "@typescript-eslint/scope-manager": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz", - "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==", + "flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "requires": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" } }, - "@typescript-eslint/type-utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz", - "integrity": "sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==", + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/utils": "6.20.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" } }, - "@typescript-eslint/types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz", - "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==", + "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==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "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 }, - "@typescript-eslint/typescript-estree": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz", - "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==", + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "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 + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "requires": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "dependencies": { "brace-expansion": { @@ -2446,445 +9640,360 @@ } } }, - "@typescript-eslint/utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz", - "integrity": "sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", - "semver": "^7.5.4" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz", - "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==", + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "@typescript-eslint/types": "6.20.0", - "eslint-visitor-keys": "^3.4.1" + "is-glob": "^4.0.3" } }, - "@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==", + "globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true }, - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "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 }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "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 }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "function-bind": "^1.1.2" } }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "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 }, - "array-union": { + "human-signals": { "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 - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "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, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "requires": { - "fill-range": "^7.1.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "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==", + "import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "requires": { - "color-name": "~1.1.4" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" } }, - "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 - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "once": "^1.3.0", + "wrappy": "1" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "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 }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "requires": { - "path-type": "^4.0.0" + "hasown": "^2.0.2" } }, - "doctrine": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { - "esutils": "^2.0.2" + "is-extglob": "^2.1.1" } }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "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 + }, + "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 + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "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 }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "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==", + "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 }, - "eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "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, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "@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" } }, - "eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "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, "requires": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" } }, - "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 - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" } }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "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, "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" } }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "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 - }, - "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 - }, - "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==", + "jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "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, - "requires": { - "is-glob": "^4.0.1" - } - } + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" } }, - "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 - }, - "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 - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "requires": { - "reusify": "^1.0.4" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" } }, - "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==", + "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, "requires": { - "flat-cache": "^3.0.4" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" } }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "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, "requires": { - "to-regex-range": "^5.0.1" - } - }, - "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==", + "@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" + } + }, + "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, "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@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" } }, - "flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "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, "requires": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "@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" }, "dependencies": { "glob": { @@ -2900,204 +10009,533 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } } } }, - "flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "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, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "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, "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "detect-newline": "^3.0.0" } }, - "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 + "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, + "requires": { + "@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" + } }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "balanced-match": "^1.0.0" + "debug": "4" } }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + } + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true } } }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "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, + "requires": { + "@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" + } + }, + "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 + }, + "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, "requires": { - "is-glob": "^4.0.3" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "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, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" } }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "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, "requires": { - "type-fest": "^0.20.2" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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, "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "@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" } }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "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, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } }, - "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 + "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, + "requires": {} }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "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 }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "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, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "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" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "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==", - "dev": true + "jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "requires": { + "@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" + } + }, + "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, + "requires": { + "@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" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "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, "requires": { - "is-extglob": "^2.1.1" + "@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" } }, - "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 + "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, + "requires": { + "@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" + } }, - "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 + "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, + "requires": { + "@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" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "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, + "requires": { + "@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" + } }, - "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "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, "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, + "jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "optional": true, + "peer": true + }, + "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 + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3107,12 +10545,24 @@ "argparse": "^2.0.1" } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "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 + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3125,15 +10575,33 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, "keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "requires": { "json-buffer": "3.0.1" } }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3144,6 +10612,12 @@ "type-check": "~0.4.0" } }, + "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 + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3153,6 +10627,12 @@ "p-locate": "^5.0.0" } }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3165,6 +10645,36 @@ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true }, + "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, + "requires": { + "semver": "^7.5.3" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "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 + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3181,6 +10691,27 @@ "picomatch": "^2.3.1" } }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3202,12 +10733,51 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true + }, "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-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "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 + }, + "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, + "requires": { + "path-key": "^3.0.0" + } + }, + "nwsapi": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3217,6 +10787,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -3249,6 +10828,12 @@ "p-limit": "^3.0.2" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3258,6 +10843,27 @@ "callsites": "^3.0.0" } }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3276,28 +10882,99 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "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 + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "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 + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", "dev": true, "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" } }, - "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 - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3305,9 +10982,9 @@ "dev": true }, "prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true }, "prettier-linter-helpers": { @@ -3319,24 +10996,123 @@ "fast-diff": "^1.1.2" } }, + "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, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, + "pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "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 }, + "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 + }, + "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==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "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 + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -3352,6 +11128,32 @@ "glob": "^10.3.7" } }, + "rollup": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3361,26 +11163,27 @@ "queue-microtask": "^1.2.2" } }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } + "xmlchars": "^2.2.0" } }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3402,12 +11205,73 @@ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, "string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -3473,6 +11337,18 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3488,22 +11364,73 @@ "has-flag": "^4.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "requires": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, "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 }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3513,13 +11440,65 @@ "is-number": "^7.0.0" } }, + "tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, "ts-api-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.0.tgz", - "integrity": "sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "requires": {} }, + "ts-jest": { + "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "requires": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + } + }, + "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, + "optional": true, + "peer": true, + "requires": { + "@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" + } + }, "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -3535,18 +11514,45 @@ "prelude-ls": "^1.2.1" } }, - "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==", + "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 }, "typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dev": true + }, + "typescript-eslint": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.5.0.tgz", + "integrity": "sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.5.0", + "@typescript-eslint/parser": "8.5.0", + "@typescript-eslint/utils": "8.5.0" + } + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true }, + "update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "requires": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3556,11 +11562,99 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, + "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, + "optional": true, + "peer": true + }, + "v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } + }, + "vite": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", + "dev": true, + "requires": { + "esbuild": "^0.21.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + } + }, + "vite-plugin-eslint": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz", + "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.2.1", + "@types/eslint": "^8.4.5", + "rollup": "^2.77.2" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + } + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3640,12 +11734,91 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "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, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "dependencies": { + "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 + } + } + }, + "ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "requires": {} + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "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==", "dev": true }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "optional": true, + "peer": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 87fce0d..41c94f0 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,11 @@ { "name": "@howso/engine", "version": "0.0.0", - "type": "module", "license": "AGPL-3.0-only", + "type": "module", + "main": "lib/index.cjs.js", + "module": "lib/index.esm.js", + "types": "lib/index.d.ts", "author": { "name": "Howso Incorporated" }, @@ -11,96 +14,43 @@ }, "scripts": { "prebuild": "rimraf ./lib", - "build": "tsc --build", + "build": "rollup --config", "lint": "tsc --noEmit && eslint 'src/**'", "lint:fix": "eslint --fix 'src/**'", "prepack": "npm run build", - "test": "tsc --noEmit" + "test": "jest --passWithNoTests" }, "files": [ "LICENSE.txt", + "package.json", "README.md", "lib" ], - "main": "./lib/index.js", - "exports": { - ".": { - "default": "./lib/index.js" - }, - "./wasm": "./lib/client/wasm/index.js", - "./rest": "./lib/client/rest/index.js", - "./capabilities": "./lib/client/capabilities/index.js", - "./utilities": "./lib/utilities.js", - "./features": "./lib/features/index.js", - "./features/abstract": "./lib/features/abstract/index.js", - "./errors": "./lib/client/errors.js", - "./package.json": "./package.json" - }, "dependencies": { - "@howso/amalgam-lang": "^54.3.17", - "@howso/openapi-client": "^2.0.1", - "@microsoft/fetch-event-source": "^2.0.1", + "@howso/amalgam-lang": "^54.3.18", "uuid": "^9.0.0" }, "devDependencies": { + "@eslint/js": "^9.10.0", + "@rollup/plugin-typescript": "^11.1.6", "@types/emscripten": "^1.39.10", + "@types/eslint__js": "^8.42.3", "@types/node": "^18.15.2", "@types/uuid": "^9.0.1", - "@typescript-eslint/eslint-plugin": "^6.20.0", - "@typescript-eslint/parser": "^6.20.0", - "eslint": "^8.56.0", + "@typescript-eslint/parser": "^8.5.0", + "eslint": "^9.10.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "prettier": "^3.2.5", + "eslint-plugin-prettier": "^5.2.1", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "prettier": "^3.3.3", "rimraf": "^5.0.5", - "typescript": "^5.5.3" - }, - "eslintConfig": { - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 11, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint", - "prettier" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended" - ], - "rules": { - "prettier/prettier": "error", - "@typescript-eslint/naming-convention": [ - "error", - { - "selector": [ - "class", - "interface" - ], - "format": [ - "PascalCase" - ] - } - ], - "@typescript-eslint/no-unused-vars": [ - "warn", - { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_", - "caughtErrorsIgnorePattern": "^_" - } - ] - }, - "ignorePatterns": [ - "lib/**" - ], - "env": { - "browser": true, - "es2020": true - } + "rollup": "^4.12.1", + "ts-jest": "^29.2.5", + "typescript": "^5.6.2", + "typescript-eslint": "^8.5.0", + "vite": "^5.1.6", + "vite-plugin-eslint": "^1.8.1" }, "prettier": { "tabWidth": 2, diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..3d1c55a --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,32 @@ +import typescript from "@rollup/plugin-typescript"; +import pkg from "./package.json" with { type: "json" }; + +/** + * @type {import('rollup').RollupOptions} + */ +export default { + input: "src/index.ts", + // preserveModules: true, + plugins: [ + typescript({ + noEmitOnError: true, + tsconfig: "./tsconfig.build.json", + }), + // terser(), // minifies generated bundles + ], + external: [ + ...Object.keys(pkg.dependencies || {}), + ...Object.keys(pkg.peerDependencies || {}), + ...Object.keys(pkg.optionalDependencies || {}), + ], + output: [ + { + file: "lib/index.cjs.js", + format: "cjs", + }, + { + file: "lib/index.esm.js", + format: "es", + }, + ], +}; diff --git a/src/client/capabilities/base.ts b/src/client/capabilities/base.ts index af116e0..f6e0085 100644 --- a/src/client/capabilities/base.ts +++ b/src/client/capabilities/base.ts @@ -1,4 +1,4 @@ -import { Trainee } from "../../trainees/index"; +import { Trainee } from "../../types"; import type { CacheMap } from "../utilities/cache"; export interface Capabilities { diff --git a/src/client/capabilities/index.ts b/src/client/capabilities/index.ts index 67c2dd3..b4a9efe 100644 --- a/src/client/capabilities/index.ts +++ b/src/client/capabilities/index.ts @@ -1,5 +1,4 @@ -export * from "./base.js"; -export * from "./trainees.js"; -export * from "./sessions.js"; -export * from "./projects.js"; -export * from "./traces.js"; +export * from "./base"; +export * from "./sessions"; +export * from "./traces"; +export * from "./trainees"; diff --git a/src/client/capabilities/projects.ts b/src/client/capabilities/projects.ts deleted file mode 100644 index 879c70a..0000000 --- a/src/client/capabilities/projects.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Project, ProjectIdentity } from "@howso/openapi-client/models"; - -export interface IProjectClient { - createProject(project: Required>): Promise; - updateProject(project: Required>): Promise; - getProject(id: string): Promise; - deleteProject(id: string): Promise; - listProjects(keywords: string | string[]): Promise; -} diff --git a/src/client/capabilities/sessions.ts b/src/client/capabilities/sessions.ts index 12d21d5..8782557 100644 --- a/src/client/capabilities/sessions.ts +++ b/src/client/capabilities/sessions.ts @@ -1,4 +1,4 @@ -import type { Session, SessionIdentity } from "@howso/openapi-client/models"; +import type { Session, SessionIdentity } from "../../types"; export interface ISessionManagementClient { updateSession(session: Required>): Promise; diff --git a/src/client/capabilities/trainees.ts b/src/client/capabilities/trainees.ts index 03fffe6..84c0b1c 100644 --- a/src/client/capabilities/trainees.ts +++ b/src/client/capabilities/trainees.ts @@ -7,19 +7,19 @@ import type { FeatureConvictionRequest, FeatureMarginalStats, FeatureMarginalStatsRequest, - TrainRequest, - ReactRequest, - ReactResponse, ReactIntoFeaturesRequest, ReactIntoFeaturesResponse, + ReactRequest, + ReactResponse, ReactSeriesRequest, ReactSeriesResponse, SetAutoAnalyzeParamsRequest, + Trainee, TraineeIdentity, - TraineeWorkflowAttributesRequest, TraineeWorkflowAttributes, -} from "@howso/openapi-client/models"; -import { Trainee } from "../../trainees/index"; + TraineeWorkflowAttributesRequest, + TrainRequest, +} from "../../types"; export interface ITraineeClient { acquireTraineeResources(traineeId: string): Promise; diff --git a/src/client/errors.ts b/src/client/errors.ts index 5bc4162..6fe8b5f 100644 --- a/src/client/errors.ts +++ b/src/client/errors.ts @@ -1,4 +1,4 @@ -import { ModelError, ModelErrorFromJSON } from "@howso/openapi-client/models"; +import { ModelError, ModelErrorFromJSON } from "../types"; export class ProblemError extends Error { public readonly code?: string; diff --git a/src/client/index.ts b/src/client/index.ts new file mode 100644 index 0000000..a932304 --- /dev/null +++ b/src/client/index.ts @@ -0,0 +1,3 @@ +export * from "./errors"; +export * from "./utilities"; +export * from "./wasm"; diff --git a/src/client/utilities/index.ts b/src/client/utilities/index.ts index 7573728..64373b8 100644 --- a/src/client/utilities/index.ts +++ b/src/client/utilities/index.ts @@ -1,5 +1,5 @@ -export * from "./batching.js"; -export * from "./delay.js"; -export * from "./detectors.js"; -export * from "./cache.js"; -export * from "./notify.js"; +export * from "./batching"; +export * from "./cache"; +export * from "./delay"; +export * from "./detectors"; +export * from "./notify"; diff --git a/src/client/wasm/client.ts b/src/client/wasm/client.ts index 449daf1..e73fbc6 100644 --- a/src/client/wasm/client.ts +++ b/src/client/wasm/client.ts @@ -1,9 +1,15 @@ -import type { AmalgamCommand, AmalgamOptions, AmalgamRequest, AmalgamResponseBody } from "@howso/amalgam-lang"; -import { AmalgamError } from "@howso/amalgam-lang"; -import { SetAutoAblationParamsRequest } from "@howso/openapi-client"; +import { + AmalgamError, + type AmalgamCommand, + type AmalgamOptions, + type AmalgamRequest, + type AmalgamResponseBody, +} from "@howso/amalgam-lang"; +import { v4 as uuid } from "uuid"; import { AnalyzeRequest, AnalyzeRequestToJSON, + AutoAblationParams, CaseCountResponse, Cases, CasesRequest, @@ -42,6 +48,7 @@ import { SessionToJSON, SetAutoAnalyzeParamsRequest, SetAutoAnalyzeParamsRequestToJSON, + Trainee, TraineeFromJSON, TraineeIdentity, TraineeToJSON, @@ -51,17 +58,16 @@ import { TrainRequest, TrainRequestToJSON, TrainResponse, -} from "@howso/openapi-client/models"; -import { mapValues, RequiredError } from "@howso/openapi-client/runtime"; -import { v4 as uuid } from "uuid"; -import { Trainee } from "../../trainees/index.js"; +} from "../../types"; +import { mapValues, RequiredError } from "../../types/runtime"; +import type { Capabilities, ISessionClient, ITraineeClient } from "../capabilities/index"; import { BaseClient, TraineeBaseCache } from "../capabilities/index"; -import type { Capabilities, ISessionClient, ITraineeClient } from "../capabilities/index.js"; import { ProblemError } from "../errors"; import { batcher, BatchOptions, CacheMap, isNode } from "../utilities/index"; -import { AmalgamCoreResponse, prepareCoreRequest, prepareCoreResponse } from "./core.js"; +import { AmalgamCoreResponse, prepareCoreRequest, prepareCoreResponse } from "./core"; import { FileSystemClient } from "./files"; +/* eslint-disable-next-line @typescript-eslint/no-empty-object-type */ export interface TraineeCache extends TraineeBaseCache {} export interface ClientOptions { @@ -442,7 +448,7 @@ export class WasmClient extends BaseClient implements ITraineeClient, ISessionCl `Could not create a trainee with id '${traineeId}'. Either the trainee template file was not found or the trainee already exists.`, ); } - const { features = {}, ...props } = TraineeToJSON(trainee); + const { features = {}, ...props } = TraineeToJSON({ ...trainee, id: traineeId }); // Set trainee metadata const metadata = { @@ -464,9 +470,12 @@ export class WasmClient extends BaseClient implements ITraineeClient, ISessionCl /** * Update a trainee's properties. - * @param _trainee The trainee identifier. + * @param trainee The trainee identifier. */ - public async updateTrainee(_trainee: Trainee): Promise { + public async updateTrainee( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars */ + trainee: Trainee, + ): Promise { throw new Error("Method not implemented."); } @@ -500,9 +509,12 @@ export class WasmClient extends BaseClient implements ITraineeClient, ISessionCl /** * List existing trainees. - * @param _keywords Keywords to filter the list of trainees by. + * @param keywords Keywords to filter the list of trainees by. */ - public async listTrainees(_keywords: string | string[]): Promise { + public async listTrainees( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars */ + keywords: string | string[], + ): Promise { throw new Error("Method not implemented."); } @@ -565,6 +577,9 @@ export class WasmClient extends BaseClient implements ITraineeClient, ISessionCl */ public async train(traineeId: string, request: TrainRequest): Promise { const trainee = await this.autoResolveTrainee(traineeId); + if (!trainee.id) { + throw new Error(`trainee.id is undefined`); + } const session = await this.getActiveSession(); let autoAnalyze = false; @@ -615,6 +630,9 @@ export class WasmClient extends BaseClient implements ITraineeClient, ISessionCl */ public async autoAnalyze(traineeId: string): Promise { const trainee = await this.autoResolveTrainee(traineeId); + if (!trainee.id) { + throw new Error(`trainee.id is undefined`); + } await this.execute(traineeId, "auto_analyze", {}); await this.autoPersistTrainee(trainee.id); } @@ -636,12 +654,9 @@ export class WasmClient extends BaseClient implements ITraineeClient, ISessionCl /** * Set the parameters use by auto analyze. * @param traineeId The trainee identifier. - * @param request The analysis parameters. + * @param params The analysis parameters. */ - public async setAutoAblationParams( - traineeId: string, - request: Omit, - ): Promise { + public async setAutoAblationParams(traineeId: string, params: AutoAblationParams): Promise { await this.autoResolveTrainee(traineeId); await this.execute( @@ -649,7 +664,7 @@ export class WasmClient extends BaseClient implements ITraineeClient, ISessionCl "set_auto_ablation_params", JSON.stringify({ trainee_id: traineeId, - ...request, + ...params, }), ); await this.autoPersistTrainee(traineeId); diff --git a/src/client/wasm/core.ts b/src/client/wasm/core.ts index 2aab118..3275617 100644 --- a/src/client/wasm/core.ts +++ b/src/client/wasm/core.ts @@ -20,10 +20,7 @@ export interface AmalgamCoreResponse { * @param payload The core payload. * @returns The updated core payload. */ -export function prepareCoreRequest( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - payload: any, -) { +export function prepareCoreRequest(payload: any) { if (!payload) { return payload; } @@ -44,10 +41,7 @@ export function prepareCoreRequest( * @param data The core response. * @returns The updated core response. */ -export function prepareCoreResponse( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - data: any, -): AmalgamCoreResponse { +export function prepareCoreResponse(data: any): AmalgamCoreResponse { if (!data) { throw new AmalgamError("Null or empty response received from core."); } diff --git a/src/client/wasm/files.ts b/src/client/wasm/files.ts index 103a322..83c0cb7 100644 --- a/src/client/wasm/files.ts +++ b/src/client/wasm/files.ts @@ -5,7 +5,7 @@ import type { FileSystemResponseBody, IFileSystem, } from "@howso/amalgam-lang"; -import { isNode } from "../utilities/detectors.js"; +import { isNode } from "../utilities/detectors"; export class FileSystemClient implements IFileSystem { protected readonly baseDir: string; diff --git a/src/client/wasm/index.ts b/src/client/wasm/index.ts index 66e0e1e..d44e2e2 100644 --- a/src/client/wasm/index.ts +++ b/src/client/wasm/index.ts @@ -1,5 +1,3 @@ -export * from "./client.js"; -export * from "./files.js"; -export * from "../errors.js"; -export * from "../../trainees/index.js"; -export { AmalgamCoreError, AmalgamCoreResponse } from "./core.js"; +export * from "./client"; +export * from "./core"; +export * from "./files"; diff --git a/src/features/abstract/arrays.ts b/src/features/abstract/arrays.ts index 8851ba2..6a1b15d 100644 --- a/src/features/abstract/arrays.ts +++ b/src/features/abstract/arrays.ts @@ -1,13 +1,12 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { FeatureAttributes, FeatureOriginalType } from "@howso/openapi-client/models"; +import type { FeatureAttributes, FeatureOriginalType } from "../../types"; import { ArrayData, FeatureSerializerBase, InferFeatureAttributesBase, InferFeatureBoundsOptions, InferFeatureTimeSeriesOptions, -} from "../base.js"; -import * as utils from "../utils.js"; +} from "../base"; +import * as utils from "../utils"; export class InferFeatureAttributesFromArray extends InferFeatureAttributesBase { constructor(protected readonly dataset: ArrayData) { @@ -23,33 +22,48 @@ export class InferFeatureAttributesFromArray extends InferFeatureAttributesBase } } - protected async inferBoolean(_featureName: string): Promise { + protected async inferBoolean( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { return { type: "nominal", data_type: "boolean", }; } - protected async inferTimedelta(_featureName: string): Promise { + protected async inferTimedelta( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { return { type: "continuous", }; } - protected async inferTime(_featureName: string): Promise { + protected async inferTime( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { return { type: "continuous", }; } - protected async inferDate(_featureName: string): Promise { + protected async inferDate( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { return { type: "continuous", date_time_format: "%Y-%m-%d", }; } - protected async inferDatetime(_featureName: string): Promise { + protected async inferDatetime( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { return { type: "continuous", date_time_format: "%Y-%m-%dT%H:%M:%SZ", @@ -100,7 +114,10 @@ export class InferFeatureAttributesFromArray extends InferFeatureAttributesBase } } - protected async inferString(_featureName: string): Promise { + protected async inferString( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { return { type: "nominal", }; @@ -188,15 +205,21 @@ export class InferFeatureAttributesFromArray extends InferFeatureAttributesBase } public async inferTimeSeries( - _attributes: Readonly, - _featureName: string, - _options: InferFeatureTimeSeriesOptions, + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + attributes: Readonly, + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + options: InferFeatureTimeSeriesOptions, ): Promise> { // TODO - infer time series throw new Error("Method not implemented."); } - protected async inferUnique(_featureName: string): Promise { + protected async inferUnique( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { // Arrays don't support unique constraints return false; } @@ -248,7 +271,11 @@ export class InferFeatureAttributesFromArray extends InferFeatureAttributesBase } export class FeatureSerializerArrayData extends FeatureSerializerBase { - public async serialize(data: ArrayData, _features: Record): Promise { + public async serialize( + data: ArrayData, + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + features: Record, + ): Promise { return data.data; } diff --git a/src/features/abstract/parsed.ts b/src/features/abstract/parsed.ts index 5af4f59..3fec7dc 100644 --- a/src/features/abstract/parsed.ts +++ b/src/features/abstract/parsed.ts @@ -1,7 +1,6 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { FeatureAttributes } from "@howso/openapi-client/models"; -import { ArrayData, ParsedArrayData, FeatureSerializerBase } from "../base.js"; -import { InferFeatureAttributesFromArray } from "./arrays.js"; +import type { FeatureAttributes } from "../../types"; +import { ArrayData, FeatureSerializerBase, ParsedArrayData } from "../base"; +import { InferFeatureAttributesFromArray } from "./arrays"; /** * Reformat array of objects to 2d array of values. @@ -27,7 +26,11 @@ export class InferFeatureAttributesFromParsedArray extends InferFeatureAttribute } export class FeatureSerializerParsedArrayData extends FeatureSerializerBase { - public async serialize(data: ParsedArrayData, _features: Record): Promise { + public async serialize( + data: ParsedArrayData, + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + features: Record, + ): Promise { return parsedDataToArrayData(data).data; } diff --git a/src/features/base.ts b/src/features/base.ts index f0137a2..8cfeea3 100644 --- a/src/features/base.ts +++ b/src/features/base.ts @@ -1,5 +1,4 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { FeatureAttributes, FeatureOriginalType } from "@howso/openapi-client/models"; +import type { FeatureAttributes, FeatureOriginalType } from "../types"; export interface InferFeatureBoundsOptions { tightBounds?: boolean | string[]; @@ -147,7 +146,10 @@ export abstract class InferFeatureAttributesBase { protected abstract inferString(featureName: string): Promise; protected abstract inferInteger(featureName: string): Promise; protected abstract inferFloat(featureName: string): Promise; - protected async inferUnknown(_featureName: string): Promise { + protected async inferUnknown( + /* eslint-disable-next-line @typescript-eslint/no-unused-vars*/ + featureName: string, + ): Promise { return { type: "nominal" }; } diff --git a/src/features/index.ts b/src/features/index.ts index a69d8ed..b68e865 100644 --- a/src/features/index.ts +++ b/src/features/index.ts @@ -1,3 +1,3 @@ -export * from "./infer.js"; -export * from "./base.js"; -export * from "./serializer.js"; +export * from "./base"; +export * from "./infer"; +export * from "./serializer"; diff --git a/src/features/infer.ts b/src/features/infer.ts index d5552fc..ed3432a 100644 --- a/src/features/infer.ts +++ b/src/features/infer.ts @@ -1,10 +1,12 @@ -import type * as base from "./base.js"; +import type * as base from "./base"; -import { isArrayData, isParsedArrayData } from "./base.js"; -import { FeatureAttributes } from "@howso/openapi-client/models"; -import { ProblemError } from "../client/errors.js"; -import { InferFeatureAttributesFromArray } from "./abstract/arrays.js"; -import { InferFeatureAttributesFromParsedArray } from "./abstract/parsed.js"; +import { ProblemError } from "../client/errors"; +import type { FeatureAttributes } from "../types"; +import { InferFeatureAttributesFromArray } from "./abstract/arrays"; +import { InferFeatureAttributesFromParsedArray } from "./abstract/parsed"; +import { isArrayData, isParsedArrayData } from "./base"; + +export * from "./utils"; export function getFeatureAttributesInferrer(data: base.AbstractDataType): base.InferFeatureAttributesBase { let svc: base.InferFeatureAttributesBase; diff --git a/src/features/serializer.ts b/src/features/serializer.ts index 4bd3553..5f857d1 100644 --- a/src/features/serializer.ts +++ b/src/features/serializer.ts @@ -1,11 +1,10 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import type * as base from "./base.js"; +import type * as base from "./base"; -import { isArrayData, isParsedArrayData } from "./base.js"; -import { FeatureAttributes } from "@howso/openapi-client/models"; -import { ProblemError } from "../client/errors.js"; -import { FeatureSerializerArrayData } from "./abstract/arrays.js"; -import { FeatureSerializerParsedArrayData } from "./abstract/parsed.js"; +import { ProblemError } from "../client/errors"; +import type { FeatureAttributes } from "../types"; +import { FeatureSerializerArrayData } from "./abstract/arrays"; +import { FeatureSerializerParsedArrayData } from "./abstract/parsed"; +import { isArrayData, isParsedArrayData } from "./base"; export type FeatureSerializerFormat = "unknown" | "array" | "parsed"; diff --git a/src/features/utils.ts b/src/features/utils.ts index c2a752e..bff55a8 100644 --- a/src/features/utils.ts +++ b/src/features/utils.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - /** * Get the precision of a number. * @param x The number. diff --git a/src/index.ts b/src/index.ts index e69de29..cebf3a3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -0,0 +1,3 @@ +export * from "./client"; +export * from "./features"; +export * from "./types"; diff --git a/src/trainees/index.ts b/src/trainees/index.ts deleted file mode 100644 index bf22682..0000000 --- a/src/trainees/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Trainee as BaseTrainee, FeatureAttributes } from "@howso/openapi-client/models"; - -export interface Trainee extends BaseTrainee { - id: string; - features: Record; -} diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..609c2bb --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1 @@ +export * from "./models"; diff --git a/src/types/models/AccountIdentity.ts b/src/types/models/AccountIdentity.ts new file mode 100644 index 0000000..747d82c --- /dev/null +++ b/src/types/models/AccountIdentity.ts @@ -0,0 +1,66 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface AccountIdentity + */ +export interface AccountIdentity { + /** + * The user's UUID. + * @type {string} + * @memberof AccountIdentity + */ + uuid?: string; + /** + * The user's username. + * @type {string} + * @memberof AccountIdentity + */ + username?: string; + /** + * The user's full name. + * @type {string} + * @memberof AccountIdentity + */ + full_name?: string; +} + +/** + * Check if a given object implements the AccountIdentity interface. + */ +export function instanceOfAccountIdentity(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function AccountIdentityFromJSON(json: any): AccountIdentity { + return AccountIdentityFromJSONTyped(json, false); +} + +export function AccountIdentityFromJSONTyped(json: any, ignoreDiscriminator: boolean): AccountIdentity { + if (json === undefined || json === null) { + return json; + } + return { + uuid: !exists(json, "uuid") ? undefined : json["uuid"], + username: !exists(json, "username") ? undefined : json["username"], + full_name: !exists(json, "full_name") ? undefined : json["full_name"], + }; +} + +export function AccountIdentityToJSON(value?: AccountIdentity | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + uuid: value.uuid, + username: value.username, + full_name: value.full_name, + }; +} diff --git a/src/types/models/AnalyzeRequest.ts b/src/types/models/AnalyzeRequest.ts new file mode 100644 index 0000000..90cb156 --- /dev/null +++ b/src/types/models/AnalyzeRequest.ts @@ -0,0 +1,204 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface AnalyzeRequest + */ +export interface AnalyzeRequest { + /** + * A list of action feature names. + * @type {Array} + * @memberof AnalyzeRequest + */ + action_features?: Array; + /** + * A list of context feature names. + * @type {Array} + * @memberof AnalyzeRequest + */ + context_features?: Array; + /** + * Number of cross validation folds to do. Value of 1 does hold-one-out instead of k-fold. + * @type {number} + * @memberof AnalyzeRequest + */ + k_folds?: number; + /** + * Number of samples used in calculating feature residuals. + * @type {number} + * @memberof AnalyzeRequest + */ + num_samples?: number; + /** + * Optional list of distance transform value hyperparameters to analyze with. + * @type {Array} + * @memberof AnalyzeRequest + */ + dt_values?: Array; + /** + * Optional list of k value hyperparameters to analyze with. + * @type {Array} + * @memberof AnalyzeRequest + */ + k_values?: Array; + /** + * Optional list of p value hyperparameters to analyze with. + * @type {Array} + * @memberof AnalyzeRequest + */ + p_values?: Array; + /** + * If true, bypass hyperparameter analysis. + * @type {boolean} + * @memberof AnalyzeRequest + */ + bypass_hyperparameter_analysis?: boolean; + /** + * If true, bypass calculation of feature residuals. + * @type {boolean} + * @memberof AnalyzeRequest + */ + bypass_calculate_feature_residuals?: boolean; + /** + * If true, bypass calculation of feature weights. + * @type {boolean} + * @memberof AnalyzeRequest + */ + bypass_calculate_feature_weights?: boolean; + /** + * Optional value, defaults to single_targeted + * single_targeted: analyze hyperparameters for the specified action_features + * omni_targeted: analyze hyperparameters for each context feature as an action feature, ignores action_features parameter + * targetless: analyze hyperparameters for all context features as possible action features, ignores action_features parameter + * @type {string} + * @memberof AnalyzeRequest + */ + targeted_model?: AnalyzeRequestTargetedModelEnum; + /** + * Optional. Number of cases to sample during analysis. Only applies for k_folds = 1. + * @type {number} + * @memberof AnalyzeRequest + */ + num_analysis_samples?: number; + /** + * Optional. Number of samples to use for analysis. The rest will be randomly held-out and not included in calculations. + * @type {number} + * @memberof AnalyzeRequest + */ + analysis_sub_model_size?: number; + /** + * Optional flag, when true uses deviations for LK metric in queries. + * @type {boolean} + * @memberof AnalyzeRequest + */ + use_deviations?: boolean; + /** + * Compute and use inverse of residuals as feature weights. + * @type {boolean} + * @memberof AnalyzeRequest + */ + inverse_residuals_as_weights?: boolean; + /** + * Optional. When True, will scale influence weights by each case's `weight_feature` weight. + * @type {boolean} + * @memberof AnalyzeRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally + * managed case weight. + * @type {string} + * @memberof AnalyzeRequest + */ + weight_feature?: string; + /** + * Additional experimental analyze parameters. + * @type {{ [key: string]: any; }} + * @memberof AnalyzeRequest + */ + experimental_options?: { [key: string]: any }; +} + +/** + * @export + * @enum {string} + */ +export type AnalyzeRequestTargetedModelEnum = "single_targeted" | "omni_targeted" | "targetless"; + +/** + * Check if a given object implements the AnalyzeRequest interface. + */ +export function instanceOfAnalyzeRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function AnalyzeRequestFromJSON(json: any): AnalyzeRequest { + return AnalyzeRequestFromJSONTyped(json, false); +} + +export function AnalyzeRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): AnalyzeRequest { + if (json === undefined || json === null) { + return json; + } + return { + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + context_features: !exists(json, "context_features") ? undefined : json["context_features"], + k_folds: !exists(json, "k_folds") ? undefined : json["k_folds"], + num_samples: !exists(json, "num_samples") ? undefined : json["num_samples"], + dt_values: !exists(json, "dt_values") ? undefined : json["dt_values"], + k_values: !exists(json, "k_values") ? undefined : json["k_values"], + p_values: !exists(json, "p_values") ? undefined : json["p_values"], + bypass_hyperparameter_analysis: !exists(json, "bypass_hyperparameter_analysis") + ? undefined + : json["bypass_hyperparameter_analysis"], + bypass_calculate_feature_residuals: !exists(json, "bypass_calculate_feature_residuals") + ? undefined + : json["bypass_calculate_feature_residuals"], + bypass_calculate_feature_weights: !exists(json, "bypass_calculate_feature_weights") + ? undefined + : json["bypass_calculate_feature_weights"], + targeted_model: !exists(json, "targeted_model") ? undefined : json["targeted_model"], + num_analysis_samples: !exists(json, "num_analysis_samples") ? undefined : json["num_analysis_samples"], + analysis_sub_model_size: !exists(json, "analysis_sub_model_size") ? undefined : json["analysis_sub_model_size"], + use_deviations: !exists(json, "use_deviations") ? undefined : json["use_deviations"], + inverse_residuals_as_weights: !exists(json, "inverse_residuals_as_weights") + ? undefined + : json["inverse_residuals_as_weights"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + experimental_options: !exists(json, "experimental_options") ? undefined : json["experimental_options"], + }; +} + +export function AnalyzeRequestToJSON(value?: AnalyzeRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_features: value.action_features, + context_features: value.context_features, + k_folds: value.k_folds, + num_samples: value.num_samples, + dt_values: value.dt_values, + k_values: value.k_values, + p_values: value.p_values, + bypass_hyperparameter_analysis: value.bypass_hyperparameter_analysis, + bypass_calculate_feature_residuals: value.bypass_calculate_feature_residuals, + bypass_calculate_feature_weights: value.bypass_calculate_feature_weights, + targeted_model: value.targeted_model, + num_analysis_samples: value.num_analysis_samples, + analysis_sub_model_size: value.analysis_sub_model_size, + use_deviations: value.use_deviations, + inverse_residuals_as_weights: value.inverse_residuals_as_weights, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + experimental_options: value.experimental_options, + }; +} diff --git a/src/types/models/ApiVersion.ts b/src/types/models/ApiVersion.ts new file mode 100644 index 0000000..cccd4a5 --- /dev/null +++ b/src/types/models/ApiVersion.ts @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * API version information. + * @export + * @interface ApiVersion + */ +export interface ApiVersion { + /** + * The API version. + * @type {string} + * @memberof ApiVersion + */ + api?: string; + /** + * The version of the locally installed client. + * @type {string} + * @memberof ApiVersion + */ + client?: string; +} + +/** + * Check if a given object implements the ApiVersion interface. + */ +export function instanceOfApiVersion(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ApiVersionFromJSON(json: any): ApiVersion { + return ApiVersionFromJSONTyped(json, false); +} + +export function ApiVersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVersion { + if (json === undefined || json === null) { + return json; + } + return { + api: !exists(json, "api") ? undefined : json["api"], + client: !exists(json, "client") ? undefined : json["client"], + }; +} + +export function ApiVersionToJSON(value?: ApiVersion | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + api: value.api, + client: value.client, + }; +} diff --git a/src/types/models/AppendToSeriesStoreRequest.ts b/src/types/models/AppendToSeriesStoreRequest.ts new file mode 100644 index 0000000..2af41a4 --- /dev/null +++ b/src/types/models/AppendToSeriesStoreRequest.ts @@ -0,0 +1,71 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +/** + * The body of an append to series store request. + * @export + * @interface AppendToSeriesStoreRequest + */ +export interface AppendToSeriesStoreRequest { + /** + * The name of the series store to append to. + * @type {string} + * @memberof AppendToSeriesStoreRequest + */ + series: string; + /** + * A 2D array of context values. + * @type {Array>} + * @memberof AppendToSeriesStoreRequest + */ + contexts: Array>; + /** + * The context feature names. + * @type {Array} + * @memberof AppendToSeriesStoreRequest + */ + context_features: Array; +} + +/** + * Check if a given object implements the AppendToSeriesStoreRequest interface. + */ +export function instanceOfAppendToSeriesStoreRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "series" in value; + isInstance = isInstance && "contexts" in value; + isInstance = isInstance && "context_features" in value; + + return isInstance; +} + +export function AppendToSeriesStoreRequestFromJSON(json: any): AppendToSeriesStoreRequest { + return AppendToSeriesStoreRequestFromJSONTyped(json, false); +} + +export function AppendToSeriesStoreRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): AppendToSeriesStoreRequest { + if (json === undefined || json === null) { + return json; + } + return { + series: json["series"], + contexts: json["contexts"], + context_features: json["context_features"], + }; +} + +export function AppendToSeriesStoreRequestToJSON(value?: AppendToSeriesStoreRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + series: value.series, + contexts: value.contexts, + context_features: value.context_features, + }; +} diff --git a/src/types/models/AutoAblationParams.ts b/src/types/models/AutoAblationParams.ts new file mode 100644 index 0000000..16ebfd8 --- /dev/null +++ b/src/types/models/AutoAblationParams.ts @@ -0,0 +1,138 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface AutoAblationParams + */ +export interface AutoAblationParams { + /** + * When true, auto ablation is enabled. + * @type {boolean} + * @memberof AutoAblationParams + */ + auto_ablation_enabled?: boolean; + /** + * The name of the weight feature used when ablating. + * @type {string} + * @memberof AutoAblationParams + */ + auto_ablation_weight_feature?: string; + /** + * The minimum number of cases at which the model should. + * @type {number} + * @memberof AutoAblationParams + */ + minimum_model_size?: number; + /** + * The influence weight entropy quantile that a case must be beneath in order to be trained. + * @type {number} + * @memberof AutoAblationParams + */ + influence_weight_entropy_threshold?: number; + /** + * A list of feature names for which cases will be ablated if the feature prediction equals the case value. + * @type {Array} + * @memberof AutoAblationParams + */ + exact_prediction_features?: Array; + /** + * A map of feature names to tuples of [MIN, MAX] for which cases will be ablated if the feature prediction is within (case value - MIN, case_value + MAX). + * @type {{ [key: string]: Array; }} + * @memberof AutoAblationParams + */ + tolerance_prediction_threshold_map?: { [key: string]: Array }; + /** + * A map of feature names to relative percentages for which cases will be ablated if the feature prediction is within the relative error of the case value. + * @type {{ [key: string]: number; }} + * @memberof AutoAblationParams + */ + relative_prediction_threshold_map?: { [key: string]: number }; + /** + * A list of feature names for which cases will be ablated if the feature prediction is within the residual of the case value. + * @type {Array} + * @memberof AutoAblationParams + */ + residual_prediction_features?: Array; + /** + * The conviction value below which cases will be ablated. + * @type {number} + * @memberof AutoAblationParams + */ + conviction_upper_threshold?: number; + /** + * The conviction value above which cases will be ablated. + * @type {number} + * @memberof AutoAblationParams + */ + conviction_lower_threshold?: number; +} + +/** + * Check if a given object implements the AutoAblationParams interface. + */ +export function instanceOfAutoAblationParams(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function AutoAblationParamsFromJSON(json: any): AutoAblationParams { + return AutoAblationParamsFromJSONTyped(json, false); +} + +export function AutoAblationParamsFromJSONTyped(json: any, ignoreDiscriminator: boolean): AutoAblationParams { + if (json === undefined || json === null) { + return json; + } + return { + auto_ablation_enabled: !exists(json, "auto_ablation_enabled") ? undefined : json["auto_ablation_enabled"], + auto_ablation_weight_feature: !exists(json, "auto_ablation_weight_feature") + ? undefined + : json["auto_ablation_weight_feature"], + minimum_model_size: !exists(json, "minimum_model_size") ? undefined : json["minimum_model_size"], + influence_weight_entropy_threshold: !exists(json, "influence_weight_entropy_threshold") + ? undefined + : json["influence_weight_entropy_threshold"], + exact_prediction_features: !exists(json, "exact_prediction_features") + ? undefined + : json["exact_prediction_features"], + tolerance_prediction_threshold_map: !exists(json, "tolerance_prediction_threshold_map") + ? undefined + : json["tolerance_prediction_threshold_map"], + relative_prediction_threshold_map: !exists(json, "relative_prediction_threshold_map") + ? undefined + : json["relative_prediction_threshold_map"], + residual_prediction_features: !exists(json, "residual_prediction_features") + ? undefined + : json["residual_prediction_features"], + conviction_upper_threshold: !exists(json, "conviction_upper_threshold") + ? undefined + : json["conviction_upper_threshold"], + conviction_lower_threshold: !exists(json, "conviction_lower_threshold") + ? undefined + : json["conviction_lower_threshold"], + }; +} + +export function AutoAblationParamsToJSON(value?: AutoAblationParams | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + auto_ablation_enabled: value.auto_ablation_enabled, + auto_ablation_weight_feature: value.auto_ablation_weight_feature, + minimum_model_size: value.minimum_model_size, + influence_weight_entropy_threshold: value.influence_weight_entropy_threshold, + exact_prediction_features: value.exact_prediction_features, + tolerance_prediction_threshold_map: value.tolerance_prediction_threshold_map, + relative_prediction_threshold_map: value.relative_prediction_threshold_map, + residual_prediction_features: value.residual_prediction_features, + conviction_upper_threshold: value.conviction_upper_threshold, + conviction_lower_threshold: value.conviction_lower_threshold, + }; +} diff --git a/src/types/models/BaseReactRequest.ts b/src/types/models/BaseReactRequest.ts new file mode 100644 index 0000000..c500231 --- /dev/null +++ b/src/types/models/BaseReactRequest.ts @@ -0,0 +1,246 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists, mapValues } from "../runtime"; +import type { FeatureBounds } from "./FeatureBounds"; +import { FeatureBoundsFromJSON, FeatureBoundsToJSON } from "./FeatureBounds"; +import type { ReactDetails } from "./ReactDetails"; +import { ReactDetailsFromJSON, ReactDetailsToJSON } from "./ReactDetails"; + +/** + * Base parameters that apply to react and react series operations. + * @export + * @interface BaseReactRequest + */ +export interface BaseReactRequest { + /** + * A 2D array of context values. + * @type {Array>} + * @memberof BaseReactRequest + */ + contexts?: Array>; + /** + * One or more values for action features, if specified will only return the specified explanation + * details for the given actions. + * @type {Array>} + * @memberof BaseReactRequest + */ + actions?: Array>; + /** + * If set to true, assumes provided categorical (nominal or ordinal) feature values have already been substituted. + * @type {boolean} + * @memberof BaseReactRequest + */ + input_is_substituted?: boolean; + /** + * Only applicable if a substitution value map has been set. If set to false, will not substitute categorical feature values. + * @type {boolean} + * @memberof BaseReactRequest + */ + substitute_output?: boolean; + /** + * + * @type {ReactDetails} + * @memberof BaseReactRequest + */ + details?: ReactDetails; + /** + * The context features to use for this reaction. + * @type {Array} + * @memberof BaseReactRequest + */ + context_features?: Array; + /** + * The action features to use for this reaction. + * @type {Array} + * @memberof BaseReactRequest + */ + action_features?: Array; + /** + * A list of feature names whose values should be computed from the provided context in the specified order. + * + * Note: Relies on the features' "derived_feature_code" attribute to compute the values. If "derived_feature_code" + * attribute is undefined or references non-0 feature indices, the derived value will be null. + * @type {Array} + * @memberof BaseReactRequest + */ + derived_context_features?: Array; + /** + * A list of feature names whose values should be computed after reaction from the resulting case prior to output, in the specified order. + * + * Note: Relies on the features' "derived_feature_code" attribute to compute the values. If "derived_feature_code" + * attribute is undefined or references non-0 feature indices, the derived value will be null. + * @type {Array} + * @memberof BaseReactRequest + */ + derived_action_features?: Array; + /** + * If specified will execute a generative react. If not specified will executed a discriminative react. Conviction is the ratio of expected surprisal to generated surprisal for each feature generated, values are in the range of (0,infinity]. + * @type {number} + * @memberof BaseReactRequest + */ + desired_conviction?: number; + /** + * For generative reacts only. If true, excludes features which have a subtype in their feature attributes from the uniqueness check performed when generate_new_cases is "always". + * @type {boolean} + * @memberof BaseReactRequest + */ + exclude_novel_nominals_from_uniqueness_check?: boolean; + /** + * For generative reacts only. If false uses model feature residuals, if true recalculates regional model residuals. + * @type {boolean} + * @memberof BaseReactRequest + */ + use_regional_model_residuals?: boolean; + /** + * For generative reacts only. + * @type {{ [key: string]: FeatureBounds; }} + * @memberof BaseReactRequest + */ + feature_bounds_map?: { [key: string]: FeatureBounds }; + /** + * Control whether generated cases can be those that already exist in the model. This parameter takes in a string that could be one of the following: + * a. "attempt": attempts to generate new cases and if its not possible to generate a new case, it might generate cases in "no" mode (see point c.) + * b. "always": always generates new cases and if its not possible to generate a new case, it returns nulls. + * c. "no": generates data based on the `desired_conviction` specified and the generated data is not guaranteed to be a new case (that is, a case not found in original dataset.) + * @type {string} + * @memberof BaseReactRequest + */ + generate_new_cases?: BaseReactRequestGenerateNewCasesEnum; + /** + * List of features that will preserve their values from the case specified by `case_indices`, appending and overwriting the specified contexts as necessary. For generative reacts, if `case_indices` isn't specified will preserve feature values of a random case. + * @type {Array} + * @memberof BaseReactRequest + */ + preserve_feature_values?: Array; + /** + * The privacy distance criteria for generated new cases. + * @type {string} + * @memberof BaseReactRequest + */ + new_case_threshold?: BaseReactRequestNewCaseThresholdEnum; + /** + * List of tuples, of session id and index, where index is the original 0-based index of the case as it was trained into the session. If this case does not exist, discriminative react outputs null, generative react ignores it. + * @type {Array>} + * @memberof BaseReactRequest + */ + case_indices?: Array>; + /** + * If set to True and specified along with case_indices, each individual react will respectively ignore the corresponding case specified by case_indices by leaving it out. + * @type {boolean} + * @memberof BaseReactRequest + */ + leave_case_out?: boolean; + /** + * For generative reacts only. Features will be generated in the same order as provided in the 'action_features' parameter. + * @type {boolean} + * @memberof BaseReactRequest + */ + ordered_by_specified_features?: boolean; + /** + * If set to True will scale influence weights by each case's weight_feature weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof BaseReactRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally + * managed case weight. + * @type {string} + * @memberof BaseReactRequest + */ + weight_feature?: string; +} + +/** + * @export + * @enum {string} + */ +export type BaseReactRequestGenerateNewCasesEnum = "attempt" | "always" | "no"; +/** + * @export + * @enum {string} + */ +export type BaseReactRequestNewCaseThresholdEnum = "min" | "max" | "most_similar"; + +/** + * Check if a given object implements the BaseReactRequest interface. + */ +export function instanceOfBaseReactRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function BaseReactRequestFromJSON(json: any): BaseReactRequest { + return BaseReactRequestFromJSONTyped(json, false); +} + +export function BaseReactRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): BaseReactRequest { + if (json === undefined || json === null) { + return json; + } + return { + contexts: !exists(json, "contexts") ? undefined : json["contexts"], + actions: !exists(json, "actions") ? undefined : json["actions"], + input_is_substituted: !exists(json, "input_is_substituted") ? undefined : json["input_is_substituted"], + substitute_output: !exists(json, "substitute_output") ? undefined : json["substitute_output"], + details: !exists(json, "details") ? undefined : ReactDetailsFromJSON(json["details"]), + context_features: !exists(json, "context_features") ? undefined : json["context_features"], + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + derived_context_features: !exists(json, "derived_context_features") ? undefined : json["derived_context_features"], + derived_action_features: !exists(json, "derived_action_features") ? undefined : json["derived_action_features"], + desired_conviction: !exists(json, "desired_conviction") ? undefined : json["desired_conviction"], + exclude_novel_nominals_from_uniqueness_check: !exists(json, "exclude_novel_nominals_from_uniqueness_check") + ? undefined + : json["exclude_novel_nominals_from_uniqueness_check"], + use_regional_model_residuals: !exists(json, "use_regional_model_residuals") + ? undefined + : json["use_regional_model_residuals"], + feature_bounds_map: !exists(json, "feature_bounds_map") + ? undefined + : mapValues(json["feature_bounds_map"], FeatureBoundsFromJSON), + generate_new_cases: !exists(json, "generate_new_cases") ? undefined : json["generate_new_cases"], + preserve_feature_values: !exists(json, "preserve_feature_values") ? undefined : json["preserve_feature_values"], + new_case_threshold: !exists(json, "new_case_threshold") ? undefined : json["new_case_threshold"], + case_indices: !exists(json, "case_indices") ? undefined : json["case_indices"], + leave_case_out: !exists(json, "leave_case_out") ? undefined : json["leave_case_out"], + ordered_by_specified_features: !exists(json, "ordered_by_specified_features") + ? undefined + : json["ordered_by_specified_features"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + }; +} + +export function BaseReactRequestToJSON(value?: BaseReactRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + contexts: value.contexts, + actions: value.actions, + input_is_substituted: value.input_is_substituted, + substitute_output: value.substitute_output, + details: ReactDetailsToJSON(value.details), + context_features: value.context_features, + action_features: value.action_features, + derived_context_features: value.derived_context_features, + derived_action_features: value.derived_action_features, + desired_conviction: value.desired_conviction, + exclude_novel_nominals_from_uniqueness_check: value.exclude_novel_nominals_from_uniqueness_check, + use_regional_model_residuals: value.use_regional_model_residuals, + feature_bounds_map: + value.feature_bounds_map === undefined ? undefined : mapValues(value.feature_bounds_map, FeatureBoundsToJSON), + generate_new_cases: value.generate_new_cases, + preserve_feature_values: value.preserve_feature_values, + new_case_threshold: value.new_case_threshold, + case_indices: value.case_indices, + leave_case_out: value.leave_case_out, + ordered_by_specified_features: value.ordered_by_specified_features, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + }; +} diff --git a/src/types/models/BeginSessionRequest.ts b/src/types/models/BeginSessionRequest.ts new file mode 100644 index 0000000..7b11e3d --- /dev/null +++ b/src/types/models/BeginSessionRequest.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface BeginSessionRequest + */ +export interface BeginSessionRequest { + /** + * The name given to the session. + * @type {string} + * @memberof BeginSessionRequest + */ + name: string; + /** + * Any key-value pair to store custom metadata for the session. + * @type {{ [key: string]: any; }} + * @memberof BeginSessionRequest + */ + metadata?: { [key: string]: any }; +} + +/** + * Check if a given object implements the BeginSessionRequest interface. + */ +export function instanceOfBeginSessionRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function BeginSessionRequestFromJSON(json: any): BeginSessionRequest { + return BeginSessionRequestFromJSONTyped(json, false); +} + +export function BeginSessionRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): BeginSessionRequest { + if (json === undefined || json === null) { + return json; + } + return { + name: json["name"], + metadata: !exists(json, "metadata") ? undefined : json["metadata"], + }; +} + +export function BeginSessionRequestToJSON(value?: BeginSessionRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + name: value.name, + metadata: value.metadata, + }; +} diff --git a/src/types/models/BooleanType.ts b/src/types/models/BooleanType.ts new file mode 100644 index 0000000..27e0e4e --- /dev/null +++ b/src/types/models/BooleanType.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +/** + * + * @export + * @interface BooleanType + */ +export interface BooleanType { + /** + * The name of the data type. + * @type {string} + * @memberof BooleanType + */ + data_type: string; +} + +/** + * Check if a given object implements the BooleanType interface. + */ +export function instanceOfBooleanType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function BooleanTypeFromJSON(json: any): BooleanType { + return BooleanTypeFromJSONTyped(json, false); +} + +export function BooleanTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): BooleanType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + }; +} + +export function BooleanTypeToJSON(value?: BooleanType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + }; +} diff --git a/src/types/models/CaseCountResponse.ts b/src/types/models/CaseCountResponse.ts new file mode 100644 index 0000000..8842ad0 --- /dev/null +++ b/src/types/models/CaseCountResponse.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface CaseCountResponse + */ +export interface CaseCountResponse { + /** + * The number of cases. + * @type {number} + * @memberof CaseCountResponse + */ + count?: number; +} + +/** + * Check if a given object implements the CaseCountResponse interface. + */ +export function instanceOfCaseCountResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function CaseCountResponseFromJSON(json: any): CaseCountResponse { + return CaseCountResponseFromJSONTyped(json, false); +} + +export function CaseCountResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CaseCountResponse { + if (json === undefined || json === null) { + return json; + } + return { + count: !exists(json, "count") ? undefined : json["count"], + }; +} + +export function CaseCountResponseToJSON(value?: CaseCountResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + count: value.count, + }; +} diff --git a/src/types/models/CaseEditRequest.ts b/src/types/models/CaseEditRequest.ts new file mode 100644 index 0000000..a8764fd --- /dev/null +++ b/src/types/models/CaseEditRequest.ts @@ -0,0 +1,111 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface CaseEditRequest + */ +export interface CaseEditRequest { + /** + * The names of the features to edit. + * @type {Array} + * @memberof CaseEditRequest + */ + features?: Array; + /** + * The feature values to edit the case with. + * @type {Array} + * @memberof CaseEditRequest + */ + feature_values?: Array; + /** + * List of tuples containing the session id and index, where index is the original 0-based index of the case as + * it was trained into the session. This explicitly specifies the cases to edit. When specified, `condition` + * and `condition_session` are ignored. + * @type {Array>} + * @memberof CaseEditRequest + */ + case_indices?: Array>; + /** + * A condition map to select which cases to edit. The dictionary keys are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * @type {{ [key: string]: any; }} + * @memberof CaseEditRequest + */ + condition?: { [key: string]: any }; + /** + * If specified, ignores the condition and operates on cases for the specified session id. + * @type {string} + * @memberof CaseEditRequest + */ + condition_session?: string; + /** + * The maximum number of cases to edit. If not specified, the limit will be k cases if precision is + * "similar", or no limit if precision is "exact". + * @type {number} + * @memberof CaseEditRequest + */ + num_cases?: number; + /** + * Exact matching or fuzzy matching. + * @type {string} + * @memberof CaseEditRequest + */ + precision?: CaseEditRequestPrecisionEnum; +} + +/** + * @export + * @enum {string} + */ +export type CaseEditRequestPrecisionEnum = "exact" | "similar"; + +/** + * Check if a given object implements the CaseEditRequest interface. + */ +export function instanceOfCaseEditRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function CaseEditRequestFromJSON(json: any): CaseEditRequest { + return CaseEditRequestFromJSONTyped(json, false); +} + +export function CaseEditRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CaseEditRequest { + if (json === undefined || json === null) { + return json; + } + return { + features: !exists(json, "features") ? undefined : json["features"], + feature_values: !exists(json, "feature_values") ? undefined : json["feature_values"], + case_indices: !exists(json, "case_indices") ? undefined : json["case_indices"], + condition: !exists(json, "condition") ? undefined : json["condition"], + condition_session: !exists(json, "condition_session") ? undefined : json["condition_session"], + num_cases: !exists(json, "num_cases") ? undefined : json["num_cases"], + precision: !exists(json, "precision") ? undefined : json["precision"], + }; +} + +export function CaseEditRequestToJSON(value?: CaseEditRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features: value.features, + feature_values: value.feature_values, + case_indices: value.case_indices, + condition: value.condition, + condition_session: value.condition_session, + num_cases: value.num_cases, + precision: value.precision, + }; +} diff --git a/src/types/models/CaseRemoveRequest.ts b/src/types/models/CaseRemoveRequest.ts new file mode 100644 index 0000000..fa0212c --- /dev/null +++ b/src/types/models/CaseRemoveRequest.ts @@ -0,0 +1,106 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface CaseRemoveRequest + */ +export interface CaseRemoveRequest { + /** + * The number of cases to move or remove. This is ignored if case_indices is specified. + * @type {number} + * @memberof CaseRemoveRequest + */ + num_cases: number; + /** + * List of tuples containing the session id and index, where index is the original 0-based index of the case as + * it was trained into the session. This explicitly specifies the cases to retrieve. + * @type {Array>} + * @memberof CaseRemoveRequest + */ + case_indices?: Array>; + /** + * The condition map to select the cases to remove that meet all the provided conditions. The dictionary keys + * are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * This is ignored if case_indices is specified. + * @type {{ [key: string]: any; }} + * @memberof CaseRemoveRequest + */ + condition?: { [key: string]: any }; + /** + * If specified, ignores the condition and operates on cases for the specified session id. This is ignored if case_indices is specified. + * @type {string} + * @memberof CaseRemoveRequest + */ + condition_session?: string; + /** + * When specified, will distribute the removed cases' weights from this feature into their neighbors. + * @type {string} + * @memberof CaseRemoveRequest + */ + distribute_weight_feature?: string; + /** + * Exact matching or fuzzy matching. This is ignored if case_indices is specified. + * @type {string} + * @memberof CaseRemoveRequest + */ + precision?: CaseRemoveRequestPrecisionEnum; +} + +/** + * @export + * @enum {string} + */ +export type CaseRemoveRequestPrecisionEnum = "exact" | "similar"; + +/** + * Check if a given object implements the CaseRemoveRequest interface. + */ +export function instanceOfCaseRemoveRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "num_cases" in value; + + return isInstance; +} + +export function CaseRemoveRequestFromJSON(json: any): CaseRemoveRequest { + return CaseRemoveRequestFromJSONTyped(json, false); +} + +export function CaseRemoveRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CaseRemoveRequest { + if (json === undefined || json === null) { + return json; + } + return { + num_cases: json["num_cases"], + case_indices: !exists(json, "case_indices") ? undefined : json["case_indices"], + condition: !exists(json, "condition") ? undefined : json["condition"], + condition_session: !exists(json, "condition_session") ? undefined : json["condition_session"], + distribute_weight_feature: !exists(json, "distribute_weight_feature") + ? undefined + : json["distribute_weight_feature"], + precision: !exists(json, "precision") ? undefined : json["precision"], + }; +} + +export function CaseRemoveRequestToJSON(value?: CaseRemoveRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + num_cases: value.num_cases, + case_indices: value.case_indices, + condition: value.condition, + condition_session: value.condition_session, + distribute_weight_feature: value.distribute_weight_feature, + precision: value.precision, + }; +} diff --git a/src/types/models/Cases.ts b/src/types/models/Cases.ts new file mode 100644 index 0000000..e51c89f --- /dev/null +++ b/src/types/models/Cases.ts @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * A matrix of data. + * @export + * @interface Cases + */ +export interface Cases { + /** + * The feature names that correspond to the case columns. + * @type {Array} + * @memberof Cases + */ + features?: Array; + /** + * A 2D array of case values. + * @type {Array>} + * @memberof Cases + */ + cases?: Array>; +} + +/** + * Check if a given object implements the Cases interface. + */ +export function instanceOfCases(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function CasesFromJSON(json: any): Cases { + return CasesFromJSONTyped(json, false); +} + +export function CasesFromJSONTyped(json: any, ignoreDiscriminator: boolean): Cases { + if (json === undefined || json === null) { + return json; + } + return { + features: !exists(json, "features") ? undefined : json["features"], + cases: !exists(json, "cases") ? undefined : json["cases"], + }; +} + +export function CasesToJSON(value?: Cases | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features: value.features, + cases: value.cases, + }; +} diff --git a/src/types/models/CasesRequest.ts b/src/types/models/CasesRequest.ts new file mode 100644 index 0000000..26a3165 --- /dev/null +++ b/src/types/models/CasesRequest.ts @@ -0,0 +1,113 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of a case request. + * @export + * @interface CasesRequest + */ +export interface CasesRequest { + /** + * Features to return. If not specified, the trainee's default feature + * set will be used. + * @type {Array} + * @memberof CasesRequest + */ + features?: Array; + /** + * If specified, cases for this specific session will be returned in + * the order they were trained. + * @type {string} + * @memberof CasesRequest + */ + session?: string; + /** + * If true, the response will include the list of imputed features. + * @type {boolean} + * @memberof CasesRequest + */ + indicate_imputed?: boolean; + /** + * List of tuples containing the session id and index, where index is the original 0-based index of the case as + * it was trained into the session. This explicitly specifies the cases to retrieve. + * @type {Array>} + * @memberof CasesRequest + */ + case_indices?: Array>; + /** + * The condition map to select the cases to remove that meet all the provided conditions. The dictionary keys + * are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * @type {{ [key: string]: any; }} + * @memberof CasesRequest + */ + condition?: { [key: string]: any }; + /** + * The maximum number of cases to retrieve. If not specified, the limit will be k cases if precision is "similar", or + * no limit if precision is "exact". + * @type {number} + * @memberof CasesRequest + */ + num_cases?: number; + /** + * Exact matching or fuzzy matching. + * @type {string} + * @memberof CasesRequest + */ + precision?: CasesRequestPrecisionEnum; +} + +/** + * @export + * @enum {string} + */ +export type CasesRequestPrecisionEnum = "exact" | "similar"; + +/** + * Check if a given object implements the CasesRequest interface. + */ +export function instanceOfCasesRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function CasesRequestFromJSON(json: any): CasesRequest { + return CasesRequestFromJSONTyped(json, false); +} + +export function CasesRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CasesRequest { + if (json === undefined || json === null) { + return json; + } + return { + features: !exists(json, "features") ? undefined : json["features"], + session: !exists(json, "session") ? undefined : json["session"], + indicate_imputed: !exists(json, "indicate_imputed") ? undefined : json["indicate_imputed"], + case_indices: !exists(json, "case_indices") ? undefined : json["case_indices"], + condition: !exists(json, "condition") ? undefined : json["condition"], + num_cases: !exists(json, "num_cases") ? undefined : json["num_cases"], + precision: !exists(json, "precision") ? undefined : json["precision"], + }; +} + +export function CasesRequestToJSON(value?: CasesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features: value.features, + session: value.session, + indicate_imputed: value.indicate_imputed, + case_indices: value.case_indices, + condition: value.condition, + num_cases: value.num_cases, + precision: value.precision, + }; +} diff --git a/src/types/models/DateType.ts b/src/types/models/DateType.ts new file mode 100644 index 0000000..13db251 --- /dev/null +++ b/src/types/models/DateType.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +/** + * + * @export + * @interface DateType + */ +export interface DateType { + /** + * The name of the data type. + * @type {string} + * @memberof DateType + */ + data_type: string; +} + +/** + * Check if a given object implements the DateType interface. + */ +export function instanceOfDateType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function DateTypeFromJSON(json: any): DateType { + return DateTypeFromJSONTyped(json, false); +} + +export function DateTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): DateType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + }; +} + +export function DateTypeToJSON(value?: DateType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + }; +} diff --git a/src/types/models/DatetimeType.ts b/src/types/models/DatetimeType.ts new file mode 100644 index 0000000..7c3da3f --- /dev/null +++ b/src/types/models/DatetimeType.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface DatetimeType + */ +export interface DatetimeType { + /** + * The name of the data type. + * @type {string} + * @memberof DatetimeType + */ + data_type: string; + /** + * The standardized timezone name. + * @type {string} + * @memberof DatetimeType + */ + timezone?: string | null; +} + +/** + * Check if a given object implements the DatetimeType interface. + */ +export function instanceOfDatetimeType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function DatetimeTypeFromJSON(json: any): DatetimeType { + return DatetimeTypeFromJSONTyped(json, false); +} + +export function DatetimeTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): DatetimeType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + timezone: !exists(json, "timezone") ? undefined : json["timezone"], + }; +} + +export function DatetimeTypeToJSON(value?: DatetimeType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + timezone: value.timezone, + }; +} diff --git a/src/types/models/DerivationParameters.ts b/src/types/models/DerivationParameters.ts new file mode 100644 index 0000000..63dc5b8 --- /dev/null +++ b/src/types/models/DerivationParameters.ts @@ -0,0 +1,98 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface DerivationParameters + */ +export interface DerivationParameters { + /** + * The number of cases used for the local model. + * @type {number} + * @memberof DerivationParameters + */ + k?: number; + /** + * The parameter for the Lebesgue space. + * @type {number} + * @memberof DerivationParameters + */ + p?: number; + /** + * The value used as an exponent to convert distances to raw influence weights. + * @type {number} + * @memberof DerivationParameters + */ + distance_transform?: number; + /** + * The weights for each feature used in the distance metric. + * @type {{ [key: string]: number; }} + * @memberof DerivationParameters + */ + feature_weights?: { [key: string]: number }; + /** + * The deviations for each feature used in the distance metric. + * @type {{ [key: string]: number; }} + * @memberof DerivationParameters + */ + feature_deviations?: { [key: string]: number }; + /** + * The number of unique values for each nominal feature. + * @type {{ [key: string]: number; }} + * @memberof DerivationParameters + */ + nominal_class_counts?: { [key: string]: number }; + /** + * A flag indicating if feature weights were derived using inverse residual weighting. + * @type {boolean} + * @memberof DerivationParameters + */ + use_irw?: boolean; +} + +/** + * Check if a given object implements the DerivationParameters interface. + */ +export function instanceOfDerivationParameters(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function DerivationParametersFromJSON(json: any): DerivationParameters { + return DerivationParametersFromJSONTyped(json, false); +} + +export function DerivationParametersFromJSONTyped(json: any, ignoreDiscriminator: boolean): DerivationParameters { + if (json === undefined || json === null) { + return json; + } + return { + k: !exists(json, "k") ? undefined : json["k"], + p: !exists(json, "p") ? undefined : json["p"], + distance_transform: !exists(json, "distance_transform") ? undefined : json["distance_transform"], + feature_weights: !exists(json, "feature_weights") ? undefined : json["feature_weights"], + feature_deviations: !exists(json, "feature_deviations") ? undefined : json["feature_deviations"], + nominal_class_counts: !exists(json, "nominal_class_counts") ? undefined : json["nominal_class_counts"], + use_irw: !exists(json, "use_irw") ? undefined : json["use_irw"], + }; +} + +export function DerivationParametersToJSON(value?: DerivationParameters | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + k: value.k, + p: value.p, + distance_transform: value.distance_transform, + feature_weights: value.feature_weights, + feature_deviations: value.feature_deviations, + nominal_class_counts: value.nominal_class_counts, + use_irw: value.use_irw, + }; +} diff --git a/src/types/models/DestructTraineeResponse.ts b/src/types/models/DestructTraineeResponse.ts new file mode 100644 index 0000000..f5ef3e5 --- /dev/null +++ b/src/types/models/DestructTraineeResponse.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Result of a destruct trainee operation. + * @export + * @interface DestructTraineeResponse + */ +export interface DestructTraineeResponse { + /** + * + * @type {string} + * @memberof DestructTraineeResponse + */ + message?: string; +} + +/** + * Check if a given object implements the DestructTraineeResponse interface. + */ +export function instanceOfDestructTraineeResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function DestructTraineeResponseFromJSON(json: any): DestructTraineeResponse { + return DestructTraineeResponseFromJSONTyped(json, false); +} + +export function DestructTraineeResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): DestructTraineeResponse { + if (json === undefined || json === null) { + return json; + } + return { + message: !exists(json, "message") ? undefined : json["message"], + }; +} + +export function DestructTraineeResponseToJSON(value?: DestructTraineeResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + message: value.message, + }; +} diff --git a/src/types/models/DetailsResponse.ts b/src/types/models/DetailsResponse.ts new file mode 100644 index 0000000..01f3ed0 --- /dev/null +++ b/src/types/models/DetailsResponse.ts @@ -0,0 +1,417 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { DerivationParameters } from "./DerivationParameters"; +import { DerivationParametersFromJSON, DerivationParametersToJSON } from "./DerivationParameters"; +import type { DetailsResponseDistanceRatioPartsInner } from "./DetailsResponseDistanceRatioPartsInner"; +import { + DetailsResponseDistanceRatioPartsInnerFromJSON, + DetailsResponseDistanceRatioPartsInnerToJSON, +} from "./DetailsResponseDistanceRatioPartsInner"; +import type { DetailsResponseOutlyingFeatureValuesInnerValue } from "./DetailsResponseOutlyingFeatureValuesInnerValue"; + +/** + * + * @export + * @interface DetailsResponse + */ +export interface DetailsResponse { + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + boundary_cases?: Array>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof DetailsResponse + */ + categorical_action_probabilities?: Array<{ [key: string]: any }>; + /** + * + * @type {Array} + * @memberof DetailsResponse + */ + derivation_parameters?: Array; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof DetailsResponse + */ + feature_residuals_full?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof DetailsResponse + */ + feature_residuals_robust?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof DetailsResponse + */ + prediction_stats?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: DetailsResponseOutlyingFeatureValuesInnerValue; }>} + * @memberof DetailsResponse + */ + outlying_feature_values?: Array<{ [key: string]: DetailsResponseOutlyingFeatureValuesInnerValue }>; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + influential_cases?: Array>; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + most_similar_cases?: Array>; + /** + * Observational errors for all features as defined in feature attributes. + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + observational_errors?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + feature_mda_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + feature_mda_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + feature_mda_ex_post_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + feature_mda_ex_post_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + directional_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + directional_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + case_directional_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + case_directional_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + case_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + case_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + case_mda_full?: Array>; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + case_mda_robust?: Array>; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + case_contributions_full?: Array>; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + case_contributions_robust?: Array>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + case_feature_residuals_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + case_feature_residuals_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + local_case_feature_residual_convictions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + local_case_feature_residual_convictions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + global_case_feature_residual_convictions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof DetailsResponse + */ + global_case_feature_residual_convictions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof DetailsResponse + */ + hypothetical_values?: Array<{ [key: string]: any }>; + /** + * + * @type {Array} + * @memberof DetailsResponse + */ + distance_ratio?: Array; + /** + * + * @type {Array} + * @memberof DetailsResponse + */ + distance_ratio_parts?: Array; + /** + * + * @type {Array} + * @memberof DetailsResponse + */ + distance_contribution?: Array; + /** + * + * @type {Array} + * @memberof DetailsResponse + */ + similarity_conviction?: Array; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + most_similar_case_indices?: Array>; + /** + * + * @type {Array} + * @memberof DetailsResponse + */ + generate_attempts?: Array; + /** + * + * @type {Array>} + * @memberof DetailsResponse + */ + series_generate_attempts?: Array>; +} + +/** + * Check if a given object implements the DetailsResponse interface. + */ +export function instanceOfDetailsResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function DetailsResponseFromJSON(json: any): DetailsResponse { + return DetailsResponseFromJSONTyped(json, false); +} + +export function DetailsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): DetailsResponse { + if (json === undefined || json === null) { + return json; + } + return { + boundary_cases: !exists(json, "boundary_cases") ? undefined : json["boundary_cases"], + categorical_action_probabilities: !exists(json, "categorical_action_probabilities") + ? undefined + : json["categorical_action_probabilities"], + derivation_parameters: !exists(json, "derivation_parameters") + ? undefined + : (json["derivation_parameters"] as Array).map(DerivationParametersFromJSON), + feature_residuals_full: !exists(json, "feature_residuals_full") ? undefined : json["feature_residuals_full"], + feature_residuals_robust: !exists(json, "feature_residuals_robust") ? undefined : json["feature_residuals_robust"], + prediction_stats: !exists(json, "prediction_stats") ? undefined : json["prediction_stats"], + outlying_feature_values: !exists(json, "outlying_feature_values") ? undefined : json["outlying_feature_values"], + influential_cases: !exists(json, "influential_cases") ? undefined : json["influential_cases"], + most_similar_cases: !exists(json, "most_similar_cases") ? undefined : json["most_similar_cases"], + observational_errors: !exists(json, "observational_errors") ? undefined : json["observational_errors"], + feature_mda_full: !exists(json, "feature_mda_full") ? undefined : json["feature_mda_full"], + feature_mda_robust: !exists(json, "feature_mda_robust") ? undefined : json["feature_mda_robust"], + feature_mda_ex_post_full: !exists(json, "feature_mda_ex_post_full") ? undefined : json["feature_mda_ex_post_full"], + feature_mda_ex_post_robust: !exists(json, "feature_mda_ex_post_robust") + ? undefined + : json["feature_mda_ex_post_robust"], + directional_feature_contributions_full: !exists(json, "directional_feature_contributions_full") + ? undefined + : json["directional_feature_contributions_full"], + directional_feature_contributions_robust: !exists(json, "directional_feature_contributions_robust") + ? undefined + : json["directional_feature_contributions_robust"], + feature_contributions_full: !exists(json, "feature_contributions_full") + ? undefined + : json["feature_contributions_full"], + feature_contributions_robust: !exists(json, "feature_contributions_robust") + ? undefined + : json["feature_contributions_robust"], + case_directional_feature_contributions_full: !exists(json, "case_directional_feature_contributions_full") + ? undefined + : json["case_directional_feature_contributions_full"], + case_directional_feature_contributions_robust: !exists(json, "case_directional_feature_contributions_robust") + ? undefined + : json["case_directional_feature_contributions_robust"], + case_feature_contributions_full: !exists(json, "case_feature_contributions_full") + ? undefined + : json["case_feature_contributions_full"], + case_feature_contributions_robust: !exists(json, "case_feature_contributions_robust") + ? undefined + : json["case_feature_contributions_robust"], + case_mda_full: !exists(json, "case_mda_full") ? undefined : json["case_mda_full"], + case_mda_robust: !exists(json, "case_mda_robust") ? undefined : json["case_mda_robust"], + case_contributions_full: !exists(json, "case_contributions_full") ? undefined : json["case_contributions_full"], + case_contributions_robust: !exists(json, "case_contributions_robust") + ? undefined + : json["case_contributions_robust"], + case_feature_residuals_full: !exists(json, "case_feature_residuals_full") + ? undefined + : json["case_feature_residuals_full"], + case_feature_residuals_robust: !exists(json, "case_feature_residuals_robust") + ? undefined + : json["case_feature_residuals_robust"], + local_case_feature_residual_convictions_full: !exists(json, "local_case_feature_residual_convictions_full") + ? undefined + : json["local_case_feature_residual_convictions_full"], + local_case_feature_residual_convictions_robust: !exists(json, "local_case_feature_residual_convictions_robust") + ? undefined + : json["local_case_feature_residual_convictions_robust"], + global_case_feature_residual_convictions_full: !exists(json, "global_case_feature_residual_convictions_full") + ? undefined + : json["global_case_feature_residual_convictions_full"], + global_case_feature_residual_convictions_robust: !exists(json, "global_case_feature_residual_convictions_robust") + ? undefined + : json["global_case_feature_residual_convictions_robust"], + hypothetical_values: !exists(json, "hypothetical_values") ? undefined : json["hypothetical_values"], + distance_ratio: !exists(json, "distance_ratio") ? undefined : json["distance_ratio"], + distance_ratio_parts: !exists(json, "distance_ratio_parts") + ? undefined + : (json["distance_ratio_parts"] as Array).map(DetailsResponseDistanceRatioPartsInnerFromJSON), + distance_contribution: !exists(json, "distance_contribution") ? undefined : json["distance_contribution"], + similarity_conviction: !exists(json, "similarity_conviction") ? undefined : json["similarity_conviction"], + most_similar_case_indices: !exists(json, "most_similar_case_indices") + ? undefined + : json["most_similar_case_indices"], + generate_attempts: !exists(json, "generate_attempts") ? undefined : json["generate_attempts"], + series_generate_attempts: !exists(json, "series_generate_attempts") ? undefined : json["series_generate_attempts"], + }; +} + +export function DetailsResponseToJSON(value?: DetailsResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + boundary_cases: value.boundary_cases, + categorical_action_probabilities: value.categorical_action_probabilities, + derivation_parameters: + value.derivation_parameters === undefined + ? undefined + : (value.derivation_parameters as Array).map(DerivationParametersToJSON), + feature_residuals_full: value.feature_residuals_full, + feature_residuals_robust: value.feature_residuals_robust, + prediction_stats: value.prediction_stats, + outlying_feature_values: value.outlying_feature_values, + influential_cases: value.influential_cases, + most_similar_cases: value.most_similar_cases, + observational_errors: value.observational_errors, + feature_mda_full: value.feature_mda_full, + feature_mda_robust: value.feature_mda_robust, + feature_mda_ex_post_full: value.feature_mda_ex_post_full, + feature_mda_ex_post_robust: value.feature_mda_ex_post_robust, + directional_feature_contributions_full: value.directional_feature_contributions_full, + directional_feature_contributions_robust: value.directional_feature_contributions_robust, + feature_contributions_full: value.feature_contributions_full, + feature_contributions_robust: value.feature_contributions_robust, + case_directional_feature_contributions_full: value.case_directional_feature_contributions_full, + case_directional_feature_contributions_robust: value.case_directional_feature_contributions_robust, + case_feature_contributions_full: value.case_feature_contributions_full, + case_feature_contributions_robust: value.case_feature_contributions_robust, + case_mda_full: value.case_mda_full, + case_mda_robust: value.case_mda_robust, + case_contributions_full: value.case_contributions_full, + case_contributions_robust: value.case_contributions_robust, + case_feature_residuals_full: value.case_feature_residuals_full, + case_feature_residuals_robust: value.case_feature_residuals_robust, + local_case_feature_residual_convictions_full: value.local_case_feature_residual_convictions_full, + local_case_feature_residual_convictions_robust: value.local_case_feature_residual_convictions_robust, + global_case_feature_residual_convictions_full: value.global_case_feature_residual_convictions_full, + global_case_feature_residual_convictions_robust: value.global_case_feature_residual_convictions_robust, + hypothetical_values: value.hypothetical_values, + distance_ratio: value.distance_ratio, + distance_ratio_parts: + value.distance_ratio_parts === undefined + ? undefined + : (value.distance_ratio_parts as Array).map(DetailsResponseDistanceRatioPartsInnerToJSON), + distance_contribution: value.distance_contribution, + similarity_conviction: value.similarity_conviction, + most_similar_case_indices: value.most_similar_case_indices, + generate_attempts: value.generate_attempts, + series_generate_attempts: value.series_generate_attempts, + }; +} diff --git a/src/types/models/DetailsResponseDistanceRatioPartsInner.ts b/src/types/models/DetailsResponseDistanceRatioPartsInner.ts new file mode 100644 index 0000000..b8959c4 --- /dev/null +++ b/src/types/models/DetailsResponseDistanceRatioPartsInner.ts @@ -0,0 +1,65 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface DetailsResponseDistanceRatioPartsInner + */ +export interface DetailsResponseDistanceRatioPartsInner { + /** + * + * @type {number} + * @memberof DetailsResponseDistanceRatioPartsInner + */ + local_distance_contribution?: number | null; + /** + * + * @type {number} + * @memberof DetailsResponseDistanceRatioPartsInner + */ + nearest_distance?: number | null; +} + +/** + * Check if a given object implements the DetailsResponseDistanceRatioPartsInner interface. + */ +export function instanceOfDetailsResponseDistanceRatioPartsInner(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function DetailsResponseDistanceRatioPartsInnerFromJSON(json: any): DetailsResponseDistanceRatioPartsInner { + return DetailsResponseDistanceRatioPartsInnerFromJSONTyped(json, false); +} + +export function DetailsResponseDistanceRatioPartsInnerFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DetailsResponseDistanceRatioPartsInner { + if (json === undefined || json === null) { + return json; + } + return { + local_distance_contribution: !exists(json, "local_distance_contribution") + ? undefined + : json["local_distance_contribution"], + nearest_distance: !exists(json, "nearest_distance") ? undefined : json["nearest_distance"], + }; +} + +export function DetailsResponseDistanceRatioPartsInnerToJSON( + value?: DetailsResponseDistanceRatioPartsInner | null, +): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + local_distance_contribution: value.local_distance_contribution, + nearest_distance: value.nearest_distance, + }; +} diff --git a/src/types/models/DetailsResponseOutlyingFeatureValuesInnerValue.ts b/src/types/models/DetailsResponseOutlyingFeatureValuesInnerValue.ts new file mode 100644 index 0000000..662e1b9 --- /dev/null +++ b/src/types/models/DetailsResponseOutlyingFeatureValuesInnerValue.ts @@ -0,0 +1,65 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Feature values from the reaction case that are below the min or above the max value of similar cases that were identified during a prediction. + * @export + * @interface DetailsResponseOutlyingFeatureValuesInnerValue + */ +export interface DetailsResponseOutlyingFeatureValuesInnerValue { + /** + * + * @type {number} + * @memberof DetailsResponseOutlyingFeatureValuesInnerValue + */ + input_case_value?: number; + /** + * + * @type {number} + * @memberof DetailsResponseOutlyingFeatureValuesInnerValue + */ + local_max?: number; +} + +/** + * Check if a given object implements the DetailsResponseOutlyingFeatureValuesInnerValue interface. + */ +export function instanceOfDetailsResponseOutlyingFeatureValuesInnerValue(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function DetailsResponseOutlyingFeatureValuesInnerValueFromJSON( + json: any, +): DetailsResponseOutlyingFeatureValuesInnerValue { + return DetailsResponseOutlyingFeatureValuesInnerValueFromJSONTyped(json, false); +} + +export function DetailsResponseOutlyingFeatureValuesInnerValueFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): DetailsResponseOutlyingFeatureValuesInnerValue { + if (json === undefined || json === null) { + return json; + } + return { + input_case_value: !exists(json, "input_case_value") ? undefined : json["input_case_value"], + local_max: !exists(json, "local_max") ? undefined : json["local_max"], + }; +} + +export function DetailsResponseOutlyingFeatureValuesInnerValueToJSON( + value?: DetailsResponseOutlyingFeatureValuesInnerValue | null, +): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + input_case_value: value.input_case_value, + local_max: value.local_max, + }; +} diff --git a/src/types/models/DistancesRequest.ts b/src/types/models/DistancesRequest.ts new file mode 100644 index 0000000..9839d63 --- /dev/null +++ b/src/types/models/DistancesRequest.ts @@ -0,0 +1,131 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of the distances metric request. + * @export + * @interface DistancesRequest + */ +export interface DistancesRequest { + /** + * List of feature names to use when computing distances. If unspecified uses all features. + * @type {Array} + * @memberof DistancesRequest + */ + features?: Array; + /** + * The action feature. If specified, uses targeted hyperparameters used to predict this `action_feature`, + * otherwise uses targetless hyperparameters. + * @type {string} + * @memberof DistancesRequest + */ + action_feature?: string; + /** + * List of tuples, of session id and index, where index is the original 0-based index of the case as it was + * trained into the session. If specified, returns distances for all of these cases. Ignored if `feature_values` + * is provided. If neither `feature_values` nor `case_indices` is specified, uses full dataset. + * @type {Array>} + * @memberof DistancesRequest + */ + case_indices?: Array>; + /** + * List of values, if specified, returns distances of the local model relative to these values, ignores + * `case_indices` parameter. + * @type {Array} + * @memberof DistancesRequest + */ + feature_values?: Array; + /** + * If set to True, will scale influence weights by each case's `weight_feature` weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof DistancesRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally + * managed case weight. + * @type {string} + * @memberof DistancesRequest + */ + weight_feature?: string; + /** + * The row starting offset. Used for paging of results. + * @type {number} + * @memberof DistancesRequest + */ + row_offset: number; + /** + * The number of rows to include in the page. + * @type {number} + * @memberof DistancesRequest + */ + row_count: number; + /** + * The column starting offset. Used for paging of results. + * @type {number} + * @memberof DistancesRequest + */ + column_offset: number; + /** + * The number of columns to include in the page. + * @type {number} + * @memberof DistancesRequest + */ + column_count: number; +} + +/** + * Check if a given object implements the DistancesRequest interface. + */ +export function instanceOfDistancesRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "row_offset" in value; + isInstance = isInstance && "row_count" in value; + isInstance = isInstance && "column_offset" in value; + isInstance = isInstance && "column_count" in value; + + return isInstance; +} + +export function DistancesRequestFromJSON(json: any): DistancesRequest { + return DistancesRequestFromJSONTyped(json, false); +} + +export function DistancesRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): DistancesRequest { + if (json === undefined || json === null) { + return json; + } + return { + features: !exists(json, "features") ? undefined : json["features"], + action_feature: !exists(json, "action_feature") ? undefined : json["action_feature"], + case_indices: !exists(json, "case_indices") ? undefined : json["case_indices"], + feature_values: !exists(json, "feature_values") ? undefined : json["feature_values"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + row_offset: json["row_offset"], + row_count: json["row_count"], + column_offset: json["column_offset"], + column_count: json["column_count"], + }; +} + +export function DistancesRequestToJSON(value?: DistancesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features: value.features, + action_feature: value.action_feature, + case_indices: value.case_indices, + feature_values: value.feature_values, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + row_offset: value.row_offset, + row_count: value.row_count, + column_offset: value.column_offset, + column_count: value.column_count, + }; +} diff --git a/src/types/models/DistancesResponse.ts b/src/types/models/DistancesResponse.ts new file mode 100644 index 0000000..3e9f666 --- /dev/null +++ b/src/types/models/DistancesResponse.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of the distances metric response. + * @export + * @interface DistancesResponse + */ +export interface DistancesResponse { + /** + * The list of case identifiers corresponding to the distances matrix rows. List of tuples, of session id and + * index, where index is the original 0-based index of the case as it was trained into the session. + * @type {Array>} + * @memberof DistancesResponse + */ + row_case_indices?: Array>; + /** + * The list of case identifiers corresponding to the distances matrix columns. List of tuples, of session id and + * index, where index is the original 0-based index of the case as it was trained into the session. + * @type {Array>} + * @memberof DistancesResponse + */ + column_case_indices?: Array>; + /** + * The distance values matrix. + * @type {Array>} + * @memberof DistancesResponse + */ + distances?: Array>; +} + +/** + * Check if a given object implements the DistancesResponse interface. + */ +export function instanceOfDistancesResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function DistancesResponseFromJSON(json: any): DistancesResponse { + return DistancesResponseFromJSONTyped(json, false); +} + +export function DistancesResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): DistancesResponse { + if (json === undefined || json === null) { + return json; + } + return { + row_case_indices: !exists(json, "row_case_indices") ? undefined : json["row_case_indices"], + column_case_indices: !exists(json, "column_case_indices") ? undefined : json["column_case_indices"], + distances: !exists(json, "distances") ? undefined : json["distances"], + }; +} + +export function DistancesResponseToJSON(value?: DistancesResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + row_case_indices: value.row_case_indices, + column_case_indices: value.column_case_indices, + distances: value.distances, + }; +} diff --git a/src/types/models/EvaluateActionOutput.ts b/src/types/models/EvaluateActionOutput.ts new file mode 100644 index 0000000..4593ba1 --- /dev/null +++ b/src/types/models/EvaluateActionOutput.ts @@ -0,0 +1,79 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { EvaluateResponse } from "./EvaluateResponse"; +import { EvaluateResponseFromJSON, EvaluateResponseToJSON } from "./EvaluateResponse"; + +/** + * + * @export + * @interface EvaluateActionOutput + */ +export interface EvaluateActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof EvaluateActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof EvaluateActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof EvaluateActionOutput + */ + operation_type: string; + /** + * + * @type {EvaluateResponse} + * @memberof EvaluateActionOutput + */ + output?: EvaluateResponse | null; +} + +/** + * Check if a given object implements the EvaluateActionOutput interface. + */ +export function instanceOfEvaluateActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function EvaluateActionOutputFromJSON(json: any): EvaluateActionOutput { + return EvaluateActionOutputFromJSONTyped(json, false); +} + +export function EvaluateActionOutputFromJSONTyped(json: any, ignoreDiscriminator: boolean): EvaluateActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : EvaluateResponseFromJSON(json["output"]), + }; +} + +export function EvaluateActionOutputToJSON(value?: EvaluateActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: EvaluateResponseToJSON(value.output), + }; +} diff --git a/src/types/models/EvaluateRequest.ts b/src/types/models/EvaluateRequest.ts new file mode 100644 index 0000000..9a04885 --- /dev/null +++ b/src/types/models/EvaluateRequest.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Request body for evaluate + * @export + * @interface EvaluateRequest + */ +export interface EvaluateRequest { + /** + * Map of feature name to custom code string + * @type {{ [key: string]: string; }} + * @memberof EvaluateRequest + */ + features_to_code_map: { [key: string]: string }; + /** + * + * @type {string} + * @memberof EvaluateRequest + */ + aggregation_code?: string; +} + +/** + * Check if a given object implements the EvaluateRequest interface. + */ +export function instanceOfEvaluateRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "features_to_code_map" in value; + + return isInstance; +} + +export function EvaluateRequestFromJSON(json: any): EvaluateRequest { + return EvaluateRequestFromJSONTyped(json, false); +} + +export function EvaluateRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): EvaluateRequest { + if (json === undefined || json === null) { + return json; + } + return { + features_to_code_map: json["features_to_code_map"], + aggregation_code: !exists(json, "aggregation_code") ? undefined : json["aggregation_code"], + }; +} + +export function EvaluateRequestToJSON(value?: EvaluateRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features_to_code_map: value.features_to_code_map, + aggregation_code: value.aggregation_code, + }; +} diff --git a/src/types/models/EvaluateResponse.ts b/src/types/models/EvaluateResponse.ts new file mode 100644 index 0000000..61fb707 --- /dev/null +++ b/src/types/models/EvaluateResponse.ts @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The response body for evaluate + * @export + * @interface EvaluateResponse + */ +export interface EvaluateResponse { + /** + * + * @type {any} + * @memberof EvaluateResponse + */ + aggregated?: any | null; + /** + * Map of feature name to list of values derived from custom code + * @type {{ [key: string]: Array; }} + * @memberof EvaluateResponse + */ + evaluated?: { [key: string]: Array }; +} + +/** + * Check if a given object implements the EvaluateResponse interface. + */ +export function instanceOfEvaluateResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function EvaluateResponseFromJSON(json: any): EvaluateResponse { + return EvaluateResponseFromJSONTyped(json, false); +} + +export function EvaluateResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): EvaluateResponse { + if (json === undefined || json === null) { + return json; + } + return { + aggregated: !exists(json, "aggregated") ? undefined : json["aggregated"], + evaluated: !exists(json, "evaluated") ? undefined : json["evaluated"], + }; +} + +export function EvaluateResponseToJSON(value?: EvaluateResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + aggregated: value.aggregated, + evaluated: value.evaluated, + }; +} diff --git a/src/types/models/ExtremeCasesRequest.ts b/src/types/models/ExtremeCasesRequest.ts new file mode 100644 index 0000000..081846b --- /dev/null +++ b/src/types/models/ExtremeCasesRequest.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of an extreme cases request. + * @export + * @interface ExtremeCasesRequest + */ +export interface ExtremeCasesRequest { + /** + * The number of cases to return. If num is positive, this will return the top (largest value) cases. If num is negative, this will return smallest cases. + * @type {number} + * @memberof ExtremeCasesRequest + */ + num: number; + /** + * The feature to sort by. + * @type {string} + * @memberof ExtremeCasesRequest + */ + sort_feature: string; + /** + * The features to return values for. + * @type {Array} + * @memberof ExtremeCasesRequest + */ + features?: Array; +} + +/** + * Check if a given object implements the ExtremeCasesRequest interface. + */ +export function instanceOfExtremeCasesRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "num" in value; + isInstance = isInstance && "sort_feature" in value; + + return isInstance; +} + +export function ExtremeCasesRequestFromJSON(json: any): ExtremeCasesRequest { + return ExtremeCasesRequestFromJSONTyped(json, false); +} + +export function ExtremeCasesRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ExtremeCasesRequest { + if (json === undefined || json === null) { + return json; + } + return { + num: json["num"], + sort_feature: json["sort_feature"], + features: !exists(json, "features") ? undefined : json["features"], + }; +} + +export function ExtremeCasesRequestToJSON(value?: ExtremeCasesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + num: value.num, + sort_feature: value.sort_feature, + features: value.features, + }; +} diff --git a/src/types/models/FeatureAddRequest.ts b/src/types/models/FeatureAddRequest.ts new file mode 100644 index 0000000..db541cf --- /dev/null +++ b/src/types/models/FeatureAddRequest.ts @@ -0,0 +1,103 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { FeatureAttributes } from "./FeatureAttributes"; +import { FeatureAttributesFromJSON, FeatureAttributesToJSON } from "./FeatureAttributes"; + +/** + * The body of an add feature request. + * @export + * @interface FeatureAddRequest + */ +export interface FeatureAddRequest { + /** + * The name of the feature. + * @type {string} + * @memberof FeatureAddRequest + */ + feature: string; + /** + * A condition map where features will only be modified when certain criteria is met. If no value is provided, + * the feature will be modified in all cases of the model and feature metadata will be updated. If an empty + * object is provided, the feature will be modified in all cases of the model but the feature metadata will not + * be updated. The object keys are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * @type {object} + * @memberof FeatureAddRequest + */ + condition?: object; + /** + * If specified, ignores the condition and operates on cases for the specified session id. + * @type {string} + * @memberof FeatureAddRequest + */ + condition_session?: string; + /** + * A value to apply to the feature for all cases trained the session/trainee. + * @type {any} + * @memberof FeatureAddRequest + */ + feature_value?: any | null; + /** + * + * @type {FeatureAttributes} + * @memberof FeatureAddRequest + */ + feature_attributes?: FeatureAttributes; + /** + * Whether to overwrite the feature if it exists. + * @type {boolean} + * @memberof FeatureAddRequest + */ + overwrite?: boolean; +} + +/** + * Check if a given object implements the FeatureAddRequest interface. + */ +export function instanceOfFeatureAddRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "feature" in value; + + return isInstance; +} + +export function FeatureAddRequestFromJSON(json: any): FeatureAddRequest { + return FeatureAddRequestFromJSONTyped(json, false); +} + +export function FeatureAddRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureAddRequest { + if (json === undefined || json === null) { + return json; + } + return { + feature: json["feature"], + condition: !exists(json, "condition") ? undefined : json["condition"], + condition_session: !exists(json, "condition_session") ? undefined : json["condition_session"], + feature_value: !exists(json, "feature_value") ? undefined : json["feature_value"], + feature_attributes: !exists(json, "feature_attributes") + ? undefined + : FeatureAttributesFromJSON(json["feature_attributes"]), + overwrite: !exists(json, "overwrite") ? undefined : json["overwrite"], + }; +} + +export function FeatureAddRequestToJSON(value?: FeatureAddRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + feature: value.feature, + condition: value.condition, + condition_session: value.condition_session, + feature_value: value.feature_value, + feature_attributes: FeatureAttributesToJSON(value.feature_attributes), + overwrite: value.overwrite, + }; +} diff --git a/src/types/models/FeatureAttributes.ts b/src/types/models/FeatureAttributes.ts new file mode 100644 index 0000000..1d74c50 --- /dev/null +++ b/src/types/models/FeatureAttributes.ts @@ -0,0 +1,272 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { FeatureAutoDeriveOnTrain } from "./FeatureAutoDeriveOnTrain"; +import { FeatureAutoDeriveOnTrainFromJSON, FeatureAutoDeriveOnTrainToJSON } from "./FeatureAutoDeriveOnTrain"; +import type { FeatureBounds } from "./FeatureBounds"; +import { FeatureBoundsFromJSON, FeatureBoundsToJSON } from "./FeatureBounds"; +import type { FeatureOriginalType } from "./FeatureOriginalType"; +import { FeatureOriginalTypeFromJSON, FeatureOriginalTypeToJSON } from "./FeatureOriginalType"; +import type { FeatureTimeSeries } from "./FeatureTimeSeries"; +import { FeatureTimeSeriesFromJSON, FeatureTimeSeriesToJSON } from "./FeatureTimeSeries"; + +/** + * The mapping of attributes for a single feature. + * @export + * @interface FeatureAttributes + */ +export interface FeatureAttributes { + /** + * The type of the feature. + * + * - continuous: A continuous numeric value. (e.g. Temperature or humidity) + * - nominal: A numeric or string value with no ordering. (e.g. The name of a fruit) + * - ordinal: A nominal numeric value with ordering. (e.g. Rating scale, 1-5 stars) + * @type {string} + * @memberof FeatureAttributes + */ + type: FeatureAttributesTypeEnum; + /** + * + * @type {FeatureAutoDeriveOnTrain} + * @memberof FeatureAttributes + */ + auto_derive_on_train?: FeatureAutoDeriveOnTrain; + /** + * + * @type {FeatureBounds} + * @memberof FeatureAttributes + */ + bounds?: FeatureBounds; + /** + * Cyclic features are set by specifying a `cycle_length` value in the feature attributes. `cycle_length` requires a single value, which is the upper bound of the difference for the cycle range. For example, if `cycle_length` is 360, then a value of 1 and 359 will have a difference of 2. Cyclic features have no restrictions in the input dataset, however, cyclic features will be output on a scale from 0 to `cycle_length`. To constrain the output to a different range, modify the `min` and `max` `bounds` feature attribute. + * Examples: + * - degrees: values should be 0-359, cycle_length = 360 + * - days: values should be 0-6, cycle_length = 7 + * - hours: values should be 0-23, cycle_length = 24 + * @type {number} + * @memberof FeatureAttributes + */ + cycle_length?: number; + /** + * Specify the data type for features with a type of nominal or continuous. Default is `string` for nominals and + * `number` for continuous. + * + * Valid values include: + * + * - `string`, `number`, `formatted_date_time`, `json`, `amalgam`, `yaml`: Valid for both nominal and continuous. + * + * - `string_mixable`: Valid only when type is continuous (predicted values may result in interpolated strings + * containing a combination of characters from multiple original values). + * + * - `boolean`: Valid only for nominals. + * @type {string} + * @memberof FeatureAttributes + */ + data_type?: FeatureAttributesDataTypeEnum; + /** + * If specified, feature values should match the date format specified by this string. Only applicable to continuous features. + * @type {string} + * @memberof FeatureAttributes + */ + date_time_format?: string; + /** + * Decimal places to round to, default is no rounding. If `significant_digits` is also specified, the number will be rounded to the specified number of significant digits first, then rounded to the number of decimal points as specified by this parameter. + * @type {number} + * @memberof FeatureAttributes + */ + decimal_places?: number; + /** + * A list of other feature names that this feature either depends on or features that depend on this feature. Should be used when there are multi-type value features that tightly depend on values based on other multi-type value features. + * @type {Array} + * @memberof FeatureAttributes + */ + dependent_features?: Array; + /** + * Code defining how the value for this feature could be derived if this feature is specified as a `derived_context_feature` or a `derived_action_feature` during react flows. For `react_series`, the data referenced is the accumulated series data (as a list of rows), and for non-series reacts, the data is the one single row. Each row is comprised of all the combined context and action features. Referencing data in these rows uses 0-based indexing, where the current row index is 0, the previous row's is 1, etc. The specified code may do simple logic and numeric operations on feature values referenced via feature name and row offset. + * + * Examples: + * - ``"#x 1"``: Use the value for feature 'x' from the previously processed row (offset of 1, one lag value). + * - ``"(- #y 0 #x 1)"``: Feature 'y' value from current (offset 0) row minus feature 'x' value from previous (offset 1) row. + * @type {string} + * @memberof FeatureAttributes + */ + derived_feature_code?: string; + /** + * Set to true for nominal features containing nominal IDs, specifying that his feature should be used to compute case weights for id based privacy. For time series, this feature will be used as the id for each time series generation. + * @type {boolean} + * @memberof FeatureAttributes + */ + id_feature?: boolean; + /** + * The date time format locale. If unspecified, uses platform default locale. + * @type {string} + * @memberof FeatureAttributes + */ + locale?: string; + /** + * Flag a categorical nominal feature as non-sensitive. It is recommended that all nominal features be represented with either an `int-id` subtype or another available nominal subtype using the `subtype` attribute. However, if the nominal feature is non-sensitive, setting this parameter to true will bypass the `subtype` requirement. Only applicable to nominal features. + * @type {boolean} + * @memberof FeatureAttributes + */ + non_sensitive?: boolean; + /** + * Modify how dependent features with nulls are treated during a react, specifically when they use null as a context value. Only applicable to dependent features. + * When false (default), the feature will be treated as a non-dependent context feature. When true for nominal types, treats null as an individual dependent class value, only cases that also have nulls as this feature's value will be considered. When true for continuous types, only the cases with the same dependent feature values as the cases that also have nulls as this feature's value will be considered. + * @type {boolean} + * @memberof FeatureAttributes + */ + null_is_dependent?: boolean; + /** + * Specifies the observational mean absolute error for this feature. Use when the error value is already known. Defaults to 0. + * @type {number} + * @memberof FeatureAttributes + */ + observational_error?: number; + /** + * + * @type {FeatureOriginalType} + * @memberof FeatureAttributes + */ + original_type?: FeatureOriginalType; + /** + * Original data formats used by clients. Automatically populated by clients to store client language specific context about features. + * @type {{ [key: string]: any; }} + * @memberof FeatureAttributes + */ + original_format?: { [key: string]: any }; + /** + * Custom Amalgam code that is called on resulting values of this feature during react operations. + * @type {string} + * @memberof FeatureAttributes + */ + post_process?: string; + /** + * A stringified sample of non-null data from the feature if available. The `include_sample` parameter must be specified during infer feature attributes for this property to be returned. + * @type {string} + * @memberof FeatureAttributes + */ + sample?: string | null; + /** + * Round to the specified significant digits, default is no rounding. + * @type {number} + * @memberof FeatureAttributes + */ + significant_digits?: number; + /** + * The type used in novel nominal substitution. + * @type {string} + * @memberof FeatureAttributes + */ + subtype?: string; + /** + * + * @type {FeatureTimeSeries} + * @memberof FeatureAttributes + */ + time_series?: FeatureTimeSeries; + /** + * Flag feature as only having unique values. Only applicable to nominals features. + * @type {boolean} + * @memberof FeatureAttributes + */ + unique?: boolean; +} + +/** + * @export + * @enum {string} + */ +export type FeatureAttributesTypeEnum = "continuous" | "nominal" | "ordinal"; +/** + * @export + * @enum {string} + */ +export type FeatureAttributesDataTypeEnum = + | "string" + | "number" + | "boolean" + | "formatted_date_time" + | "string_mixable" + | "json" + | "yaml" + | "amalgam"; + +/** + * Check if a given object implements the FeatureAttributes interface. + */ +export function instanceOfFeatureAttributes(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "type" in value; + + return isInstance; +} + +export function FeatureAttributesFromJSON(json: any): FeatureAttributes { + return FeatureAttributesFromJSONTyped(json, false); +} + +export function FeatureAttributesFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureAttributes { + if (json === undefined || json === null) { + return json; + } + return { + type: json["type"], + auto_derive_on_train: !exists(json, "auto_derive_on_train") + ? undefined + : FeatureAutoDeriveOnTrainFromJSON(json["auto_derive_on_train"]), + bounds: !exists(json, "bounds") ? undefined : FeatureBoundsFromJSON(json["bounds"]), + cycle_length: !exists(json, "cycle_length") ? undefined : json["cycle_length"], + data_type: !exists(json, "data_type") ? undefined : json["data_type"], + date_time_format: !exists(json, "date_time_format") ? undefined : json["date_time_format"], + decimal_places: !exists(json, "decimal_places") ? undefined : json["decimal_places"], + dependent_features: !exists(json, "dependent_features") ? undefined : json["dependent_features"], + derived_feature_code: !exists(json, "derived_feature_code") ? undefined : json["derived_feature_code"], + id_feature: !exists(json, "id_feature") ? undefined : json["id_feature"], + locale: !exists(json, "locale") ? undefined : json["locale"], + non_sensitive: !exists(json, "non_sensitive") ? undefined : json["non_sensitive"], + null_is_dependent: !exists(json, "null_is_dependent") ? undefined : json["null_is_dependent"], + observational_error: !exists(json, "observational_error") ? undefined : json["observational_error"], + original_type: !exists(json, "original_type") ? undefined : FeatureOriginalTypeFromJSON(json["original_type"]), + original_format: !exists(json, "original_format") ? undefined : json["original_format"], + post_process: !exists(json, "post_process") ? undefined : json["post_process"], + sample: !exists(json, "sample") ? undefined : json["sample"], + significant_digits: !exists(json, "significant_digits") ? undefined : json["significant_digits"], + subtype: !exists(json, "subtype") ? undefined : json["subtype"], + time_series: !exists(json, "time_series") ? undefined : FeatureTimeSeriesFromJSON(json["time_series"]), + unique: !exists(json, "unique") ? undefined : json["unique"], + }; +} + +export function FeatureAttributesToJSON(value?: FeatureAttributes | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + type: value.type, + auto_derive_on_train: FeatureAutoDeriveOnTrainToJSON(value.auto_derive_on_train), + bounds: FeatureBoundsToJSON(value.bounds), + cycle_length: value.cycle_length, + data_type: value.data_type, + date_time_format: value.date_time_format, + decimal_places: value.decimal_places, + dependent_features: value.dependent_features, + derived_feature_code: value.derived_feature_code, + id_feature: value.id_feature, + locale: value.locale, + non_sensitive: value.non_sensitive, + null_is_dependent: value.null_is_dependent, + observational_error: value.observational_error, + original_type: FeatureOriginalTypeToJSON(value.original_type), + original_format: value.original_format, + post_process: value.post_process, + sample: value.sample, + significant_digits: value.significant_digits, + subtype: value.subtype, + time_series: FeatureTimeSeriesToJSON(value.time_series), + unique: value.unique, + }; +} diff --git a/src/types/models/FeatureAutoDeriveOnTrain.ts b/src/types/models/FeatureAutoDeriveOnTrain.ts new file mode 100644 index 0000000..dd3acdf --- /dev/null +++ b/src/types/models/FeatureAutoDeriveOnTrain.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { + FeatureAutoDeriveOnTrainCustom, + FeatureAutoDeriveOnTrainCustomFromJSONTyped, + FeatureAutoDeriveOnTrainCustomToJSON, +} from "./FeatureAutoDeriveOnTrainCustom"; +import { + FeatureAutoDeriveOnTrainProgress, + FeatureAutoDeriveOnTrainProgressFromJSONTyped, + FeatureAutoDeriveOnTrainProgressToJSON, +} from "./FeatureAutoDeriveOnTrainProgress"; + +/** + * @type FeatureAutoDeriveOnTrain + * Define how to create and derive all the values for this feature from the trained dataset. + * @export + */ +export type FeatureAutoDeriveOnTrain = + | ({ derive_type: "custom" } & FeatureAutoDeriveOnTrainCustom) + | ({ derive_type: "progress" } & FeatureAutoDeriveOnTrainProgress); + +export function FeatureAutoDeriveOnTrainFromJSON(json: any): FeatureAutoDeriveOnTrain { + return FeatureAutoDeriveOnTrainFromJSONTyped(json, false); +} + +export function FeatureAutoDeriveOnTrainFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FeatureAutoDeriveOnTrain { + if (json === undefined || json === null) { + return json; + } + switch (json["derive_type"]) { + case "custom": + return { ...FeatureAutoDeriveOnTrainCustomFromJSONTyped(json, true), derive_type: "custom" }; + case "progress": + return { ...FeatureAutoDeriveOnTrainProgressFromJSONTyped(json, true), derive_type: "progress" }; + default: + throw new Error(`No variant of FeatureAutoDeriveOnTrain exists with 'derive_type=${json["derive_type"]}'`); + } +} + +export function FeatureAutoDeriveOnTrainToJSON(value?: FeatureAutoDeriveOnTrain | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + switch (value["derive_type"]) { + case "custom": + return FeatureAutoDeriveOnTrainCustomToJSON(value); + case "progress": + return FeatureAutoDeriveOnTrainProgressToJSON(value); + default: + throw new Error(`No variant of FeatureAutoDeriveOnTrain exists with 'derive_type=${value["derive_type"]}'`); + } +} diff --git a/src/types/models/FeatureAutoDeriveOnTrainCustom.ts b/src/types/models/FeatureAutoDeriveOnTrainCustom.ts new file mode 100644 index 0000000..5668aa8 --- /dev/null +++ b/src/types/models/FeatureAutoDeriveOnTrainCustom.ts @@ -0,0 +1,83 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Derive feature using the specified `code`. For each series, where each series is defined by `series_id_features`, the rows are processed in order, after being sorted by `ordered_by_features`. If series is not specified, processes the entire dataset. Referencing data in rows uses 0-based indexing, where the current row index is 0, the previous row's is 1, etc. Specified code may do simple logic and numeric operations on feature values referenced via feature name and row offset. + * + * Examples: + * - ``"#x 1"`` : Use the value for feature 'x' from the previously processed row (offset of 1, one lag value). + * - ``"(- #y 0 #x 1)"`` : Feature 'y' value from current (offset 0) row minus feature 'x' value from previous (offset 1) row. + * @export + * @interface FeatureAutoDeriveOnTrainCustom + */ +export interface FeatureAutoDeriveOnTrainCustom { + /** + * The train derive operation type. + * @type {string} + * @memberof FeatureAutoDeriveOnTrainCustom + */ + derive_type: string; + /** + * Amalgam code describing how feature could be derived. + * @type {string} + * @memberof FeatureAutoDeriveOnTrainCustom + */ + code: string; + /** + * Feature name(s) of series for which to derive this feature. A series is the conjunction of all the features specified by this attribute. + * @type {Array} + * @memberof FeatureAutoDeriveOnTrainCustom + */ + series_id_features?: Array; + /** + * Feature name(s) by which to order the series specified by `series_id_features`. Series values are order by the order of feature names specified by this attribute. + * @type {Array} + * @memberof FeatureAutoDeriveOnTrainCustom + */ + ordered_by_features?: Array; +} + +/** + * Check if a given object implements the FeatureAutoDeriveOnTrainCustom interface. + */ +export function instanceOfFeatureAutoDeriveOnTrainCustom(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "derive_type" in value; + isInstance = isInstance && "code" in value; + + return isInstance; +} + +export function FeatureAutoDeriveOnTrainCustomFromJSON(json: any): FeatureAutoDeriveOnTrainCustom { + return FeatureAutoDeriveOnTrainCustomFromJSONTyped(json, false); +} + +export function FeatureAutoDeriveOnTrainCustomFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FeatureAutoDeriveOnTrainCustom { + if (json === undefined || json === null) { + return json; + } + return { + derive_type: json["derive_type"], + code: json["code"], + series_id_features: !exists(json, "series_id_features") ? undefined : json["series_id_features"], + ordered_by_features: !exists(json, "ordered_by_features") ? undefined : json["ordered_by_features"], + }; +} + +export function FeatureAutoDeriveOnTrainCustomToJSON(value?: FeatureAutoDeriveOnTrainCustom | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + derive_type: value.derive_type, + code: value.code, + series_id_features: value.series_id_features, + ordered_by_features: value.ordered_by_features, + }; +} diff --git a/src/types/models/FeatureAutoDeriveOnTrainProgress.ts b/src/types/models/FeatureAutoDeriveOnTrainProgress.ts new file mode 100644 index 0000000..d7e2ca4 --- /dev/null +++ b/src/types/models/FeatureAutoDeriveOnTrainProgress.ts @@ -0,0 +1,62 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +/** + * Derive feature by creating two new continuous features: `.series_progress` and `.series_progress_delta`. Series progress values range from 0 to 1.0 for each case in the series. Series progress delta values are the delta value of the progress for each case. Both of these features are used to determine when to stop series synthesis. + * @export + * @interface FeatureAutoDeriveOnTrainProgress + */ +export interface FeatureAutoDeriveOnTrainProgress { + /** + * The train derive operation type. + * @type {string} + * @memberof FeatureAutoDeriveOnTrainProgress + */ + derive_type: string; + /** + * Feature name(s) of series for which to derive this feature. A series is the conjunction of all the features specified by this attribute. + * @type {Array} + * @memberof FeatureAutoDeriveOnTrainProgress + */ + series_id_features: Array; +} + +/** + * Check if a given object implements the FeatureAutoDeriveOnTrainProgress interface. + */ +export function instanceOfFeatureAutoDeriveOnTrainProgress(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "derive_type" in value; + isInstance = isInstance && "series_id_features" in value; + + return isInstance; +} + +export function FeatureAutoDeriveOnTrainProgressFromJSON(json: any): FeatureAutoDeriveOnTrainProgress { + return FeatureAutoDeriveOnTrainProgressFromJSONTyped(json, false); +} + +export function FeatureAutoDeriveOnTrainProgressFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FeatureAutoDeriveOnTrainProgress { + if (json === undefined || json === null) { + return json; + } + return { + derive_type: json["derive_type"], + series_id_features: json["series_id_features"], + }; +} + +export function FeatureAutoDeriveOnTrainProgressToJSON(value?: FeatureAutoDeriveOnTrainProgress | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + derive_type: value.derive_type, + series_id_features: value.series_id_features, + }; +} diff --git a/src/types/models/FeatureBounds.ts b/src/types/models/FeatureBounds.ts new file mode 100644 index 0000000..93e2cf0 --- /dev/null +++ b/src/types/models/FeatureBounds.ts @@ -0,0 +1,85 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Bounds for feature value generation. + * @export + * @interface FeatureBounds + */ +export interface FeatureBounds { + /** + * The minimum value to be output. May be a number or date string. + * @type {any} + * @memberof FeatureBounds + */ + min?: any | null; + /** + * The maximum value to be output. May be a number or date string. + * @type {any} + * @memberof FeatureBounds + */ + max?: any | null; + /** + * Explicitly allowed values to be output. + * @type {Array} + * @memberof FeatureBounds + */ + allowed?: Array; + /** + * Allow nulls to be output, per their distribution in the data. Defaults to true. + * @type {boolean} + * @memberof FeatureBounds + */ + allow_null?: boolean; + /** + * Amalgam code, whose logic has to evaluate to true for value to be considered valid when this feature is being generated. Same format as 'derived_feature_code'. + * + * Examples: + * - ``"(> #f1 0 #f2 0)"``: Feature 'f1' value from current (offset 0) data must be bigger than feature 'f2' value from current (offset 0) data. + * @type {string} + * @memberof FeatureBounds + */ + constraint?: string; +} + +/** + * Check if a given object implements the FeatureBounds interface. + */ +export function instanceOfFeatureBounds(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function FeatureBoundsFromJSON(json: any): FeatureBounds { + return FeatureBoundsFromJSONTyped(json, false); +} + +export function FeatureBoundsFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureBounds { + if (json === undefined || json === null) { + return json; + } + return { + min: !exists(json, "min") ? undefined : json["min"], + max: !exists(json, "max") ? undefined : json["max"], + allowed: !exists(json, "allowed") ? undefined : json["allowed"], + allow_null: !exists(json, "allow_null") ? undefined : json["allow_null"], + constraint: !exists(json, "constraint") ? undefined : json["constraint"], + }; +} + +export function FeatureBoundsToJSON(value?: FeatureBounds | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + min: value.min, + max: value.max, + allowed: value.allowed, + allow_null: value.allow_null, + constraint: value.constraint, + }; +} diff --git a/src/types/models/FeatureConviction.ts b/src/types/models/FeatureConviction.ts new file mode 100644 index 0000000..c6eabb4 --- /dev/null +++ b/src/types/models/FeatureConviction.ts @@ -0,0 +1,62 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The feature familiarity conviction values. + * @export + * @interface FeatureConviction + */ +export interface FeatureConviction { + /** + * A dictionary of feature name to conviction value where each value is the familiarity conviction of adding the feature to the Model. + * @type {{ [key: string]: number; }} + * @memberof FeatureConviction + */ + familiarity_conviction_addition?: { [key: string]: number }; + /** + * A dictionary of feature name to conviction value where each value is the familiarity conviction of removing the feature from the Model. + * @type {{ [key: string]: number; }} + * @memberof FeatureConviction + */ + familiarity_conviction_removal?: { [key: string]: number }; +} + +/** + * Check if a given object implements the FeatureConviction interface. + */ +export function instanceOfFeatureConviction(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function FeatureConvictionFromJSON(json: any): FeatureConviction { + return FeatureConvictionFromJSONTyped(json, false); +} + +export function FeatureConvictionFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureConviction { + if (json === undefined || json === null) { + return json; + } + return { + familiarity_conviction_addition: !exists(json, "familiarity_conviction_addition") + ? undefined + : json["familiarity_conviction_addition"], + familiarity_conviction_removal: !exists(json, "familiarity_conviction_removal") + ? undefined + : json["familiarity_conviction_removal"], + }; +} + +export function FeatureConvictionToJSON(value?: FeatureConviction | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + familiarity_conviction_addition: value.familiarity_conviction_addition, + familiarity_conviction_removal: value.familiarity_conviction_removal, + }; +} diff --git a/src/types/models/FeatureConvictionActionOutput.ts b/src/types/models/FeatureConvictionActionOutput.ts new file mode 100644 index 0000000..a4244fe --- /dev/null +++ b/src/types/models/FeatureConvictionActionOutput.ts @@ -0,0 +1,82 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { FeatureConviction } from "./FeatureConviction"; +import { FeatureConvictionFromJSON, FeatureConvictionToJSON } from "./FeatureConviction"; + +/** + * + * @export + * @interface FeatureConvictionActionOutput + */ +export interface FeatureConvictionActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof FeatureConvictionActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof FeatureConvictionActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof FeatureConvictionActionOutput + */ + operation_type: string; + /** + * + * @type {FeatureConviction} + * @memberof FeatureConvictionActionOutput + */ + output?: FeatureConviction | null; +} + +/** + * Check if a given object implements the FeatureConvictionActionOutput interface. + */ +export function instanceOfFeatureConvictionActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function FeatureConvictionActionOutputFromJSON(json: any): FeatureConvictionActionOutput { + return FeatureConvictionActionOutputFromJSONTyped(json, false); +} + +export function FeatureConvictionActionOutputFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FeatureConvictionActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : FeatureConvictionFromJSON(json["output"]), + }; +} + +export function FeatureConvictionActionOutputToJSON(value?: FeatureConvictionActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: FeatureConvictionToJSON(value.output), + }; +} diff --git a/src/types/models/FeatureConvictionRequest.ts b/src/types/models/FeatureConvictionRequest.ts new file mode 100644 index 0000000..6a19629 --- /dev/null +++ b/src/types/models/FeatureConvictionRequest.ts @@ -0,0 +1,97 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of a feature conviction request. + * @export + * @interface FeatureConvictionRequest + */ +export interface FeatureConvictionRequest { + /** + * A list of feature names to calculate convictions. At least 2 features are required to get familiarity conviction and at least 3 features to get prediction conviction and prediction contribution. If not specified all features will be used. + * @type {Array} + * @memberof FeatureConvictionRequest + */ + features?: Array; + /** + * A list of feature names to be treated as action features during conviction calculation in order to determine the conviction of each feature against the set of action_features. If not specified, conviction is computed for each feature against the rest of the features as a whole. + * @type {Array} + * @memberof FeatureConvictionRequest + */ + action_features?: Array; + /** + * When true, calculate and output the familiarity conviction of adding the features. + * @type {boolean} + * @memberof FeatureConvictionRequest + */ + familiarity_conviction_addition?: boolean; + /** + * When true, calculate and output the familiarity conviction of removing the features. + * @type {boolean} + * @memberof FeatureConvictionRequest + */ + familiarity_conviction_removal?: boolean; + /** + * If set to True will scale influence weights by each case's `weight_feature` weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof FeatureConvictionRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally managed case weight. + * @type {string} + * @memberof FeatureConvictionRequest + */ + weight_feature?: string; +} + +/** + * Check if a given object implements the FeatureConvictionRequest interface. + */ +export function instanceOfFeatureConvictionRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function FeatureConvictionRequestFromJSON(json: any): FeatureConvictionRequest { + return FeatureConvictionRequestFromJSONTyped(json, false); +} + +export function FeatureConvictionRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FeatureConvictionRequest { + if (json === undefined || json === null) { + return json; + } + return { + features: !exists(json, "features") ? undefined : json["features"], + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + familiarity_conviction_addition: !exists(json, "familiarity_conviction_addition") + ? undefined + : json["familiarity_conviction_addition"], + familiarity_conviction_removal: !exists(json, "familiarity_conviction_removal") + ? undefined + : json["familiarity_conviction_removal"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + }; +} + +export function FeatureConvictionRequestToJSON(value?: FeatureConvictionRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features: value.features, + action_features: value.action_features, + familiarity_conviction_addition: value.familiarity_conviction_addition, + familiarity_conviction_removal: value.familiarity_conviction_removal, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + }; +} diff --git a/src/types/models/FeatureMarginalStats.ts b/src/types/models/FeatureMarginalStats.ts new file mode 100644 index 0000000..d4a3e59 --- /dev/null +++ b/src/types/models/FeatureMarginalStats.ts @@ -0,0 +1,63 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists, mapValues } from "../runtime"; +import type { MarginalStats } from "./MarginalStats"; +import { MarginalStatsFromJSON, MarginalStatsToJSON } from "./MarginalStats"; +import type { Warning } from "./Warning"; +import { WarningFromJSON, WarningToJSON } from "./Warning"; + +/** + * The response body of get_marginal_stats + * @export + * @interface FeatureMarginalStats + */ +export interface FeatureMarginalStats { + /** + * + * @type {Array} + * @memberof FeatureMarginalStats + */ + warnings?: Array; + /** + * + * @type {{ [key: string]: MarginalStats; }} + * @memberof FeatureMarginalStats + */ + content?: { [key: string]: MarginalStats }; +} + +/** + * Check if a given object implements the FeatureMarginalStats interface. + */ +export function instanceOfFeatureMarginalStats(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function FeatureMarginalStatsFromJSON(json: any): FeatureMarginalStats { + return FeatureMarginalStatsFromJSONTyped(json, false); +} + +export function FeatureMarginalStatsFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureMarginalStats { + if (json === undefined || json === null) { + return json; + } + return { + warnings: !exists(json, "warnings") ? undefined : (json["warnings"] as Array).map(WarningFromJSON), + content: !exists(json, "content") ? undefined : mapValues(json["content"], MarginalStatsFromJSON), + }; +} + +export function FeatureMarginalStatsToJSON(value?: FeatureMarginalStats | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + warnings: value.warnings === undefined ? undefined : (value.warnings as Array).map(WarningToJSON), + content: value.content === undefined ? undefined : mapValues(value.content, MarginalStatsToJSON), + }; +} diff --git a/src/types/models/FeatureMarginalStatsRequest.ts b/src/types/models/FeatureMarginalStatsRequest.ts new file mode 100644 index 0000000..1466fc4 --- /dev/null +++ b/src/types/models/FeatureMarginalStatsRequest.ts @@ -0,0 +1,89 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of a feature marginal stats request. + * @export + * @interface FeatureMarginalStatsRequest + */ +export interface FeatureMarginalStatsRequest { + /** + * When specified, will attempt to return stats that were computed using this weight_feature. + * @type {string} + * @memberof FeatureMarginalStatsRequest + */ + weight_feature?: string; + /** + * The condition map to select the cases that meet all the provided conditions. The dictionary keys + * are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * @type {{ [key: string]: any; }} + * @memberof FeatureMarginalStatsRequest + */ + condition?: { [key: string]: any }; + /** + * The maximum number of cases to use. If not specified, the limit will be k cases if precision is "similar", or + * no limit if precision is "exact". + * @type {number} + * @memberof FeatureMarginalStatsRequest + */ + num_cases?: number; + /** + * Exact matching or fuzzy matching. + * @type {string} + * @memberof FeatureMarginalStatsRequest + */ + precision?: FeatureMarginalStatsRequestPrecisionEnum; +} + +/** + * @export + * @enum {string} + */ +export type FeatureMarginalStatsRequestPrecisionEnum = "exact" | "similar"; + +/** + * Check if a given object implements the FeatureMarginalStatsRequest interface. + */ +export function instanceOfFeatureMarginalStatsRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function FeatureMarginalStatsRequestFromJSON(json: any): FeatureMarginalStatsRequest { + return FeatureMarginalStatsRequestFromJSONTyped(json, false); +} + +export function FeatureMarginalStatsRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): FeatureMarginalStatsRequest { + if (json === undefined || json === null) { + return json; + } + return { + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + condition: !exists(json, "condition") ? undefined : json["condition"], + num_cases: !exists(json, "num_cases") ? undefined : json["num_cases"], + precision: !exists(json, "precision") ? undefined : json["precision"], + }; +} + +export function FeatureMarginalStatsRequestToJSON(value?: FeatureMarginalStatsRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + weight_feature: value.weight_feature, + condition: value.condition, + num_cases: value.num_cases, + precision: value.precision, + }; +} diff --git a/src/types/models/FeatureOriginalType.ts b/src/types/models/FeatureOriginalType.ts new file mode 100644 index 0000000..c9eed60 --- /dev/null +++ b/src/types/models/FeatureOriginalType.ts @@ -0,0 +1,90 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { BooleanType, BooleanTypeFromJSONTyped, BooleanTypeToJSON } from "./BooleanType"; +import { DateType, DateTypeFromJSONTyped, DateTypeToJSON } from "./DateType"; +import { DatetimeType, DatetimeTypeFromJSONTyped, DatetimeTypeToJSON } from "./DatetimeType"; +import { IntegerType, IntegerTypeFromJSONTyped, IntegerTypeToJSON } from "./IntegerType"; +import { NumericType, NumericTypeFromJSONTyped, NumericTypeToJSON } from "./NumericType"; +import { ObjectType, ObjectTypeFromJSONTyped, ObjectTypeToJSON } from "./ObjectType"; +import { StringType, StringTypeFromJSONTyped, StringTypeToJSON } from "./StringType"; +import { TimeType, TimeTypeFromJSONTyped, TimeTypeToJSON } from "./TimeType"; +import { TimedeltaType, TimedeltaTypeFromJSONTyped, TimedeltaTypeToJSON } from "./TimedeltaType"; + +/** + * @type FeatureOriginalType + * Original data type details. Used by clients to determine how to serialize and deserialize feature data. + * @export + */ +export type FeatureOriginalType = + | ({ data_type: "boolean" } & BooleanType) + | ({ data_type: "date" } & DateType) + | ({ data_type: "datetime" } & DatetimeType) + | ({ data_type: "integer" } & IntegerType) + | ({ data_type: "numeric" } & NumericType) + | ({ data_type: "object" } & ObjectType) + | ({ data_type: "string" } & StringType) + | ({ data_type: "time" } & TimeType) + | ({ data_type: "timedelta" } & TimedeltaType); + +export function FeatureOriginalTypeFromJSON(json: any): FeatureOriginalType { + return FeatureOriginalTypeFromJSONTyped(json, false); +} + +export function FeatureOriginalTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureOriginalType { + if (json === undefined || json === null) { + return json; + } + switch (json["data_type"]) { + case "boolean": + return { ...BooleanTypeFromJSONTyped(json, true), data_type: "boolean" }; + case "date": + return { ...DateTypeFromJSONTyped(json, true), data_type: "date" }; + case "datetime": + return { ...DatetimeTypeFromJSONTyped(json, true), data_type: "datetime" }; + case "integer": + return { ...IntegerTypeFromJSONTyped(json, true), data_type: "integer" }; + case "numeric": + return { ...NumericTypeFromJSONTyped(json, true), data_type: "numeric" }; + case "object": + return { ...ObjectTypeFromJSONTyped(json, true), data_type: "object" }; + case "string": + return { ...StringTypeFromJSONTyped(json, true), data_type: "string" }; + case "time": + return { ...TimeTypeFromJSONTyped(json, true), data_type: "time" }; + case "timedelta": + return { ...TimedeltaTypeFromJSONTyped(json, true), data_type: "timedelta" }; + default: + throw new Error(`No variant of FeatureOriginalType exists with 'data_type=${json["data_type"]}'`); + } +} + +export function FeatureOriginalTypeToJSON(value?: FeatureOriginalType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + switch (value["data_type"]) { + case "boolean": + return BooleanTypeToJSON(value); + case "date": + return DateTypeToJSON(value); + case "datetime": + return DatetimeTypeToJSON(value); + case "integer": + return IntegerTypeToJSON(value); + case "numeric": + return NumericTypeToJSON(value); + case "object": + return ObjectTypeToJSON(value); + case "string": + return StringTypeToJSON(value); + case "time": + return TimeTypeToJSON(value); + case "timedelta": + return TimedeltaTypeToJSON(value); + default: + throw new Error(`No variant of FeatureOriginalType exists with 'data_type=${value["data_type"]}'`); + } +} diff --git a/src/types/models/FeatureRemoveRequest.ts b/src/types/models/FeatureRemoveRequest.ts new file mode 100644 index 0000000..81b1690 --- /dev/null +++ b/src/types/models/FeatureRemoveRequest.ts @@ -0,0 +1,74 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of a feature removal request. + * @export + * @interface FeatureRemoveRequest + */ +export interface FeatureRemoveRequest { + /** + * The name of the feature. + * @type {string} + * @memberof FeatureRemoveRequest + */ + feature: string; + /** + * A condition map where features will only be modified when certain criteria is met. If no value is provided, + * the feature will be modified in all cases of the model and feature metadata will be updated. If an empty + * object is provided, the feature will be modified in all cases of the model but the feature metadata will not + * be updated. The object keys are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * @type {object} + * @memberof FeatureRemoveRequest + */ + condition?: object; + /** + * If specified, ignores the condition and operates on cases for the specified session id. + * @type {string} + * @memberof FeatureRemoveRequest + */ + condition_session?: string; +} + +/** + * Check if a given object implements the FeatureRemoveRequest interface. + */ +export function instanceOfFeatureRemoveRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "feature" in value; + + return isInstance; +} + +export function FeatureRemoveRequestFromJSON(json: any): FeatureRemoveRequest { + return FeatureRemoveRequestFromJSONTyped(json, false); +} + +export function FeatureRemoveRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureRemoveRequest { + if (json === undefined || json === null) { + return json; + } + return { + feature: json["feature"], + condition: !exists(json, "condition") ? undefined : json["condition"], + condition_session: !exists(json, "condition_session") ? undefined : json["condition_session"], + }; +} + +export function FeatureRemoveRequestToJSON(value?: FeatureRemoveRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + feature: value.feature, + condition: value.condition, + condition_session: value.condition_session, + }; +} diff --git a/src/types/models/FeatureTimeSeries.ts b/src/types/models/FeatureTimeSeries.ts new file mode 100644 index 0000000..743c448 --- /dev/null +++ b/src/types/models/FeatureTimeSeries.ts @@ -0,0 +1,153 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Time series options for a feature. + * @export + * @interface FeatureTimeSeries + */ +export interface FeatureTimeSeries { + /** + * When `rate` is specified, uses the difference of the current value from its previous value divided by the change in time since the previous value. When `delta` is specified, uses the difference of the current value from its previous value regardless of the elapsed time. Set to `delta` if feature has `time_feature` set to true. + * @type {string} + * @memberof FeatureTimeSeries + */ + type: FeatureTimeSeriesTypeEnum; + /** + * If provided, will generate the specified number of derivatives and boundary values. + * @type {number} + * @memberof FeatureTimeSeries + */ + order?: number; + /** + * The number of orders of derivatives that should be derived instead of synthesized. Ignored if order is not provided. + * @type {number} + * @memberof FeatureTimeSeries + */ + derived_orders?: number; + /** + * If specified, ensures that the smallest difference between features values is not smaller than this specified value. A null value means no min boundary. The length of the list must match the number of derivatives as specified by `order`. Only applicable when time series type is set to `delta`. + * @type {Array} + * @memberof FeatureTimeSeries + */ + delta_min?: Array; + /** + * If specified, ensures that the largest difference between feature values is not larger than this specified value. A null value means no max boundary. The length of the list must match the number of derivatives as specified by `order`. Only applicable when time series type is set to `delta`. + * @type {Array} + * @memberof FeatureTimeSeries + */ + delta_max?: Array; + /** + * If specified, generates lag features containing previous values using the enumerated lag offsets. Takes precedence over `num_lags`. If neither `num_lags` nor `lags` is specified for a feature, then a single lag feature is generated. + * @type {Array} + * @memberof FeatureTimeSeries + */ + lags?: Array; + /** + * If specified, generates the specified amount of lag features containing previous values. If `lags` is specified, then this parameter will be ignored. If neither `num_lags` nor `lags` is specified for a feature, then a single lag feature is generated. + * @type {number} + * @memberof FeatureTimeSeries + */ + num_lags?: number; + /** + * If specified, ensures that the rate (the difference quotient, the discrete version of derivative) for this feature won't be less than the value provided. A null value means no min boundary. The value must be in epoch format for the time feature. The length of the list must match the number of derivatives as specified by `order`. Only applicable when time series type is set to `rate`. + * @type {Array} + * @memberof FeatureTimeSeries + */ + rate_min?: Array; + /** + * If specified, ensures that the rate (the difference quotient, the discrete version of derivative) for this feature won't be more than the value provided. A null value means no max boundary. The value must be in epoch format for the time feature. The length of the list must match the number of derivatives as specified by `order`. Only applicable when time series type is set to `rate`. + * @type {Array} + * @memberof FeatureTimeSeries + */ + rate_max?: Array; + /** + * When true, requires that the model identify and learn values that explicitly denote the end of a series. Only applicable to id features for a series. + * @type {boolean} + * @memberof FeatureTimeSeries + */ + series_has_terminators?: boolean; + /** + * When true, requires that a series ends on a terminator value. Only applicable to id features for a series. + * @type {boolean} + * @memberof FeatureTimeSeries + */ + stop_on_terminator?: boolean; + /** + * When true, the feature will be treated as the time feature for time series modeling. Additionally, time features must use type `delta`. + * @type {boolean} + * @memberof FeatureTimeSeries + */ + time_feature?: boolean; + /** + * Controls whether future values of independent time series are considered. Applicable only to the time feature. When false, the time feature is not universal and allows using future data from other series in decisions; this is applicable when the time is not globally relevant and is independent for each time series. When true, universally excludes using any data with from the future from all series; this is applicable when time is globally relevant and there are events that may affect all time series. If there is any possibility of global relevancy of time, it is generally recommended to set this value to true, which is the default. + * @type {boolean} + * @memberof FeatureTimeSeries + */ + universal?: boolean; +} + +/** + * @export + * @enum {string} + */ +export type FeatureTimeSeriesTypeEnum = "rate" | "delta"; + +/** + * Check if a given object implements the FeatureTimeSeries interface. + */ +export function instanceOfFeatureTimeSeries(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "type" in value; + + return isInstance; +} + +export function FeatureTimeSeriesFromJSON(json: any): FeatureTimeSeries { + return FeatureTimeSeriesFromJSONTyped(json, false); +} + +export function FeatureTimeSeriesFromJSONTyped(json: any, ignoreDiscriminator: boolean): FeatureTimeSeries { + if (json === undefined || json === null) { + return json; + } + return { + type: json["type"], + order: !exists(json, "order") ? undefined : json["order"], + derived_orders: !exists(json, "derived_orders") ? undefined : json["derived_orders"], + delta_min: !exists(json, "delta_min") ? undefined : json["delta_min"], + delta_max: !exists(json, "delta_max") ? undefined : json["delta_max"], + lags: !exists(json, "lags") ? undefined : json["lags"], + num_lags: !exists(json, "num_lags") ? undefined : json["num_lags"], + rate_min: !exists(json, "rate_min") ? undefined : json["rate_min"], + rate_max: !exists(json, "rate_max") ? undefined : json["rate_max"], + series_has_terminators: !exists(json, "series_has_terminators") ? undefined : json["series_has_terminators"], + stop_on_terminator: !exists(json, "stop_on_terminator") ? undefined : json["stop_on_terminator"], + time_feature: !exists(json, "time_feature") ? undefined : json["time_feature"], + universal: !exists(json, "universal") ? undefined : json["universal"], + }; +} + +export function FeatureTimeSeriesToJSON(value?: FeatureTimeSeries | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + type: value.type, + order: value.order, + derived_orders: value.derived_orders, + delta_min: value.delta_min, + delta_max: value.delta_max, + lags: value.lags, + num_lags: value.num_lags, + rate_min: value.rate_min, + rate_max: value.rate_max, + series_has_terminators: value.series_has_terminators, + stop_on_terminator: value.stop_on_terminator, + time_feature: value.time_feature, + universal: value.universal, + }; +} diff --git a/src/types/models/ImputeRequest.ts b/src/types/models/ImputeRequest.ts new file mode 100644 index 0000000..347adac --- /dev/null +++ b/src/types/models/ImputeRequest.ts @@ -0,0 +1,69 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface ImputeRequest + */ +export interface ImputeRequest { + /** + * Larger batch size will increase speed but decrease accuracy. + * Batch size indicates how many rows to fill before recomputing conviction. + * The default value (which is 1) should return the best accuracy but might be slower. + * Higher values should improve performance but may decrease accuracy of results. + * @type {number} + * @memberof ImputeRequest + */ + batch_size?: number; + /** + * + * @type {Array} + * @memberof ImputeRequest + */ + features?: Array; + /** + * + * @type {Array} + * @memberof ImputeRequest + */ + features_to_impute?: Array; +} + +/** + * Check if a given object implements the ImputeRequest interface. + */ +export function instanceOfImputeRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ImputeRequestFromJSON(json: any): ImputeRequest { + return ImputeRequestFromJSONTyped(json, false); +} + +export function ImputeRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImputeRequest { + if (json === undefined || json === null) { + return json; + } + return { + batch_size: !exists(json, "batch_size") ? undefined : json["batch_size"], + features: !exists(json, "features") ? undefined : json["features"], + features_to_impute: !exists(json, "features_to_impute") ? undefined : json["features_to_impute"], + }; +} + +export function ImputeRequestToJSON(value?: ImputeRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + batch_size: value.batch_size, + features: value.features, + features_to_impute: value.features_to_impute, + }; +} diff --git a/src/types/models/IntegerType.ts b/src/types/models/IntegerType.ts new file mode 100644 index 0000000..f722079 --- /dev/null +++ b/src/types/models/IntegerType.ts @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface IntegerType + */ +export interface IntegerType { + /** + * The name of the data type. + * @type {string} + * @memberof IntegerType + */ + data_type: string; + /** + * The size of the integer (in bytes). + * @type {number} + * @memberof IntegerType + */ + size?: number; + /** + * If the integer is unsigned. + * @type {boolean} + * @memberof IntegerType + */ + unsigned?: boolean; +} + +/** + * Check if a given object implements the IntegerType interface. + */ +export function instanceOfIntegerType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function IntegerTypeFromJSON(json: any): IntegerType { + return IntegerTypeFromJSONTyped(json, false); +} + +export function IntegerTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): IntegerType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + size: !exists(json, "size") ? undefined : json["size"], + unsigned: !exists(json, "unsigned") ? undefined : json["unsigned"], + }; +} + +export function IntegerTypeToJSON(value?: IntegerType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + size: value.size, + unsigned: value.unsigned, + }; +} diff --git a/src/types/models/MarginalStats.ts b/src/types/models/MarginalStats.ts new file mode 100644 index 0000000..ec27b57 --- /dev/null +++ b/src/types/models/MarginalStats.ts @@ -0,0 +1,162 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Marginal feature statistics. + * @export + * @interface MarginalStats + */ +export interface MarginalStats { + /** + * + * @type {number} + * @memberof MarginalStats + */ + count?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + kurtosis?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + mean?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + mean_absdev?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + median?: number | null; + /** + * + * @type {any} + * @memberof MarginalStats + */ + mode?: any | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + min?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + max?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + percentile_25?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + percentile_75?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + skew?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + stddev?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + uniques?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + variance?: number | null; + /** + * + * @type {number} + * @memberof MarginalStats + */ + entropy?: number | null; +} + +/** + * Check if a given object implements the MarginalStats interface. + */ +export function instanceOfMarginalStats(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function MarginalStatsFromJSON(json: any): MarginalStats { + return MarginalStatsFromJSONTyped(json, false); +} + +export function MarginalStatsFromJSONTyped(json: any, ignoreDiscriminator: boolean): MarginalStats { + if (json === undefined || json === null) { + return json; + } + return { + count: !exists(json, "count") ? undefined : json["count"], + kurtosis: !exists(json, "kurtosis") ? undefined : json["kurtosis"], + mean: !exists(json, "mean") ? undefined : json["mean"], + mean_absdev: !exists(json, "mean_absdev") ? undefined : json["mean_absdev"], + median: !exists(json, "median") ? undefined : json["median"], + mode: !exists(json, "mode") ? undefined : json["mode"], + min: !exists(json, "min") ? undefined : json["min"], + max: !exists(json, "max") ? undefined : json["max"], + percentile_25: !exists(json, "percentile_25") ? undefined : json["percentile_25"], + percentile_75: !exists(json, "percentile_75") ? undefined : json["percentile_75"], + skew: !exists(json, "skew") ? undefined : json["skew"], + stddev: !exists(json, "stddev") ? undefined : json["stddev"], + uniques: !exists(json, "uniques") ? undefined : json["uniques"], + variance: !exists(json, "variance") ? undefined : json["variance"], + entropy: !exists(json, "entropy") ? undefined : json["entropy"], + }; +} + +export function MarginalStatsToJSON(value?: MarginalStats | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + count: value.count, + kurtosis: value.kurtosis, + mean: value.mean, + mean_absdev: value.mean_absdev, + median: value.median, + mode: value.mode, + min: value.min, + max: value.max, + percentile_25: value.percentile_25, + percentile_75: value.percentile_75, + skew: value.skew, + stddev: value.stddev, + uniques: value.uniques, + variance: value.variance, + entropy: value.entropy, + }; +} diff --git a/src/types/models/Metrics.ts b/src/types/models/Metrics.ts new file mode 100644 index 0000000..9bf3001 --- /dev/null +++ b/src/types/models/Metrics.ts @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface Metrics + */ +export interface Metrics { + /** + * The current cpu usage of the trainee container includes units (usually nano-cpus) + * @type {string} + * @memberof Metrics + */ + cpu?: string | null; + /** + * The current memory usage of the trainee container includes units (usually Kilobytes) + * @type {string} + * @memberof Metrics + */ + memory?: string | null; +} + +/** + * Check if a given object implements the Metrics interface. + */ +export function instanceOfMetrics(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function MetricsFromJSON(json: any): Metrics { + return MetricsFromJSONTyped(json, false); +} + +export function MetricsFromJSONTyped(json: any, ignoreDiscriminator: boolean): Metrics { + if (json === undefined || json === null) { + return json; + } + return { + cpu: !exists(json, "cpu") ? undefined : json["cpu"], + memory: !exists(json, "memory") ? undefined : json["memory"], + }; +} + +export function MetricsToJSON(value?: Metrics | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + cpu: value.cpu, + memory: value.memory, + }; +} diff --git a/src/types/models/ModelError.ts b/src/types/models/ModelError.ts new file mode 100644 index 0000000..6524e03 --- /dev/null +++ b/src/types/models/ModelError.ts @@ -0,0 +1,85 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface ModelError + */ +export interface ModelError { + [key: string]: any | any; + /** + * + * @type {number} + * @memberof ModelError + */ + status?: number; + /** + * + * @type {string} + * @memberof ModelError + */ + title?: string; + /** + * + * @type {string} + * @memberof ModelError + */ + detail?: string; + /** + * + * @type {string} + * @memberof ModelError + */ + code?: string; + /** + * + * @type {string} + * @memberof ModelError + */ + type?: string; +} + +/** + * Check if a given object implements the ModelError interface. + */ +export function instanceOfModelError(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ModelErrorFromJSON(json: any): ModelError { + return ModelErrorFromJSONTyped(json, false); +} + +export function ModelErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelError { + if (json === undefined || json === null) { + return json; + } + return { + ...json, + status: !exists(json, "status") ? undefined : json["status"], + title: !exists(json, "title") ? undefined : json["title"], + detail: !exists(json, "detail") ? undefined : json["detail"], + code: !exists(json, "code") ? undefined : json["code"], + type: !exists(json, "type") ? undefined : json["type"], + }; +} + +export function ModelErrorToJSON(value?: ModelError | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + ...value, + status: value.status, + title: value.title, + detail: value.detail, + code: value.code, + type: value.type, + }; +} diff --git a/src/types/models/NumericType.ts b/src/types/models/NumericType.ts new file mode 100644 index 0000000..0203938 --- /dev/null +++ b/src/types/models/NumericType.ts @@ -0,0 +1,73 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface NumericType + */ +export interface NumericType { + /** + * The name of the data type. + * @type {string} + * @memberof NumericType + */ + data_type: string; + /** + * The format of the number. + * @type {string} + * @memberof NumericType + */ + format?: NumericTypeFormatEnum; + /** + * The size of the number (in bytes). + * @type {number} + * @memberof NumericType + */ + size?: number; +} + +/** + * @export + * @enum {string} + */ +export type NumericTypeFormatEnum = "decimal"; + +/** + * Check if a given object implements the NumericType interface. + */ +export function instanceOfNumericType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function NumericTypeFromJSON(json: any): NumericType { + return NumericTypeFromJSONTyped(json, false); +} + +export function NumericTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): NumericType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + format: !exists(json, "format") ? undefined : json["format"], + size: !exists(json, "size") ? undefined : json["size"], + }; +} + +export function NumericTypeToJSON(value?: NumericType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + format: value.format, + size: value.size, + }; +} diff --git a/src/types/models/ObjectType.ts b/src/types/models/ObjectType.ts new file mode 100644 index 0000000..38eaeff --- /dev/null +++ b/src/types/models/ObjectType.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +/** + * + * @export + * @interface ObjectType + */ +export interface ObjectType { + /** + * The name of the data type. + * @type {string} + * @memberof ObjectType + */ + data_type: string; +} + +/** + * Check if a given object implements the ObjectType interface. + */ +export function instanceOfObjectType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function ObjectTypeFromJSON(json: any): ObjectType { + return ObjectTypeFromJSONTyped(json, false); +} + +export function ObjectTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ObjectType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + }; +} + +export function ObjectTypeToJSON(value?: ObjectType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + }; +} diff --git a/src/types/models/PairwiseDistancesActionOutput.ts b/src/types/models/PairwiseDistancesActionOutput.ts new file mode 100644 index 0000000..96b3115 --- /dev/null +++ b/src/types/models/PairwiseDistancesActionOutput.ts @@ -0,0 +1,79 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface PairwiseDistancesActionOutput + */ +export interface PairwiseDistancesActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof PairwiseDistancesActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof PairwiseDistancesActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof PairwiseDistancesActionOutput + */ + operation_type: string; + /** + * The pairwise distance values. + * @type {Array} + * @memberof PairwiseDistancesActionOutput + */ + output?: Array | null; +} + +/** + * Check if a given object implements the PairwiseDistancesActionOutput interface. + */ +export function instanceOfPairwiseDistancesActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function PairwiseDistancesActionOutputFromJSON(json: any): PairwiseDistancesActionOutput { + return PairwiseDistancesActionOutputFromJSONTyped(json, false); +} + +export function PairwiseDistancesActionOutputFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PairwiseDistancesActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : json["output"], + }; +} + +export function PairwiseDistancesActionOutputToJSON(value?: PairwiseDistancesActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: value.output, + }; +} diff --git a/src/types/models/PairwiseDistancesRequest.ts b/src/types/models/PairwiseDistancesRequest.ts new file mode 100644 index 0000000..7348f2c --- /dev/null +++ b/src/types/models/PairwiseDistancesRequest.ts @@ -0,0 +1,113 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of the pairwise distances metric request. + * @export + * @interface PairwiseDistancesRequest + */ +export interface PairwiseDistancesRequest { + /** + * List of tuples, of session id and index, where index is the original 0-based index of the case as it was + * trained into the session. If specified must be either length of 1 or match length of `to_values` or `to_case_indices`. + * @type {Array>} + * @memberof PairwiseDistancesRequest + */ + from_case_indices?: Array>; + /** + * A 2d-list of case values. If specified must be either length of 1 or match length of `to_values` or `to_case_indices`. + * @type {Array>} + * @memberof PairwiseDistancesRequest + */ + from_values?: Array>; + /** + * List of tuples, of session id and index, where index is the original 0-based index of the case as it was + * trained into the session. If specified must be either length of 1 or match length of `from_values` or `from_case_indices`. + * @type {Array>} + * @memberof PairwiseDistancesRequest + */ + to_case_indices?: Array>; + /** + * A 2d-list of case values. If specified must be either length of 1 or match length of `from_values` or `from_case_indices`. + * @type {Array>} + * @memberof PairwiseDistancesRequest + */ + to_values?: Array>; + /** + * List of feature names to use when computing pairwise distances. If unspecified uses all features. + * @type {Array} + * @memberof PairwiseDistancesRequest + */ + features?: Array; + /** + * The action feature. If specified, uses targeted hyperparameters used to predict this `action_feature`, + * otherwise uses targetless hyperparameters. + * @type {string} + * @memberof PairwiseDistancesRequest + */ + action_feature?: string; + /** + * If set to True, will scale influence weights by each case's `weight_feature` weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof PairwiseDistancesRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally + * managed case weight. + * @type {string} + * @memberof PairwiseDistancesRequest + */ + weight_feature?: string; +} + +/** + * Check if a given object implements the PairwiseDistancesRequest interface. + */ +export function instanceOfPairwiseDistancesRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function PairwiseDistancesRequestFromJSON(json: any): PairwiseDistancesRequest { + return PairwiseDistancesRequestFromJSONTyped(json, false); +} + +export function PairwiseDistancesRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): PairwiseDistancesRequest { + if (json === undefined || json === null) { + return json; + } + return { + from_case_indices: !exists(json, "from_case_indices") ? undefined : json["from_case_indices"], + from_values: !exists(json, "from_values") ? undefined : json["from_values"], + to_case_indices: !exists(json, "to_case_indices") ? undefined : json["to_case_indices"], + to_values: !exists(json, "to_values") ? undefined : json["to_values"], + features: !exists(json, "features") ? undefined : json["features"], + action_feature: !exists(json, "action_feature") ? undefined : json["action_feature"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + }; +} + +export function PairwiseDistancesRequestToJSON(value?: PairwiseDistancesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + from_case_indices: value.from_case_indices, + from_values: value.from_values, + to_case_indices: value.to_case_indices, + to_values: value.to_values, + features: value.features, + action_feature: value.action_feature, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + }; +} diff --git a/src/types/models/RandomSeedRequest.ts b/src/types/models/RandomSeedRequest.ts new file mode 100644 index 0000000..33e87ce --- /dev/null +++ b/src/types/models/RandomSeedRequest.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface RandomSeedRequest + */ +export interface RandomSeedRequest { + /** + * The random seed string. + * @type {string} + * @memberof RandomSeedRequest + */ + seed?: string | null; +} + +/** + * Check if a given object implements the RandomSeedRequest interface. + */ +export function instanceOfRandomSeedRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function RandomSeedRequestFromJSON(json: any): RandomSeedRequest { + return RandomSeedRequestFromJSONTyped(json, false); +} + +export function RandomSeedRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): RandomSeedRequest { + if (json === undefined || json === null) { + return json; + } + return { + seed: !exists(json, "seed") ? undefined : json["seed"], + }; +} + +export function RandomSeedRequestToJSON(value?: RandomSeedRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + seed: value.seed, + }; +} diff --git a/src/types/models/ReactActionOutput.ts b/src/types/models/ReactActionOutput.ts new file mode 100644 index 0000000..864f448 --- /dev/null +++ b/src/types/models/ReactActionOutput.ts @@ -0,0 +1,79 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactResponse } from "./ReactResponse"; +import { ReactResponseFromJSON, ReactResponseToJSON } from "./ReactResponse"; + +/** + * + * @export + * @interface ReactActionOutput + */ +export interface ReactActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof ReactActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof ReactActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof ReactActionOutput + */ + operation_type: string; + /** + * + * @type {ReactResponse} + * @memberof ReactActionOutput + */ + output?: ReactResponse | null; +} + +/** + * Check if a given object implements the ReactActionOutput interface. + */ +export function instanceOfReactActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function ReactActionOutputFromJSON(json: any): ReactActionOutput { + return ReactActionOutputFromJSONTyped(json, false); +} + +export function ReactActionOutputFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : ReactResponseFromJSON(json["output"]), + }; +} + +export function ReactActionOutputToJSON(value?: ReactActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: ReactResponseToJSON(value.output), + }; +} diff --git a/src/types/models/ReactAggregateActionOutput.ts b/src/types/models/ReactAggregateActionOutput.ts new file mode 100644 index 0000000..c97e3da --- /dev/null +++ b/src/types/models/ReactAggregateActionOutput.ts @@ -0,0 +1,82 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactAggregateResponse } from "./ReactAggregateResponse"; +import { ReactAggregateResponseFromJSON, ReactAggregateResponseToJSON } from "./ReactAggregateResponse"; + +/** + * + * @export + * @interface ReactAggregateActionOutput + */ +export interface ReactAggregateActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof ReactAggregateActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof ReactAggregateActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof ReactAggregateActionOutput + */ + operation_type: string; + /** + * + * @type {ReactAggregateResponse} + * @memberof ReactAggregateActionOutput + */ + output?: ReactAggregateResponse | null; +} + +/** + * Check if a given object implements the ReactAggregateActionOutput interface. + */ +export function instanceOfReactAggregateActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function ReactAggregateActionOutputFromJSON(json: any): ReactAggregateActionOutput { + return ReactAggregateActionOutputFromJSONTyped(json, false); +} + +export function ReactAggregateActionOutputFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactAggregateActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : ReactAggregateResponseFromJSON(json["output"]), + }; +} + +export function ReactAggregateActionOutputToJSON(value?: ReactAggregateActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: ReactAggregateResponseToJSON(value.output), + }; +} diff --git a/src/types/models/ReactAggregateDetails.ts b/src/types/models/ReactAggregateDetails.ts new file mode 100644 index 0000000..3c06856 --- /dev/null +++ b/src/types/models/ReactAggregateDetails.ts @@ -0,0 +1,255 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Returns details and prediction stats data for a given reaction for the specified flags. + * @export + * @interface ReactAggregateDetails + */ +export interface ReactAggregateDetails { + /** + * If true outputs full feature prediction stats for all (context and action) features. The prediction stats returned are set by the "selected_prediction_stats" parameter in the 'details' parameter. Uses full calculations, which uses leave-one-out for features for computations. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + prediction_stats?: boolean; + /** + * For each context_feature, use the full set of all other context_features to predict the feature. False removes cached values. When "prediction_stats" in the "details" parameter is true, the Trainee will also calculate and cache the full feature residuals. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_residuals_full?: boolean; + /** + * For each context_feature, use the robust (power set/permutations) set of all other context_features to predict the feature. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_residuals_robust?: boolean; + /** + * For each context_feature, use the full set of all other context_features to compute the mean absolute delta between prediction of the action feature with and without the context features in the model. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_contributions_full?: boolean; + /** + * For each context_feature, use the robust (power set/permutation) set of all other context features to compute the mean absolute delta between prediction of the action feature with and without the context features in the model. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_contributions_robust?: boolean; + /** + * When True will compute Mean Decrease in Accuracy (MDA) for each context feature at predicting the action feature. Drop each feature and use the full set of remaining context features for each prediction. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_mda_full?: boolean; + /** + * Compute Mean Decrease in Accuracy (MDA) by dropping each feature and using the robust (power set/permutations) set of remaining context features for each prediction. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_mda_robust?: boolean; + /** + * Compute Mean Decrease in Accuracy (MDA) by scrambling each feature and using the full set of remaining context features for each prediction. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_mda_permutation_full?: boolean; + /** + * Compute MDA by scrambling each feature and using the robust (power set/permutations) set of remaining context features for each prediction. False removes cached values. + * @type {boolean} + * @memberof ReactAggregateDetails + */ + feature_mda_permutation_robust?: boolean; + /** + * A condition map to select the action set, which is the dataset for which + * the prediction stats are for. If both action_condition and context_condition + * are provided, then all of the action cases selected by the action_condition + * will be excluded from the context set, which is the set being queried to + * make predictions on the action set, effectively holding them out. + * If only action_condition is specified, then only the single predicted case + * will be left out. + * + * The dictionary keys are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * @type {{ [key: string]: any; }} + * @memberof ReactAggregateDetails + */ + action_condition?: { [key: string]: any }; + /** + * Exact matching or fuzzy matching. Only used if action_condition is not not null. + * @type {string} + * @memberof ReactAggregateDetails + */ + action_condition_precision?: ReactAggregateDetailsActionConditionPrecisionEnum; + /** + * The maximum amount of cases to use to calculate prediction stats. + * If not specified, the limit will be k cases if precision is + * "similar", or 1000 cases if precision is "exact". Works with or + * without action_condition. + * If action_condition is set: + * - If None, will be set to k if precision is "similar" or no limit if precision is "exact". + * If action_condition is not set: + * - If None, will be set to the Howso default limit of 2000. + * @type {number} + * @memberof ReactAggregateDetails + */ + action_num_cases?: number; + /** + * A condition map to select the context set, which is the set being queried to make + * predictions on the action set. If both action_condition and context_condition + * are provided, then all of the cases from the action set, which is the dataset for which the + * prediction stats are for, will be excluded from the context set, effectively holding them out. + * If only action_condition is specified, then only the single predicted case will be left out. + * + * The dictionary keys are the feature name and values are one of: + * - None + * - A value, must match exactly. + * - An array of two numeric values, specifying an inclusive range. Only applicable to continuous and numeric ordinal features. + * - An array of string values, must match any of these values exactly. Only applicable to nominal and string ordinal features. + * @type {{ [key: string]: any; }} + * @memberof ReactAggregateDetails + */ + context_condition?: { [key: string]: any }; + /** + * Exact matching or fuzzy matching. Only used if context_condition is not not null. + * @type {string} + * @memberof ReactAggregateDetails + */ + context_condition_precision?: ReactAggregateDetailsContextConditionPrecisionEnum; + /** + * Limit on the number of context cases when context_condition_precision is set to "similar". + * If None, will be set to k. + * @type {number} + * @memberof ReactAggregateDetails + */ + context_precision_num_cases?: number; + /** + * List of features to use when calculating conditional prediction stats. Should contain all action and + * context features desired. If ``action_feature`` is also provided, that feature will automatically be + * appended to this list if it is not already in the list. + * @type {Array} + * @memberof ReactAggregateDetails + */ + prediction_stats_features?: Array; + /** + * Types of stats to output. When unspecified, returns all except the confusion_matrix. If all, then returns all including the confusion_matrix. + * @type {Array} + * @memberof ReactAggregateDetails + */ + selected_prediction_stats?: Array; +} + +/** + * @export + * @enum {string} + */ +export type ReactAggregateDetailsActionConditionPrecisionEnum = "exact" | "similar"; +/** + * @export + * @enum {string} + */ +export type ReactAggregateDetailsContextConditionPrecisionEnum = "exact" | "similar"; +/** + * @export + * @enum {string} + */ +export type ReactAggregateDetailsSelectedPredictionStatsEnum = + | "all" + | "accuracy" + | "confusion_matrix" + | "mae" + | "precision" + | "r2" + | "recall" + | "rmse" + | "spearman_coeff" + | "mcc" + | "missing_value_accuracy"; + +/** + * Check if a given object implements the ReactAggregateDetails interface. + */ +export function instanceOfReactAggregateDetails(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactAggregateDetailsFromJSON(json: any): ReactAggregateDetails { + return ReactAggregateDetailsFromJSONTyped(json, false); +} + +export function ReactAggregateDetailsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactAggregateDetails { + if (json === undefined || json === null) { + return json; + } + return { + prediction_stats: !exists(json, "prediction_stats") ? undefined : json["prediction_stats"], + feature_residuals_full: !exists(json, "feature_residuals_full") ? undefined : json["feature_residuals_full"], + feature_residuals_robust: !exists(json, "feature_residuals_robust") ? undefined : json["feature_residuals_robust"], + feature_contributions_full: !exists(json, "feature_contributions_full") + ? undefined + : json["feature_contributions_full"], + feature_contributions_robust: !exists(json, "feature_contributions_robust") + ? undefined + : json["feature_contributions_robust"], + feature_mda_full: !exists(json, "feature_mda_full") ? undefined : json["feature_mda_full"], + feature_mda_robust: !exists(json, "feature_mda_robust") ? undefined : json["feature_mda_robust"], + feature_mda_permutation_full: !exists(json, "feature_mda_permutation_full") + ? undefined + : json["feature_mda_permutation_full"], + feature_mda_permutation_robust: !exists(json, "feature_mda_permutation_robust") + ? undefined + : json["feature_mda_permutation_robust"], + action_condition: !exists(json, "action_condition") ? undefined : json["action_condition"], + action_condition_precision: !exists(json, "action_condition_precision") + ? undefined + : json["action_condition_precision"], + action_num_cases: !exists(json, "action_num_cases") ? undefined : json["action_num_cases"], + context_condition: !exists(json, "context_condition") ? undefined : json["context_condition"], + context_condition_precision: !exists(json, "context_condition_precision") + ? undefined + : json["context_condition_precision"], + context_precision_num_cases: !exists(json, "context_precision_num_cases") + ? undefined + : json["context_precision_num_cases"], + prediction_stats_features: !exists(json, "prediction_stats_features") + ? undefined + : json["prediction_stats_features"], + selected_prediction_stats: !exists(json, "selected_prediction_stats") + ? undefined + : json["selected_prediction_stats"], + }; +} + +export function ReactAggregateDetailsToJSON(value?: ReactAggregateDetails | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + prediction_stats: value.prediction_stats, + feature_residuals_full: value.feature_residuals_full, + feature_residuals_robust: value.feature_residuals_robust, + feature_contributions_full: value.feature_contributions_full, + feature_contributions_robust: value.feature_contributions_robust, + feature_mda_full: value.feature_mda_full, + feature_mda_robust: value.feature_mda_robust, + feature_mda_permutation_full: value.feature_mda_permutation_full, + feature_mda_permutation_robust: value.feature_mda_permutation_robust, + action_condition: value.action_condition, + action_condition_precision: value.action_condition_precision, + action_num_cases: value.action_num_cases, + context_condition: value.context_condition, + context_condition_precision: value.context_condition_precision, + context_precision_num_cases: value.context_precision_num_cases, + prediction_stats_features: value.prediction_stats_features, + selected_prediction_stats: value.selected_prediction_stats, + }; +} diff --git a/src/types/models/ReactAggregateRequest.ts b/src/types/models/ReactAggregateRequest.ts new file mode 100644 index 0000000..32fd1a3 --- /dev/null +++ b/src/types/models/ReactAggregateRequest.ts @@ -0,0 +1,197 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactAggregateDetails } from "./ReactAggregateDetails"; +import { ReactAggregateDetailsFromJSON, ReactAggregateDetailsToJSON } from "./ReactAggregateDetails"; + +/** + * Request body for react aggregate. + * @export + * @interface ReactAggregateRequest + */ +export interface ReactAggregateRequest { + /** + * + * @type {ReactAggregateDetails} + * @memberof ReactAggregateRequest + */ + details?: ReactAggregateDetails; + /** + * Name of target feature for which to do computations. If "prediction_stats_action_feature" and "feature_influences_action_feature" are not provided, they will default to this value. If "feature_influences_action_feature" is not provided and feature influences "details" are selected, this feature must be provided. + * @type {string} + * @memberof ReactAggregateRequest + */ + action_feature?: string; + /** + * When feature influences such as contributions and mda, use this feature as the action feature. If not provided, will default to the "action_feature" if provided. If "action_feature" is not provided and feature influences "details" are selected, this feature must be provided. + * @type {string} + * @memberof ReactAggregateRequest + */ + feature_influences_action_feature?: string; + /** + * When calculating residuals and prediction stats, uses this target features's hyperparameters. The trainee must have been analyzed with this feature as the action feature first. If both "prediction_stats_action_feature" and "action_feature" are not provided, by default residuals and prediction stats uses ".targetless" hyperparameters. If "action_feature" is provided, and this value is not provided, will default to "action_feature". + * @type {string} + * @memberof ReactAggregateRequest + */ + prediction_stats_action_feature?: string; + /** + * List of features names to use as contexts for computations. Defaults to all non-unique features if not specified. + * @type {Array} + * @memberof ReactAggregateRequest + */ + context_features?: Array; + /** + * Full path for hyperparameters to use for computation. If specified for any residual computations, takes precedence over action_feature parameter. + * @type {Array} + * @memberof ReactAggregateRequest + */ + hyperparameter_param_path?: Array; + /** + * Total sample size of model to use (using sampling with replacement) for robust contribution computation. Defaults to 300. + * @type {number} + * @memberof ReactAggregateRequest + */ + num_robust_influence_samples?: number; + /** + * Specifies the number of robust samples to use for each case for robust contribution computations. Defaults to 300 + 2 * (number of features). + * @type {number} + * @memberof ReactAggregateRequest + */ + num_robust_influence_samples_per_case?: number; + /** + * Total sample size of model to use (using sampling with replacement) for robust mda and residual computation. Defaults to 1000 * (1 + log(number of features)). Note: robust mda will be updated to use num_robust_influence_samples in a future release. + * @type {number} + * @memberof ReactAggregateRequest + */ + num_robust_residual_samples?: number; + /** + * Total sample size of model to use (using sampling with replacement) for all non-robust computation. Defaults to 1000. If specified overrides sample_model_fraction. + * @type {number} + * @memberof ReactAggregateRequest + */ + num_samples?: number; + /** + * When specified, will attempt to return residuals that were computed using hyperparameters with the specified robust or non-robust type. + * @type {boolean} + * @memberof ReactAggregateRequest + */ + robust_hyperparameters?: boolean; + /** + * A value between 0.0 - 1.0, percent of model to use in sampling (using sampling without replacement). Applicable only to non-robust computation. Ignored if num_samples is specified. Higher values provide better accuracy at the cost of compute time. + * @type {number} + * @memberof ReactAggregateRequest + */ + sample_model_fraction?: number; + /** + * If specified will calculate residuals only on a sub model of the specified size from the full model. Applicable only to models > 1000 cases. + * @type {number} + * @memberof ReactAggregateRequest + */ + sub_model_size?: number; + /** + * The number of predictions a class should have (value of a cell in the matrix) for it to remain in the confusion matrix. If the count is less than this value, it will be accumulated into a single value of all insignificant predictions for the class and removed from the confusion matrix. Defaults to 10, applicable only to confusion matrices when computing residuals. + * @type {number} + * @memberof ReactAggregateRequest + */ + confusion_matrix_min_count?: number; + /** + * When calculating residuals and prediction stats, uses this target features's hyperparameters. The trainee must have been analyzed with this feature as the action feature first. If not provided, by default residuals and prediction stats uses .targetless hyperparameters. + * @type {string} + * @memberof ReactAggregateRequest + */ + residuals_hyperparameter_feature?: string; + /** + * When True, will scale influence weights by each case's weight_feature weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof ReactAggregateRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified uses the internally managed case weight. + * @type {string} + * @memberof ReactAggregateRequest + */ + weight_feature?: string; +} + +/** + * Check if a given object implements the ReactAggregateRequest interface. + */ +export function instanceOfReactAggregateRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactAggregateRequestFromJSON(json: any): ReactAggregateRequest { + return ReactAggregateRequestFromJSONTyped(json, false); +} + +export function ReactAggregateRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactAggregateRequest { + if (json === undefined || json === null) { + return json; + } + return { + details: !exists(json, "details") ? undefined : ReactAggregateDetailsFromJSON(json["details"]), + action_feature: !exists(json, "action_feature") ? undefined : json["action_feature"], + feature_influences_action_feature: !exists(json, "feature_influences_action_feature") + ? undefined + : json["feature_influences_action_feature"], + prediction_stats_action_feature: !exists(json, "prediction_stats_action_feature") + ? undefined + : json["prediction_stats_action_feature"], + context_features: !exists(json, "context_features") ? undefined : json["context_features"], + hyperparameter_param_path: !exists(json, "hyperparameter_param_path") + ? undefined + : json["hyperparameter_param_path"], + num_robust_influence_samples: !exists(json, "num_robust_influence_samples") + ? undefined + : json["num_robust_influence_samples"], + num_robust_influence_samples_per_case: !exists(json, "num_robust_influence_samples_per_case") + ? undefined + : json["num_robust_influence_samples_per_case"], + num_robust_residual_samples: !exists(json, "num_robust_residual_samples") + ? undefined + : json["num_robust_residual_samples"], + num_samples: !exists(json, "num_samples") ? undefined : json["num_samples"], + robust_hyperparameters: !exists(json, "robust_hyperparameters") ? undefined : json["robust_hyperparameters"], + sample_model_fraction: !exists(json, "sample_model_fraction") ? undefined : json["sample_model_fraction"], + sub_model_size: !exists(json, "sub_model_size") ? undefined : json["sub_model_size"], + confusion_matrix_min_count: !exists(json, "confusion_matrix_min_count") + ? undefined + : json["confusion_matrix_min_count"], + residuals_hyperparameter_feature: !exists(json, "residuals_hyperparameter_feature") + ? undefined + : json["residuals_hyperparameter_feature"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + }; +} + +export function ReactAggregateRequestToJSON(value?: ReactAggregateRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + details: ReactAggregateDetailsToJSON(value.details), + action_feature: value.action_feature, + feature_influences_action_feature: value.feature_influences_action_feature, + prediction_stats_action_feature: value.prediction_stats_action_feature, + context_features: value.context_features, + hyperparameter_param_path: value.hyperparameter_param_path, + num_robust_influence_samples: value.num_robust_influence_samples, + num_robust_influence_samples_per_case: value.num_robust_influence_samples_per_case, + num_robust_residual_samples: value.num_robust_residual_samples, + num_samples: value.num_samples, + robust_hyperparameters: value.robust_hyperparameters, + sample_model_fraction: value.sample_model_fraction, + sub_model_size: value.sub_model_size, + confusion_matrix_min_count: value.confusion_matrix_min_count, + residuals_hyperparameter_feature: value.residuals_hyperparameter_feature, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + }; +} diff --git a/src/types/models/ReactAggregateResponse.ts b/src/types/models/ReactAggregateResponse.ts new file mode 100644 index 0000000..e3cab34 --- /dev/null +++ b/src/types/models/ReactAggregateResponse.ts @@ -0,0 +1,66 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists, mapValues } from "../runtime"; +import type { ReactAggregateResponseContent } from "./ReactAggregateResponseContent"; +import { + ReactAggregateResponseContentFromJSON, + ReactAggregateResponseContentToJSON, +} from "./ReactAggregateResponseContent"; +import type { Warning } from "./Warning"; +import { WarningFromJSON, WarningToJSON } from "./Warning"; + +/** + * The response body of react_aggregate + * @export + * @interface ReactAggregateResponse + */ +export interface ReactAggregateResponse { + /** + * + * @type {Array} + * @memberof ReactAggregateResponse + */ + warnings?: Array; + /** + * + * @type {{ [key: string]: ReactAggregateResponseContent; }} + * @memberof ReactAggregateResponse + */ + content?: { [key: string]: ReactAggregateResponseContent }; +} + +/** + * Check if a given object implements the ReactAggregateResponse interface. + */ +export function instanceOfReactAggregateResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactAggregateResponseFromJSON(json: any): ReactAggregateResponse { + return ReactAggregateResponseFromJSONTyped(json, false); +} + +export function ReactAggregateResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactAggregateResponse { + if (json === undefined || json === null) { + return json; + } + return { + warnings: !exists(json, "warnings") ? undefined : (json["warnings"] as Array).map(WarningFromJSON), + content: !exists(json, "content") ? undefined : mapValues(json["content"], ReactAggregateResponseContentFromJSON), + }; +} + +export function ReactAggregateResponseToJSON(value?: ReactAggregateResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + warnings: value.warnings === undefined ? undefined : (value.warnings as Array).map(WarningToJSON), + content: value.content === undefined ? undefined : mapValues(value.content, ReactAggregateResponseContentToJSON), + }; +} diff --git a/src/types/models/ReactAggregateResponseContent.ts b/src/types/models/ReactAggregateResponseContent.ts new file mode 100644 index 0000000..1289bf9 --- /dev/null +++ b/src/types/models/ReactAggregateResponseContent.ts @@ -0,0 +1,205 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactAggregateResponseContentConfusionMatrix } from "./ReactAggregateResponseContentConfusionMatrix"; +import { + ReactAggregateResponseContentConfusionMatrixFromJSON, + ReactAggregateResponseContentConfusionMatrixToJSON, +} from "./ReactAggregateResponseContentConfusionMatrix"; + +/** + * Prediction feature statistics and details. + * @export + * @interface ReactAggregateResponseContent + */ +export interface ReactAggregateResponseContent { + /** + * The accuracy (1 - mean absolute error) value. Applicable only for nominal features, computed by computing residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + accuracy?: number | null; + /** + * + * @type {ReactAggregateResponseContentConfusionMatrix} + * @memberof ReactAggregateResponseContent + */ + confusion_matrix?: ReactAggregateResponseContentConfusionMatrix | null; + /** + * The full contribution to the predicted value of an action feature. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_contributions_full?: number | null; + /** + * The robust contribution to the predicted value of an action feature. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_contributions_robust?: number | null; + /** + * The mean absolute error value. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + mae?: number | null; + /** + * The full feature residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_residuals_full?: number | null; + /** + * The robust feature residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_residuals_robust?: number | null; + /** + * The full mean decrease in accuracy value. Computed by dropping each feature and use the full set of remaining context features for each prediction. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_mda_full?: number | null; + /** + * The robust mean decrease in accuracy value. Computed by dropping each feature and use the full set of remaining context features for each prediction. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_mda_robust?: number | null; + /** + * The full mean decrease in accuracy permutation value. Computed by scrambling each feature and using the full set of remaining context features for each prediction. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_mda_permutation_full?: number | null; + /** + * The robust mean decrease in accuracy permutation value. Computed by scrambling each feature and using the full set of remaining context features for each prediction. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + feature_mda_permutation_robust?: number | null; + /** + * The precision (positive predictive) value. Applicable only for nominal features, computed by computing residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + precision?: number | null; + /** + * The R-squared (coefficient of determination) value. Applicable only for continuous features, computed by computing residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + r2?: number | null; + /** + * The recall (sensitivity) value. Applicable only for nominal features, computed by computing residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + recall?: number | null; + /** + * The missing value accuracy. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + missing_value_accuracy?: number | null; + /** + * The root-mean-squared-error value. Applicable only for continuous features, computed by computing residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + rmse?: number | null; + /** + * The Spearman's rank correlation coefficient value. Applicable only for continuous features, computed by computing residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + spearman_coeff?: number | null; + /** + * The Matthews correlation coefficient value. Applicable only for nominal features, computed by computing residuals. + * @type {number} + * @memberof ReactAggregateResponseContent + */ + mcc?: number | null; +} + +/** + * Check if a given object implements the ReactAggregateResponseContent interface. + */ +export function instanceOfReactAggregateResponseContent(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactAggregateResponseContentFromJSON(json: any): ReactAggregateResponseContent { + return ReactAggregateResponseContentFromJSONTyped(json, false); +} + +export function ReactAggregateResponseContentFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactAggregateResponseContent { + if (json === undefined || json === null) { + return json; + } + return { + accuracy: !exists(json, "accuracy") ? undefined : json["accuracy"], + confusion_matrix: !exists(json, "confusion_matrix") + ? undefined + : ReactAggregateResponseContentConfusionMatrixFromJSON(json["confusion_matrix"]), + feature_contributions_full: !exists(json, "feature_contributions_full") + ? undefined + : json["feature_contributions_full"], + feature_contributions_robust: !exists(json, "feature_contributions_robust") + ? undefined + : json["feature_contributions_robust"], + mae: !exists(json, "mae") ? undefined : json["mae"], + feature_residuals_full: !exists(json, "feature_residuals_full") ? undefined : json["feature_residuals_full"], + feature_residuals_robust: !exists(json, "feature_residuals_robust") ? undefined : json["feature_residuals_robust"], + feature_mda_full: !exists(json, "feature_mda_full") ? undefined : json["feature_mda_full"], + feature_mda_robust: !exists(json, "feature_mda_robust") ? undefined : json["feature_mda_robust"], + feature_mda_permutation_full: !exists(json, "feature_mda_permutation_full") + ? undefined + : json["feature_mda_permutation_full"], + feature_mda_permutation_robust: !exists(json, "feature_mda_permutation_robust") + ? undefined + : json["feature_mda_permutation_robust"], + precision: !exists(json, "precision") ? undefined : json["precision"], + r2: !exists(json, "r2") ? undefined : json["r2"], + recall: !exists(json, "recall") ? undefined : json["recall"], + missing_value_accuracy: !exists(json, "missing_value_accuracy") ? undefined : json["missing_value_accuracy"], + rmse: !exists(json, "rmse") ? undefined : json["rmse"], + spearman_coeff: !exists(json, "spearman_coeff") ? undefined : json["spearman_coeff"], + mcc: !exists(json, "mcc") ? undefined : json["mcc"], + }; +} + +export function ReactAggregateResponseContentToJSON(value?: ReactAggregateResponseContent | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + accuracy: value.accuracy, + confusion_matrix: ReactAggregateResponseContentConfusionMatrixToJSON(value.confusion_matrix), + feature_contributions_full: value.feature_contributions_full, + feature_contributions_robust: value.feature_contributions_robust, + mae: value.mae, + feature_residuals_full: value.feature_residuals_full, + feature_residuals_robust: value.feature_residuals_robust, + feature_mda_full: value.feature_mda_full, + feature_mda_robust: value.feature_mda_robust, + feature_mda_permutation_full: value.feature_mda_permutation_full, + feature_mda_permutation_robust: value.feature_mda_permutation_robust, + precision: value.precision, + r2: value.r2, + recall: value.recall, + missing_value_accuracy: value.missing_value_accuracy, + rmse: value.rmse, + spearman_coeff: value.spearman_coeff, + mcc: value.mcc, + }; +} diff --git a/src/types/models/ReactAggregateResponseContentConfusionMatrix.ts b/src/types/models/ReactAggregateResponseContentConfusionMatrix.ts new file mode 100644 index 0000000..8a82da5 --- /dev/null +++ b/src/types/models/ReactAggregateResponseContentConfusionMatrix.ts @@ -0,0 +1,81 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface ReactAggregateResponseContentConfusionMatrix + */ +export interface ReactAggregateResponseContentConfusionMatrix { + /** + * The sparse confusion matrix for the predicted values of an action feature. + * @type {{ [key: string]: { [key: string]: number; }; }} + * @memberof ReactAggregateResponseContentConfusionMatrix + */ + matrix?: { [key: string]: { [key: string]: number } }; + /** + * Total count of all correct predictions for classes that did not have a statistically significant amount. + * @type {number} + * @memberof ReactAggregateResponseContentConfusionMatrix + */ + leftover_correct?: number; + /** + * Total count of all incorrect predictions for classes that did not have a statistically significant amount. + * @type {number} + * @memberof ReactAggregateResponseContentConfusionMatrix + */ + leftover_incorrect?: number; + /** + * Total count of all other statistically insignificant predictions for classes that were predicted correctly with significance. + * @type {number} + * @memberof ReactAggregateResponseContentConfusionMatrix + */ + other_counts?: number; +} + +/** + * Check if a given object implements the ReactAggregateResponseContentConfusionMatrix interface. + */ +export function instanceOfReactAggregateResponseContentConfusionMatrix(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactAggregateResponseContentConfusionMatrixFromJSON( + json: any, +): ReactAggregateResponseContentConfusionMatrix { + return ReactAggregateResponseContentConfusionMatrixFromJSONTyped(json, false); +} + +export function ReactAggregateResponseContentConfusionMatrixFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactAggregateResponseContentConfusionMatrix { + if (json === undefined || json === null) { + return json; + } + return { + matrix: !exists(json, "matrix") ? undefined : json["matrix"], + leftover_correct: !exists(json, "leftover_correct") ? undefined : json["leftover_correct"], + leftover_incorrect: !exists(json, "leftover_incorrect") ? undefined : json["leftover_incorrect"], + other_counts: !exists(json, "other_counts") ? undefined : json["other_counts"], + }; +} + +export function ReactAggregateResponseContentConfusionMatrixToJSON( + value?: ReactAggregateResponseContentConfusionMatrix | null, +): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + matrix: value.matrix, + leftover_correct: value.leftover_correct, + leftover_incorrect: value.leftover_incorrect, + other_counts: value.other_counts, + }; +} diff --git a/src/types/models/ReactDetails.ts b/src/types/models/ReactDetails.ts new file mode 100644 index 0000000..0ea1f96 --- /dev/null +++ b/src/types/models/ReactDetails.ts @@ -0,0 +1,411 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Returns details and audit data for a given reaction for the specified audit data flags. + * Local and regional models are used to determine details: + * Local model - only the most similar cases used to directly determine the prediction value, used to compute affects of cases directly + * responsible for the predicted output. + * Regional model - the most similar cases to the prediction, represented by the maximum of either 30 or the local model size. Used in + * situations where relying on a small local model may produce noisy results. + * @export + * @interface ReactDetails + */ +export interface ReactDetails { + /** + * When true, outputs the most influential cases and their influence weights based on the surprisal of each case relative to the context being predicted among the cases. Uses only the context features of the reacted case. + * @type {boolean} + * @memberof ReactDetails + */ + influential_cases?: boolean; + /** + * If True, outputs a dictionary of the parameters used in the react call. These include k, p, distance_transform, feature_weights, feature_deviations, nominal_class_counts, and use_irw. + * @type {boolean} + * @memberof ReactDetails + */ + derivation_parameters?: boolean; + /** + * When true, outputs familiarity conviction of addition for each of the influential cases. + * @type {boolean} + * @memberof ReactDetails + */ + influential_cases_familiarity_convictions?: boolean; + /** + * When true, outputs the surprisal for each of the influential cases. + * @type {boolean} + * @memberof ReactDetails + */ + influential_cases_raw_weights?: boolean; + /** + * When true, outputs an automatically determined (when 'num_most_similar_cases' is not specified) relevant number of similar cases, which will first include the influential cases. Uses only the context features of the reacted case. + * @type {boolean} + * @memberof ReactDetails + */ + most_similar_cases?: boolean; + /** + * When defined, outputs this manually specified number of most similar cases, which will first include the influential cases. Takes precedence over 'most_similar_cases' parameter. + * @type {number} + * @memberof ReactDetails + */ + num_most_similar_cases?: number; + /** + * When defined, outputs the specified number of most similar case indices when 'distance_ratio' is also set to true. + * @type {number} + * @memberof ReactDetails + */ + num_most_similar_case_indices?: number; + /** + * Specifies the number of robust samples to use for each case. Applicable only for computing robust feature contributions or robust case feature contributions. Defaults to 2000 when unspecified. Higher values will take longer but provide more stable results. + * @type {number} + * @memberof ReactDetails + */ + num_robust_influence_samples_per_case?: number; + /** + * When true, outputs an automatically determined (when 'num_boundary_cases' is not specified) relevant number of boundary cases. Uses both context and action features of the reacted case to determine the counterfactual boundary based on action features, which maximize the dissimilarity of action features while maximizing the similarity of context features. If action features aren't specified, uses familiarity conviction to determine the boundary instead. + * @type {boolean} + * @memberof ReactDetails + */ + boundary_cases?: boolean; + /** + * When defined, outputs this manually specified number of boundary cases. Takes precedence over 'boundary_cases' parameter. + * @type {number} + * @memberof ReactDetails + */ + num_boundary_cases?: number; + /** + * When true, outputs familiarity conviction of addition for each of the boundary cases. + * @type {boolean} + * @memberof ReactDetails + */ + boundary_cases_familiarity_convictions?: boolean; + /** + * A list of feature names that specifies for what features will per-feature details be computed (residuals, contributions, mda, etc.). This should generally preserve compute, but will not when computing details robustly. Details will be computed for all context and action features if this is not specified. + * @type {Array} + * @memberof ReactDetails + */ + features?: Array; + /** + * If True, outputs feature residuals for all (context and action) features locally around the prediction. Uses only the context features of the reacted case to determine that area. Uses full calculations, which uses leave-one-out for cases for computations. + * @type {boolean} + * @memberof ReactDetails + */ + feature_residuals_full?: boolean; + /** + * If True, outputs feature residuals for all (context and action) features locally around the prediction. Uses only the context features of the reacted case to determine that area. Uses robust calculations, which uses uniform sampling from the power set of features as the contexts for predictions. 'selected_prediction_stats' controls the returned prediction stats. + * @type {boolean} + * @memberof ReactDetails + */ + feature_residuals_robust?: boolean; + /** + * When true outputs feature prediction stats for all (context and action) features locally around the prediction. The stats returned are ("r2", "rmse", "spearman_coeff", "precision", "recall", "accuracy", "mcc", "confusion_matrix", "missing_value_accuracy"). Uses only the context features of the reacted case to determine that area. Uses full calculations, which uses leave-one-out context features for computations. 'selected_prediction_stats' controls the returned prediction stats. + * @type {boolean} + * @memberof ReactDetails + */ + prediction_stats?: boolean; + /** + * When True will compute Mean Decrease in Accuracy (MDA) for each context feature at predicting the action feature. Drop each feature and use the full set of remaining context features for each prediction. False removes cached values. + * @type {boolean} + * @memberof ReactDetails + */ + feature_mda_full?: boolean; + /** + * Compute Mean Decrease in Accuracy MDA by dropping each feature and using the robust (power set/permutations) set of remaining context features for each prediction. False removes cached values. + * @type {boolean} + * @memberof ReactDetails + */ + feature_mda_robust?: boolean; + /** + * If True, outputs each context feature's mean decrease in accuracy of predicting the action feature as an explanation detail given that the specified prediction was already made as specified by the action value. Uses both context and action features of the reacted case to determine that area. Uses full calculations, which uses leave-one-out for cases for computations. + * @type {boolean} + * @memberof ReactDetails + */ + feature_mda_ex_post_full?: boolean; + /** + * If True, outputs each context feature's mean decrease in accuracy of predicting the action feature as an explanation detail given that the specified prediction was already made as specified by the action value. Uses both context and action features of the reacted case to determine that area. Uses robust calculations, which uses uniform sampling from the power set of features as the contexts for predictions. + * @type {boolean} + * @memberof ReactDetails + */ + feature_mda_ex_post_robust?: boolean; + /** + * If True outputs each context feature's absolute and directional differences between the predicted action feature value and the predicted action feature value if each context were not in the model for all context features in the local model area. Uses full calculations, which uses leave-one-out for cases for computations. Directional feature contributions are returned under the key 'directional_feature_contributions_full'. + * @type {boolean} + * @memberof ReactDetails + */ + feature_contributions_full?: boolean; + /** + * If True outputs each context feature's absolute and directional differences between the predicted action feature value and the predicted action feature value if each context were not in the model for all context features in the local model area Uses robust calculations, which uses uniform sampling from the power set of features as the contexts for predictions. Directional feature contributions are returned under the key 'directional_feature_contributions_robust'. + * @type {boolean} + * @memberof ReactDetails + */ + feature_contributions_robust?: boolean; + /** + * If True outputs each context feature's absolute and directional differences between the predicted action feature value and the predicted action feature value if each context feature were not in the model for all context features in this case, using only the values from this specific case. Uses full calculations, which uses leave-one-out for cases for computations. Directional case feature contributions are returned under the 'case_directional_feature_contributions_full' key. + * @type {boolean} + * @memberof ReactDetails + */ + case_feature_contributions_full?: boolean; + /** + * If True outputs each context feature's absolute and directional differences between the predicted action feature value and the predicted action feature value if each context feature were not in the model for all context features in this case, using only the values from this specific case. Uses robust calculations, which uses uniform sampling from the power set of features as the contexts for predictions. Directional case feature contributions are returned under the 'case_directional_feature_contributions_robust' key. + * @type {boolean} + * @memberof ReactDetails + */ + case_feature_contributions_robust?: boolean; + /** + * If True, outputs feature residuals for all (context and action) features for just the specified case. Uses leave-one-out for each feature, while using the others to predict the left out feature with their corresponding values from this case. Uses full calculations, which uses leave-one-out for cases for computations. + * @type {boolean} + * @memberof ReactDetails + */ + case_feature_residuals_full?: boolean; + /** + * If True, outputs feature residuals for all (context and action) features for just the specified case. Uses leave-one-out for each feature, while using the others to predict the left out feature with their corresponding values from this case. Uses robust calculations, which uses uniform sampling from the power set of features as the contexts for predictions. + * @type {boolean} + * @memberof ReactDetails + */ + case_feature_residuals_robust?: boolean; + /** + * If True, outputs each influential case's mean decrease in accuracy of predicting the action feature in the local model area, as if each individual case were included versus not included. Uses only the context features of the reacted case to determine that area. Uses full calculations, which uses leave-one-out for cases for computations. + * @type {boolean} + * @memberof ReactDetails + */ + case_mda_full?: boolean; + /** + * If True, outputs each influential case's mean decrease in accuracy of predicting the action feature in the local model area, as if each individual case were included versus not included. Uses only the context features of the reacted case to determine that area. Uses robust calculations, which uses uniform sampling from the power set of all combinations of cases. + * @type {boolean} + * @memberof ReactDetails + */ + case_mda_robust?: boolean; + /** + * If true outputs each influential case's differences between the predicted action feature value and the predicted action feature value if each individual case were not included. Uses only the context features of the reacted case to determine that area. Uses full calculations, which uses leave-one-out for cases for computations. + * @type {boolean} + * @memberof ReactDetails + */ + case_contributions_full?: boolean; + /** + * If true outputs each influential case's differences between the predicted action feature value and the predicted action feature value if each individual case were not included. Uses only the context features of the reacted case to determine that area. Uses robust calculations, which uses uniform sampling from the power set of all combinations of cases. + * @type {boolean} + * @memberof ReactDetails + */ + case_contributions_robust?: boolean; + /** + * If True, outputs this case's feature residual convictions for the global model. Computed as: global model feature residual divided by case feature residual. Uses full calculations, which uses leave-one-out for cases for computations. + * @type {boolean} + * @memberof ReactDetails + */ + global_case_feature_residual_convictions_full?: boolean; + /** + * If True, outputs this case's feature residual convictions for the global model. Computed as: global model feature residual divided by case feature residual. Uses robust calculations, which uses uniform sampling from the power set of features as the contexts for predictions. + * @type {boolean} + * @memberof ReactDetails + */ + global_case_feature_residual_convictions_robust?: boolean; + /** + * If True, outputs this case's feature residual convictions for the region around the prediction. Uses only the context features of the reacted case to determine that region. Computed as: region feature residual divided by case feature residual. Uses full calculations, which uses leave-one-out for cases for computations. + * @type {boolean} + * @memberof ReactDetails + */ + local_case_feature_residual_convictions_full?: boolean; + /** + * If True, outputs this case's feature residual convictions for the region around the prediction. Uses only the context features of the reacted case to determine that region. Computed as: region feature residual divided by case feature residual. Uses robust calculations, which uses uniform sampling from the power set of features as the contexts for predictions. + * @type {boolean} + * @memberof ReactDetails + */ + local_case_feature_residual_convictions_robust?: boolean; + /** + * When true, outputs the reacted case's context feature values that are outside the min or max of the corresponding feature values of all the cases in the local model area. Uses only the context features of the reacted case to determine that area. + * @type {boolean} + * @memberof ReactDetails + */ + outlying_feature_values?: boolean; + /** + * When true, outputs probabilities for each class for the action. Applicable only to categorical action features. + * @type {boolean} + * @memberof ReactDetails + */ + categorical_action_probabilities?: boolean; + /** + * A dictionary of feature name to feature value. If specified, shows how a prediction could change in a what-if scenario where the influential cases' context feature values are replaced with the specified values. Iterates over all influential cases, predicting the action features each one using the updated hypothetical values. Outputs the predicted arithmetic over the influential cases for each action feature. + * @type {{ [key: string]: any; }} + * @memberof ReactDetails + */ + hypothetical_values?: { [key: string]: any }; + /** + * When true, outputs the ratio of distance (relative surprisal) between this reacted case and its nearest case to the minimum distance (relative surprisal) in between the closest two cases in the local area. All distances are computed using only the specified context features. + * @type {boolean} + * @memberof ReactDetails + */ + distance_ratio?: boolean; + /** + * When true, outputs the distance contribution (expected total surprisal contribution) for the reacted case. Uses both context and action feature values. + * @type {boolean} + * @memberof ReactDetails + */ + distance_contribution?: boolean; + /** + * When true, outputs similarity conviction for the reacted case. Uses both context and action feature values as the case values for all computations. This is defined as expected (local) distance contribution divided by reacted case distance contribution. + * @type {boolean} + * @memberof ReactDetails + */ + similarity_conviction?: boolean; + /** + * When true, outputs observational errors for all features as defined in feature attributes. + * @type {boolean} + * @memberof ReactDetails + */ + observational_errors?: boolean; + /** + * When true, outputs the number of attempts taken to generate each case. Only applicable when 'generate_new_cases' is "always" or "attempt". When used in react_series, "series_generate_attempts" is also returned. + * @type {boolean} + * @memberof ReactDetails + */ + generate_attempts?: boolean; +} + +/** + * Check if a given object implements the ReactDetails interface. + */ +export function instanceOfReactDetails(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactDetailsFromJSON(json: any): ReactDetails { + return ReactDetailsFromJSONTyped(json, false); +} + +export function ReactDetailsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactDetails { + if (json === undefined || json === null) { + return json; + } + return { + influential_cases: !exists(json, "influential_cases") ? undefined : json["influential_cases"], + derivation_parameters: !exists(json, "derivation_parameters") ? undefined : json["derivation_parameters"], + influential_cases_familiarity_convictions: !exists(json, "influential_cases_familiarity_convictions") + ? undefined + : json["influential_cases_familiarity_convictions"], + influential_cases_raw_weights: !exists(json, "influential_cases_raw_weights") + ? undefined + : json["influential_cases_raw_weights"], + most_similar_cases: !exists(json, "most_similar_cases") ? undefined : json["most_similar_cases"], + num_most_similar_cases: !exists(json, "num_most_similar_cases") ? undefined : json["num_most_similar_cases"], + num_most_similar_case_indices: !exists(json, "num_most_similar_case_indices") + ? undefined + : json["num_most_similar_case_indices"], + num_robust_influence_samples_per_case: !exists(json, "num_robust_influence_samples_per_case") + ? undefined + : json["num_robust_influence_samples_per_case"], + boundary_cases: !exists(json, "boundary_cases") ? undefined : json["boundary_cases"], + num_boundary_cases: !exists(json, "num_boundary_cases") ? undefined : json["num_boundary_cases"], + boundary_cases_familiarity_convictions: !exists(json, "boundary_cases_familiarity_convictions") + ? undefined + : json["boundary_cases_familiarity_convictions"], + features: !exists(json, "features") ? undefined : json["features"], + feature_residuals_full: !exists(json, "feature_residuals_full") ? undefined : json["feature_residuals_full"], + feature_residuals_robust: !exists(json, "feature_residuals_robust") ? undefined : json["feature_residuals_robust"], + prediction_stats: !exists(json, "prediction_stats") ? undefined : json["prediction_stats"], + feature_mda_full: !exists(json, "feature_mda_full") ? undefined : json["feature_mda_full"], + feature_mda_robust: !exists(json, "feature_mda_robust") ? undefined : json["feature_mda_robust"], + feature_mda_ex_post_full: !exists(json, "feature_mda_ex_post_full") ? undefined : json["feature_mda_ex_post_full"], + feature_mda_ex_post_robust: !exists(json, "feature_mda_ex_post_robust") + ? undefined + : json["feature_mda_ex_post_robust"], + feature_contributions_full: !exists(json, "feature_contributions_full") + ? undefined + : json["feature_contributions_full"], + feature_contributions_robust: !exists(json, "feature_contributions_robust") + ? undefined + : json["feature_contributions_robust"], + case_feature_contributions_full: !exists(json, "case_feature_contributions_full") + ? undefined + : json["case_feature_contributions_full"], + case_feature_contributions_robust: !exists(json, "case_feature_contributions_robust") + ? undefined + : json["case_feature_contributions_robust"], + case_feature_residuals_full: !exists(json, "case_feature_residuals_full") + ? undefined + : json["case_feature_residuals_full"], + case_feature_residuals_robust: !exists(json, "case_feature_residuals_robust") + ? undefined + : json["case_feature_residuals_robust"], + case_mda_full: !exists(json, "case_mda_full") ? undefined : json["case_mda_full"], + case_mda_robust: !exists(json, "case_mda_robust") ? undefined : json["case_mda_robust"], + case_contributions_full: !exists(json, "case_contributions_full") ? undefined : json["case_contributions_full"], + case_contributions_robust: !exists(json, "case_contributions_robust") + ? undefined + : json["case_contributions_robust"], + global_case_feature_residual_convictions_full: !exists(json, "global_case_feature_residual_convictions_full") + ? undefined + : json["global_case_feature_residual_convictions_full"], + global_case_feature_residual_convictions_robust: !exists(json, "global_case_feature_residual_convictions_robust") + ? undefined + : json["global_case_feature_residual_convictions_robust"], + local_case_feature_residual_convictions_full: !exists(json, "local_case_feature_residual_convictions_full") + ? undefined + : json["local_case_feature_residual_convictions_full"], + local_case_feature_residual_convictions_robust: !exists(json, "local_case_feature_residual_convictions_robust") + ? undefined + : json["local_case_feature_residual_convictions_robust"], + outlying_feature_values: !exists(json, "outlying_feature_values") ? undefined : json["outlying_feature_values"], + categorical_action_probabilities: !exists(json, "categorical_action_probabilities") + ? undefined + : json["categorical_action_probabilities"], + hypothetical_values: !exists(json, "hypothetical_values") ? undefined : json["hypothetical_values"], + distance_ratio: !exists(json, "distance_ratio") ? undefined : json["distance_ratio"], + distance_contribution: !exists(json, "distance_contribution") ? undefined : json["distance_contribution"], + similarity_conviction: !exists(json, "similarity_conviction") ? undefined : json["similarity_conviction"], + observational_errors: !exists(json, "observational_errors") ? undefined : json["observational_errors"], + generate_attempts: !exists(json, "generate_attempts") ? undefined : json["generate_attempts"], + }; +} + +export function ReactDetailsToJSON(value?: ReactDetails | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + influential_cases: value.influential_cases, + derivation_parameters: value.derivation_parameters, + influential_cases_familiarity_convictions: value.influential_cases_familiarity_convictions, + influential_cases_raw_weights: value.influential_cases_raw_weights, + most_similar_cases: value.most_similar_cases, + num_most_similar_cases: value.num_most_similar_cases, + num_most_similar_case_indices: value.num_most_similar_case_indices, + num_robust_influence_samples_per_case: value.num_robust_influence_samples_per_case, + boundary_cases: value.boundary_cases, + num_boundary_cases: value.num_boundary_cases, + boundary_cases_familiarity_convictions: value.boundary_cases_familiarity_convictions, + features: value.features, + feature_residuals_full: value.feature_residuals_full, + feature_residuals_robust: value.feature_residuals_robust, + prediction_stats: value.prediction_stats, + feature_mda_full: value.feature_mda_full, + feature_mda_robust: value.feature_mda_robust, + feature_mda_ex_post_full: value.feature_mda_ex_post_full, + feature_mda_ex_post_robust: value.feature_mda_ex_post_robust, + feature_contributions_full: value.feature_contributions_full, + feature_contributions_robust: value.feature_contributions_robust, + case_feature_contributions_full: value.case_feature_contributions_full, + case_feature_contributions_robust: value.case_feature_contributions_robust, + case_feature_residuals_full: value.case_feature_residuals_full, + case_feature_residuals_robust: value.case_feature_residuals_robust, + case_mda_full: value.case_mda_full, + case_mda_robust: value.case_mda_robust, + case_contributions_full: value.case_contributions_full, + case_contributions_robust: value.case_contributions_robust, + global_case_feature_residual_convictions_full: value.global_case_feature_residual_convictions_full, + global_case_feature_residual_convictions_robust: value.global_case_feature_residual_convictions_robust, + local_case_feature_residual_convictions_full: value.local_case_feature_residual_convictions_full, + local_case_feature_residual_convictions_robust: value.local_case_feature_residual_convictions_robust, + outlying_feature_values: value.outlying_feature_values, + categorical_action_probabilities: value.categorical_action_probabilities, + hypothetical_values: value.hypothetical_values, + distance_ratio: value.distance_ratio, + distance_contribution: value.distance_contribution, + similarity_conviction: value.similarity_conviction, + observational_errors: value.observational_errors, + generate_attempts: value.generate_attempts, + }; +} diff --git a/src/types/models/ReactGroupActionOutput.ts b/src/types/models/ReactGroupActionOutput.ts new file mode 100644 index 0000000..12a1b1f --- /dev/null +++ b/src/types/models/ReactGroupActionOutput.ts @@ -0,0 +1,79 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactGroupResponse } from "./ReactGroupResponse"; +import { ReactGroupResponseFromJSON, ReactGroupResponseToJSON } from "./ReactGroupResponse"; + +/** + * + * @export + * @interface ReactGroupActionOutput + */ +export interface ReactGroupActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof ReactGroupActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof ReactGroupActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof ReactGroupActionOutput + */ + operation_type: string; + /** + * + * @type {ReactGroupResponse} + * @memberof ReactGroupActionOutput + */ + output?: ReactGroupResponse | null; +} + +/** + * Check if a given object implements the ReactGroupActionOutput interface. + */ +export function instanceOfReactGroupActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function ReactGroupActionOutputFromJSON(json: any): ReactGroupActionOutput { + return ReactGroupActionOutputFromJSONTyped(json, false); +} + +export function ReactGroupActionOutputFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactGroupActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : ReactGroupResponseFromJSON(json["output"]), + }; +} + +export function ReactGroupActionOutputToJSON(value?: ReactGroupActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: ReactGroupResponseToJSON(value.output), + }; +} diff --git a/src/types/models/ReactGroupRequest.ts b/src/types/models/ReactGroupRequest.ts new file mode 100644 index 0000000..fae66d0 --- /dev/null +++ b/src/types/models/ReactGroupRequest.ts @@ -0,0 +1,135 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Request body for react group. + * @export + * @interface ReactGroupRequest + */ +export interface ReactGroupRequest { + /** + * One or more groupings of cases to compare against. + * @type {Array>>} + * @memberof ReactGroupRequest + */ + new_cases: Array>>; + /** + * The features to use when calculating convictions. + * @type {Array} + * @memberof ReactGroupRequest + */ + features?: Array; + /** + * Calculate and output the familiarity conviction of adding the cases. + * @type {boolean} + * @memberof ReactGroupRequest + */ + familiarity_conviction_addition?: boolean; + /** + * Calculate and output the familiarity conviction of removing the cases. + * @type {boolean} + * @memberof ReactGroupRequest + */ + familiarity_conviction_removal?: boolean; + /** + * Calculate and output the KL divergence of adding the cases. + * @type {boolean} + * @memberof ReactGroupRequest + */ + kl_divergence_addition?: boolean; + /** + * Calculate and output the KL divergence of removing the cases. + * @type {boolean} + * @memberof ReactGroupRequest + */ + kl_divergence_removal?: boolean; + /** + * When true, output p value of addition. + * @type {boolean} + * @memberof ReactGroupRequest + */ + p_value_of_addition?: boolean; + /** + * When true, output p value of removal. + * @type {boolean} + * @memberof ReactGroupRequest + */ + p_value_of_removal?: boolean; + /** + * When true, calculate and output distance contribution ratios for each case. + * @type {boolean} + * @memberof ReactGroupRequest + */ + distance_contributions?: boolean; + /** + * If set to True will scale influence weights by each case's `weight_feature` weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof ReactGroupRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally managed case weight. + * @type {string} + * @memberof ReactGroupRequest + */ + weight_feature?: string; +} + +/** + * Check if a given object implements the ReactGroupRequest interface. + */ +export function instanceOfReactGroupRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "new_cases" in value; + + return isInstance; +} + +export function ReactGroupRequestFromJSON(json: any): ReactGroupRequest { + return ReactGroupRequestFromJSONTyped(json, false); +} + +export function ReactGroupRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactGroupRequest { + if (json === undefined || json === null) { + return json; + } + return { + new_cases: json["new_cases"], + features: !exists(json, "features") ? undefined : json["features"], + familiarity_conviction_addition: !exists(json, "familiarity_conviction_addition") + ? undefined + : json["familiarity_conviction_addition"], + familiarity_conviction_removal: !exists(json, "familiarity_conviction_removal") + ? undefined + : json["familiarity_conviction_removal"], + kl_divergence_addition: !exists(json, "kl_divergence_addition") ? undefined : json["kl_divergence_addition"], + kl_divergence_removal: !exists(json, "kl_divergence_removal") ? undefined : json["kl_divergence_removal"], + p_value_of_addition: !exists(json, "p_value_of_addition") ? undefined : json["p_value_of_addition"], + p_value_of_removal: !exists(json, "p_value_of_removal") ? undefined : json["p_value_of_removal"], + distance_contributions: !exists(json, "distance_contributions") ? undefined : json["distance_contributions"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + }; +} + +export function ReactGroupRequestToJSON(value?: ReactGroupRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + new_cases: value.new_cases, + features: value.features, + familiarity_conviction_addition: value.familiarity_conviction_addition, + familiarity_conviction_removal: value.familiarity_conviction_removal, + kl_divergence_addition: value.kl_divergence_addition, + kl_divergence_removal: value.kl_divergence_removal, + p_value_of_addition: value.p_value_of_addition, + p_value_of_removal: value.p_value_of_removal, + distance_contributions: value.distance_contributions, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + }; +} diff --git a/src/types/models/ReactGroupResponse.ts b/src/types/models/ReactGroupResponse.ts new file mode 100644 index 0000000..3a04b1f --- /dev/null +++ b/src/types/models/ReactGroupResponse.ts @@ -0,0 +1,63 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactGroupResponseContent } from "./ReactGroupResponseContent"; +import { ReactGroupResponseContentFromJSON, ReactGroupResponseContentToJSON } from "./ReactGroupResponseContent"; +import type { Warning } from "./Warning"; +import { WarningFromJSON, WarningToJSON } from "./Warning"; + +/** + * + * @export + * @interface ReactGroupResponse + */ +export interface ReactGroupResponse { + /** + * + * @type {Array} + * @memberof ReactGroupResponse + */ + warnings?: Array; + /** + * + * @type {ReactGroupResponseContent} + * @memberof ReactGroupResponse + */ + content?: ReactGroupResponseContent; +} + +/** + * Check if a given object implements the ReactGroupResponse interface. + */ +export function instanceOfReactGroupResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactGroupResponseFromJSON(json: any): ReactGroupResponse { + return ReactGroupResponseFromJSONTyped(json, false); +} + +export function ReactGroupResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactGroupResponse { + if (json === undefined || json === null) { + return json; + } + return { + warnings: !exists(json, "warnings") ? undefined : (json["warnings"] as Array).map(WarningFromJSON), + content: !exists(json, "content") ? undefined : ReactGroupResponseContentFromJSON(json["content"]), + }; +} + +export function ReactGroupResponseToJSON(value?: ReactGroupResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + warnings: value.warnings === undefined ? undefined : (value.warnings as Array).map(WarningToJSON), + content: ReactGroupResponseContentToJSON(value.content), + }; +} diff --git a/src/types/models/ReactGroupResponseContent.ts b/src/types/models/ReactGroupResponseContent.ts new file mode 100644 index 0000000..87a665a --- /dev/null +++ b/src/types/models/ReactGroupResponseContent.ts @@ -0,0 +1,125 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface ReactGroupResponseContent + */ +export interface ReactGroupResponseContent { + /** + * The familiarity conviction of adding the cases to the Model. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + familiarity_conviction_addition?: Array; + /** + * The familiarity conviction of removing the cases from the Model. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + familiarity_conviction_removal?: Array; + /** + * The KL divergence of adding the cases to the Model. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + kl_divergence_addition?: Array; + /** + * The KL divergence of removing the cases from the Model. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + kl_divergence_removal?: Array; + /** + * The p value of adding the cases to the Model. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + p_value_of_addition?: Array; + /** + * The p value of removing the cases from the Model. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + p_value_of_removal?: Array; + /** + * Distance contribution ratios. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + distance_contribution?: Array; + /** + * The base Model average distance contribution. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + base_model_average_distance_contribution?: Array; + /** + * The combined Model average distance contribution. + * @type {Array} + * @memberof ReactGroupResponseContent + */ + combined_model_average_distance_contribution?: Array; +} + +/** + * Check if a given object implements the ReactGroupResponseContent interface. + */ +export function instanceOfReactGroupResponseContent(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactGroupResponseContentFromJSON(json: any): ReactGroupResponseContent { + return ReactGroupResponseContentFromJSONTyped(json, false); +} + +export function ReactGroupResponseContentFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactGroupResponseContent { + if (json === undefined || json === null) { + return json; + } + return { + familiarity_conviction_addition: !exists(json, "familiarity_conviction_addition") + ? undefined + : json["familiarity_conviction_addition"], + familiarity_conviction_removal: !exists(json, "familiarity_conviction_removal") + ? undefined + : json["familiarity_conviction_removal"], + kl_divergence_addition: !exists(json, "kl_divergence_addition") ? undefined : json["kl_divergence_addition"], + kl_divergence_removal: !exists(json, "kl_divergence_removal") ? undefined : json["kl_divergence_removal"], + p_value_of_addition: !exists(json, "p_value_of_addition") ? undefined : json["p_value_of_addition"], + p_value_of_removal: !exists(json, "p_value_of_removal") ? undefined : json["p_value_of_removal"], + distance_contribution: !exists(json, "distance_contribution") ? undefined : json["distance_contribution"], + base_model_average_distance_contribution: !exists(json, "base_model_average_distance_contribution") + ? undefined + : json["base_model_average_distance_contribution"], + combined_model_average_distance_contribution: !exists(json, "combined_model_average_distance_contribution") + ? undefined + : json["combined_model_average_distance_contribution"], + }; +} + +export function ReactGroupResponseContentToJSON(value?: ReactGroupResponseContent | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + familiarity_conviction_addition: value.familiarity_conviction_addition, + familiarity_conviction_removal: value.familiarity_conviction_removal, + kl_divergence_addition: value.kl_divergence_addition, + kl_divergence_removal: value.kl_divergence_removal, + p_value_of_addition: value.p_value_of_addition, + p_value_of_removal: value.p_value_of_removal, + distance_contribution: value.distance_contribution, + base_model_average_distance_contribution: value.base_model_average_distance_contribution, + combined_model_average_distance_contribution: value.combined_model_average_distance_contribution, + }; +} diff --git a/src/types/models/ReactIntoFeaturesActionOutput.ts b/src/types/models/ReactIntoFeaturesActionOutput.ts new file mode 100644 index 0000000..b12b1f0 --- /dev/null +++ b/src/types/models/ReactIntoFeaturesActionOutput.ts @@ -0,0 +1,82 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactIntoFeaturesResponse } from "./ReactIntoFeaturesResponse"; +import { ReactIntoFeaturesResponseFromJSON, ReactIntoFeaturesResponseToJSON } from "./ReactIntoFeaturesResponse"; + +/** + * + * @export + * @interface ReactIntoFeaturesActionOutput + */ +export interface ReactIntoFeaturesActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof ReactIntoFeaturesActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof ReactIntoFeaturesActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof ReactIntoFeaturesActionOutput + */ + operation_type: string; + /** + * + * @type {ReactIntoFeaturesResponse} + * @memberof ReactIntoFeaturesActionOutput + */ + output?: ReactIntoFeaturesResponse | null; +} + +/** + * Check if a given object implements the ReactIntoFeaturesActionOutput interface. + */ +export function instanceOfReactIntoFeaturesActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function ReactIntoFeaturesActionOutputFromJSON(json: any): ReactIntoFeaturesActionOutput { + return ReactIntoFeaturesActionOutputFromJSONTyped(json, false); +} + +export function ReactIntoFeaturesActionOutputFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactIntoFeaturesActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : ReactIntoFeaturesResponseFromJSON(json["output"]), + }; +} + +export function ReactIntoFeaturesActionOutputToJSON(value?: ReactIntoFeaturesActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: ReactIntoFeaturesResponseToJSON(value.output), + }; +} diff --git a/src/types/models/ReactIntoFeaturesRequest.ts b/src/types/models/ReactIntoFeaturesRequest.ts new file mode 100644 index 0000000..40923aa --- /dev/null +++ b/src/types/models/ReactIntoFeaturesRequest.ts @@ -0,0 +1,129 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Request body for react into features. + * @export + * @interface ReactIntoFeaturesRequest + */ +export interface ReactIntoFeaturesRequest { + /** + * The features to use when calculating convictions. + * @type {Array} + * @memberof ReactIntoFeaturesRequest + */ + features?: Array; + /** + * The name of the feature to store conviction of addition values. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + familiarity_conviction_addition?: string; + /** + * The name of the feature to store conviction of removal values. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + familiarity_conviction_removal?: string; + /** + * The name of the feature to store influence weight entropy values. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + influence_weight_entropy?: string; + /** + * The name of the feature to store p value of addition values. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + p_value_of_addition?: string; + /** + * The name of the feature to store p value of removal values. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + p_value_of_removal?: string; + /** + * The name of the feature to store distance contribution ratios for each case. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + distance_contribution?: string; + /** + * The name of the feature to store similarity conviction values for each case. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + similarity_conviction?: string; + /** + * If set to True will scale influence weights by each case's `weight_feature` weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof ReactIntoFeaturesRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally managed case weight. + * @type {string} + * @memberof ReactIntoFeaturesRequest + */ + weight_feature?: string; +} + +/** + * Check if a given object implements the ReactIntoFeaturesRequest interface. + */ +export function instanceOfReactIntoFeaturesRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactIntoFeaturesRequestFromJSON(json: any): ReactIntoFeaturesRequest { + return ReactIntoFeaturesRequestFromJSONTyped(json, false); +} + +export function ReactIntoFeaturesRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactIntoFeaturesRequest { + if (json === undefined || json === null) { + return json; + } + return { + features: !exists(json, "features") ? undefined : json["features"], + familiarity_conviction_addition: !exists(json, "familiarity_conviction_addition") + ? undefined + : json["familiarity_conviction_addition"], + familiarity_conviction_removal: !exists(json, "familiarity_conviction_removal") + ? undefined + : json["familiarity_conviction_removal"], + influence_weight_entropy: !exists(json, "influence_weight_entropy") ? undefined : json["influence_weight_entropy"], + p_value_of_addition: !exists(json, "p_value_of_addition") ? undefined : json["p_value_of_addition"], + p_value_of_removal: !exists(json, "p_value_of_removal") ? undefined : json["p_value_of_removal"], + distance_contribution: !exists(json, "distance_contribution") ? undefined : json["distance_contribution"], + similarity_conviction: !exists(json, "similarity_conviction") ? undefined : json["similarity_conviction"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + }; +} + +export function ReactIntoFeaturesRequestToJSON(value?: ReactIntoFeaturesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features: value.features, + familiarity_conviction_addition: value.familiarity_conviction_addition, + familiarity_conviction_removal: value.familiarity_conviction_removal, + influence_weight_entropy: value.influence_weight_entropy, + p_value_of_addition: value.p_value_of_addition, + p_value_of_removal: value.p_value_of_removal, + distance_contribution: value.distance_contribution, + similarity_conviction: value.similarity_conviction, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + }; +} diff --git a/src/types/models/ReactIntoFeaturesResponse.ts b/src/types/models/ReactIntoFeaturesResponse.ts new file mode 100644 index 0000000..2ad1dec --- /dev/null +++ b/src/types/models/ReactIntoFeaturesResponse.ts @@ -0,0 +1,56 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { Warning } from "./Warning"; +import { WarningFromJSON, WarningToJSON } from "./Warning"; + +/** + * + * @export + * @interface ReactIntoFeaturesResponse + */ +export interface ReactIntoFeaturesResponse { + /** + * + * @type {Array} + * @memberof ReactIntoFeaturesResponse + */ + warnings?: Array; +} + +/** + * Check if a given object implements the ReactIntoFeaturesResponse interface. + */ +export function instanceOfReactIntoFeaturesResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactIntoFeaturesResponseFromJSON(json: any): ReactIntoFeaturesResponse { + return ReactIntoFeaturesResponseFromJSONTyped(json, false); +} + +export function ReactIntoFeaturesResponseFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactIntoFeaturesResponse { + if (json === undefined || json === null) { + return json; + } + return { + warnings: !exists(json, "warnings") ? undefined : (json["warnings"] as Array).map(WarningFromJSON), + }; +} + +export function ReactIntoFeaturesResponseToJSON(value?: ReactIntoFeaturesResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + warnings: value.warnings === undefined ? undefined : (value.warnings as Array).map(WarningToJSON), + }; +} diff --git a/src/types/models/ReactRequest.ts b/src/types/models/ReactRequest.ts new file mode 100644 index 0000000..00d929a --- /dev/null +++ b/src/types/models/ReactRequest.ts @@ -0,0 +1,295 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists, mapValues } from "../runtime"; +import type { FeatureBounds } from "./FeatureBounds"; +import { FeatureBoundsFromJSON, FeatureBoundsToJSON } from "./FeatureBounds"; +import type { ReactDetails } from "./ReactDetails"; +import { ReactDetailsFromJSON, ReactDetailsToJSON } from "./ReactDetails"; + +/** + * + * @export + * @interface ReactRequest + */ +export interface ReactRequest { + /** + * A 2D array of context values. + * @type {Array>} + * @memberof ReactRequest + */ + contexts?: Array>; + /** + * One or more values for action features, if specified will only return the specified explanation + * details for the given actions. + * @type {Array>} + * @memberof ReactRequest + */ + actions?: Array>; + /** + * If set to true, assumes provided categorical (nominal or ordinal) feature values have already been substituted. + * @type {boolean} + * @memberof ReactRequest + */ + input_is_substituted?: boolean; + /** + * Only applicable if a substitution value map has been set. If set to false, will not substitute categorical feature values. + * @type {boolean} + * @memberof ReactRequest + */ + substitute_output?: boolean; + /** + * + * @type {ReactDetails} + * @memberof ReactRequest + */ + details?: ReactDetails; + /** + * The context features to use for this reaction. + * @type {Array} + * @memberof ReactRequest + */ + context_features?: Array; + /** + * The action features to use for this reaction. + * @type {Array} + * @memberof ReactRequest + */ + action_features?: Array; + /** + * A list of feature names whose values should be computed from the provided context in the specified order. + * + * Note: Relies on the features' "derived_feature_code" attribute to compute the values. If "derived_feature_code" + * attribute is undefined or references non-0 feature indices, the derived value will be null. + * @type {Array} + * @memberof ReactRequest + */ + derived_context_features?: Array; + /** + * A list of feature names whose values should be computed after reaction from the resulting case prior to output, in the specified order. + * + * Note: Relies on the features' "derived_feature_code" attribute to compute the values. If "derived_feature_code" + * attribute is undefined or references non-0 feature indices, the derived value will be null. + * @type {Array} + * @memberof ReactRequest + */ + derived_action_features?: Array; + /** + * If specified will execute a generative react. If not specified will executed a discriminative react. Conviction is the ratio of expected surprisal to generated surprisal for each feature generated, values are in the range of (0,infinity]. + * @type {number} + * @memberof ReactRequest + */ + desired_conviction?: number; + /** + * For generative reacts only. If true, excludes features which have a subtype in their feature attributes from the uniqueness check performed when generate_new_cases is "always". + * @type {boolean} + * @memberof ReactRequest + */ + exclude_novel_nominals_from_uniqueness_check?: boolean; + /** + * For generative reacts only. If false uses model feature residuals, if true recalculates regional model residuals. + * @type {boolean} + * @memberof ReactRequest + */ + use_regional_model_residuals?: boolean; + /** + * For generative reacts only. + * @type {{ [key: string]: FeatureBounds; }} + * @memberof ReactRequest + */ + feature_bounds_map?: { [key: string]: FeatureBounds }; + /** + * Control whether generated cases can be those that already exist in the model. This parameter takes in a string that could be one of the following: + * a. "attempt": attempts to generate new cases and if its not possible to generate a new case, it might generate cases in "no" mode (see point c.) + * b. "always": always generates new cases and if its not possible to generate a new case, it returns nulls. + * c. "no": generates data based on the `desired_conviction` specified and the generated data is not guaranteed to be a new case (that is, a case not found in original dataset.) + * @type {string} + * @memberof ReactRequest + */ + generate_new_cases?: ReactRequestGenerateNewCasesEnum; + /** + * List of features that will preserve their values from the case specified by `case_indices`, appending and overwriting the specified contexts as necessary. For generative reacts, if `case_indices` isn't specified will preserve feature values of a random case. + * @type {Array} + * @memberof ReactRequest + */ + preserve_feature_values?: Array; + /** + * The privacy distance criteria for generated new cases. + * @type {string} + * @memberof ReactRequest + */ + new_case_threshold?: ReactRequestNewCaseThresholdEnum; + /** + * List of tuples, of session id and index, where index is the original 0-based index of the case as it was trained into the session. If this case does not exist, discriminative react outputs null, generative react ignores it. + * @type {Array>} + * @memberof ReactRequest + */ + case_indices?: Array>; + /** + * If set to True and specified along with case_indices, each individual react will respectively ignore the corresponding case specified by case_indices by leaving it out. + * @type {boolean} + * @memberof ReactRequest + */ + leave_case_out?: boolean; + /** + * For generative reacts only. Features will be generated in the same order as provided in the 'action_features' parameter. + * @type {boolean} + * @memberof ReactRequest + */ + ordered_by_specified_features?: boolean; + /** + * If set to True will scale influence weights by each case's weight_feature weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof ReactRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally + * managed case weight. + * @type {string} + * @memberof ReactRequest + */ + weight_feature?: string; + /** + * When true, will allow return of null values if there are nulls in the local model for the action features. + * (Only applicable to discriminative reacts) + * @type {boolean} + * @memberof ReactRequest + */ + allow_nulls?: boolean; + /** + * For generative reacts only. The number of cases to generate, default 1. + * @type {number} + * @memberof ReactRequest + */ + num_cases_to_generate?: number; + /** + * The name of a series store. If specified, will store an internal record of all react contexts for this session and series to be used later with train series. + * @type {string} + * @memberof ReactRequest + */ + into_series_store?: string; + /** + * Process the request using the asynchronous Request-Reply flow. Otherwise processes request normally. + * @type {boolean} + * @memberof ReactRequest + */ + run_async?: boolean; + /** + * The list of feature names whose values will be made available during the execution of post_process feature attributes. + * @type {Array} + * @memberof ReactRequest + */ + post_process_features?: Array; + /** + * A 2D array of values corresponding to post_process_features that will be made available during the execution of post_process feature attributes. + * @type {Array>} + * @memberof ReactRequest + */ + post_process_values?: Array>; +} + +/** + * @export + * @enum {string} + */ +export type ReactRequestGenerateNewCasesEnum = "attempt" | "always" | "no"; +/** + * @export + * @enum {string} + */ +export type ReactRequestNewCaseThresholdEnum = "min" | "max" | "most_similar"; + +/** + * Check if a given object implements the ReactRequest interface. + */ +export function instanceOfReactRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactRequestFromJSON(json: any): ReactRequest { + return ReactRequestFromJSONTyped(json, false); +} + +export function ReactRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactRequest { + if (json === undefined || json === null) { + return json; + } + return { + contexts: !exists(json, "contexts") ? undefined : json["contexts"], + actions: !exists(json, "actions") ? undefined : json["actions"], + input_is_substituted: !exists(json, "input_is_substituted") ? undefined : json["input_is_substituted"], + substitute_output: !exists(json, "substitute_output") ? undefined : json["substitute_output"], + details: !exists(json, "details") ? undefined : ReactDetailsFromJSON(json["details"]), + context_features: !exists(json, "context_features") ? undefined : json["context_features"], + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + derived_context_features: !exists(json, "derived_context_features") ? undefined : json["derived_context_features"], + derived_action_features: !exists(json, "derived_action_features") ? undefined : json["derived_action_features"], + desired_conviction: !exists(json, "desired_conviction") ? undefined : json["desired_conviction"], + exclude_novel_nominals_from_uniqueness_check: !exists(json, "exclude_novel_nominals_from_uniqueness_check") + ? undefined + : json["exclude_novel_nominals_from_uniqueness_check"], + use_regional_model_residuals: !exists(json, "use_regional_model_residuals") + ? undefined + : json["use_regional_model_residuals"], + feature_bounds_map: !exists(json, "feature_bounds_map") + ? undefined + : mapValues(json["feature_bounds_map"], FeatureBoundsFromJSON), + generate_new_cases: !exists(json, "generate_new_cases") ? undefined : json["generate_new_cases"], + preserve_feature_values: !exists(json, "preserve_feature_values") ? undefined : json["preserve_feature_values"], + new_case_threshold: !exists(json, "new_case_threshold") ? undefined : json["new_case_threshold"], + case_indices: !exists(json, "case_indices") ? undefined : json["case_indices"], + leave_case_out: !exists(json, "leave_case_out") ? undefined : json["leave_case_out"], + ordered_by_specified_features: !exists(json, "ordered_by_specified_features") + ? undefined + : json["ordered_by_specified_features"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + allow_nulls: !exists(json, "allow_nulls") ? undefined : json["allow_nulls"], + num_cases_to_generate: !exists(json, "num_cases_to_generate") ? undefined : json["num_cases_to_generate"], + into_series_store: !exists(json, "into_series_store") ? undefined : json["into_series_store"], + run_async: !exists(json, "run_async") ? undefined : json["run_async"], + post_process_features: !exists(json, "post_process_features") ? undefined : json["post_process_features"], + post_process_values: !exists(json, "post_process_values") ? undefined : json["post_process_values"], + }; +} + +export function ReactRequestToJSON(value?: ReactRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + contexts: value.contexts, + actions: value.actions, + input_is_substituted: value.input_is_substituted, + substitute_output: value.substitute_output, + details: ReactDetailsToJSON(value.details), + context_features: value.context_features, + action_features: value.action_features, + derived_context_features: value.derived_context_features, + derived_action_features: value.derived_action_features, + desired_conviction: value.desired_conviction, + exclude_novel_nominals_from_uniqueness_check: value.exclude_novel_nominals_from_uniqueness_check, + use_regional_model_residuals: value.use_regional_model_residuals, + feature_bounds_map: + value.feature_bounds_map === undefined ? undefined : mapValues(value.feature_bounds_map, FeatureBoundsToJSON), + generate_new_cases: value.generate_new_cases, + preserve_feature_values: value.preserve_feature_values, + new_case_threshold: value.new_case_threshold, + case_indices: value.case_indices, + leave_case_out: value.leave_case_out, + ordered_by_specified_features: value.ordered_by_specified_features, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + allow_nulls: value.allow_nulls, + num_cases_to_generate: value.num_cases_to_generate, + into_series_store: value.into_series_store, + run_async: value.run_async, + post_process_features: value.post_process_features, + post_process_values: value.post_process_values, + }; +} diff --git a/src/types/models/ReactResponse.ts b/src/types/models/ReactResponse.ts new file mode 100644 index 0000000..6054323 --- /dev/null +++ b/src/types/models/ReactResponse.ts @@ -0,0 +1,63 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactResponseContent } from "./ReactResponseContent"; +import { ReactResponseContentFromJSON, ReactResponseContentToJSON } from "./ReactResponseContent"; +import type { Warning } from "./Warning"; +import { WarningFromJSON, WarningToJSON } from "./Warning"; + +/** + * + * @export + * @interface ReactResponse + */ +export interface ReactResponse { + /** + * + * @type {Array} + * @memberof ReactResponse + */ + warnings?: Array; + /** + * + * @type {ReactResponseContent} + * @memberof ReactResponse + */ + content?: ReactResponseContent; +} + +/** + * Check if a given object implements the ReactResponse interface. + */ +export function instanceOfReactResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactResponseFromJSON(json: any): ReactResponse { + return ReactResponseFromJSONTyped(json, false); +} + +export function ReactResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactResponse { + if (json === undefined || json === null) { + return json; + } + return { + warnings: !exists(json, "warnings") ? undefined : (json["warnings"] as Array).map(WarningFromJSON), + content: !exists(json, "content") ? undefined : ReactResponseContentFromJSON(json["content"]), + }; +} + +export function ReactResponseToJSON(value?: ReactResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + warnings: value.warnings === undefined ? undefined : (value.warnings as Array).map(WarningToJSON), + content: ReactResponseContentToJSON(value.content), + }; +} diff --git a/src/types/models/ReactResponseContent.ts b/src/types/models/ReactResponseContent.ts new file mode 100644 index 0000000..7cff247 --- /dev/null +++ b/src/types/models/ReactResponseContent.ts @@ -0,0 +1,433 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { DerivationParameters } from "./DerivationParameters"; +import { DerivationParametersFromJSON, DerivationParametersToJSON } from "./DerivationParameters"; +import type { DetailsResponseDistanceRatioPartsInner } from "./DetailsResponseDistanceRatioPartsInner"; +import { + DetailsResponseDistanceRatioPartsInnerFromJSON, + DetailsResponseDistanceRatioPartsInnerToJSON, +} from "./DetailsResponseDistanceRatioPartsInner"; +import type { DetailsResponseOutlyingFeatureValuesInnerValue } from "./DetailsResponseOutlyingFeatureValuesInnerValue"; + +/** + * + * @export + * @interface ReactResponseContent + */ +export interface ReactResponseContent { + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + boundary_cases?: Array>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactResponseContent + */ + categorical_action_probabilities?: Array<{ [key: string]: any }>; + /** + * + * @type {Array} + * @memberof ReactResponseContent + */ + derivation_parameters?: Array; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactResponseContent + */ + feature_residuals_full?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactResponseContent + */ + feature_residuals_robust?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactResponseContent + */ + prediction_stats?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: DetailsResponseOutlyingFeatureValuesInnerValue; }>} + * @memberof ReactResponseContent + */ + outlying_feature_values?: Array<{ [key: string]: DetailsResponseOutlyingFeatureValuesInnerValue }>; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + influential_cases?: Array>; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + most_similar_cases?: Array>; + /** + * Observational errors for all features as defined in feature attributes. + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + observational_errors?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + feature_mda_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + feature_mda_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + feature_mda_ex_post_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + feature_mda_ex_post_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + directional_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + directional_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + case_directional_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + case_directional_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + case_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + case_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + case_mda_full?: Array>; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + case_mda_robust?: Array>; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + case_contributions_full?: Array>; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + case_contributions_robust?: Array>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + case_feature_residuals_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + case_feature_residuals_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + local_case_feature_residual_convictions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + local_case_feature_residual_convictions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + global_case_feature_residual_convictions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactResponseContent + */ + global_case_feature_residual_convictions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactResponseContent + */ + hypothetical_values?: Array<{ [key: string]: any }>; + /** + * + * @type {Array} + * @memberof ReactResponseContent + */ + distance_ratio?: Array; + /** + * + * @type {Array} + * @memberof ReactResponseContent + */ + distance_ratio_parts?: Array; + /** + * + * @type {Array} + * @memberof ReactResponseContent + */ + distance_contribution?: Array; + /** + * + * @type {Array} + * @memberof ReactResponseContent + */ + similarity_conviction?: Array; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + most_similar_case_indices?: Array>; + /** + * + * @type {Array} + * @memberof ReactResponseContent + */ + generate_attempts?: Array; + /** + * + * @type {Array>} + * @memberof ReactResponseContent + */ + series_generate_attempts?: Array>; + /** + * + * @type {Array} + * @memberof ReactResponseContent + */ + action_features?: Array | null; + /** + * Action values for each reaction + * @type {Array>} + * @memberof ReactResponseContent + */ + action_values?: Array> | null; +} + +/** + * Check if a given object implements the ReactResponseContent interface. + */ +export function instanceOfReactResponseContent(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactResponseContentFromJSON(json: any): ReactResponseContent { + return ReactResponseContentFromJSONTyped(json, false); +} + +export function ReactResponseContentFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactResponseContent { + if (json === undefined || json === null) { + return json; + } + return { + boundary_cases: !exists(json, "boundary_cases") ? undefined : json["boundary_cases"], + categorical_action_probabilities: !exists(json, "categorical_action_probabilities") + ? undefined + : json["categorical_action_probabilities"], + derivation_parameters: !exists(json, "derivation_parameters") + ? undefined + : (json["derivation_parameters"] as Array).map(DerivationParametersFromJSON), + feature_residuals_full: !exists(json, "feature_residuals_full") ? undefined : json["feature_residuals_full"], + feature_residuals_robust: !exists(json, "feature_residuals_robust") ? undefined : json["feature_residuals_robust"], + prediction_stats: !exists(json, "prediction_stats") ? undefined : json["prediction_stats"], + outlying_feature_values: !exists(json, "outlying_feature_values") ? undefined : json["outlying_feature_values"], + influential_cases: !exists(json, "influential_cases") ? undefined : json["influential_cases"], + most_similar_cases: !exists(json, "most_similar_cases") ? undefined : json["most_similar_cases"], + observational_errors: !exists(json, "observational_errors") ? undefined : json["observational_errors"], + feature_mda_full: !exists(json, "feature_mda_full") ? undefined : json["feature_mda_full"], + feature_mda_robust: !exists(json, "feature_mda_robust") ? undefined : json["feature_mda_robust"], + feature_mda_ex_post_full: !exists(json, "feature_mda_ex_post_full") ? undefined : json["feature_mda_ex_post_full"], + feature_mda_ex_post_robust: !exists(json, "feature_mda_ex_post_robust") + ? undefined + : json["feature_mda_ex_post_robust"], + directional_feature_contributions_full: !exists(json, "directional_feature_contributions_full") + ? undefined + : json["directional_feature_contributions_full"], + directional_feature_contributions_robust: !exists(json, "directional_feature_contributions_robust") + ? undefined + : json["directional_feature_contributions_robust"], + feature_contributions_full: !exists(json, "feature_contributions_full") + ? undefined + : json["feature_contributions_full"], + feature_contributions_robust: !exists(json, "feature_contributions_robust") + ? undefined + : json["feature_contributions_robust"], + case_directional_feature_contributions_full: !exists(json, "case_directional_feature_contributions_full") + ? undefined + : json["case_directional_feature_contributions_full"], + case_directional_feature_contributions_robust: !exists(json, "case_directional_feature_contributions_robust") + ? undefined + : json["case_directional_feature_contributions_robust"], + case_feature_contributions_full: !exists(json, "case_feature_contributions_full") + ? undefined + : json["case_feature_contributions_full"], + case_feature_contributions_robust: !exists(json, "case_feature_contributions_robust") + ? undefined + : json["case_feature_contributions_robust"], + case_mda_full: !exists(json, "case_mda_full") ? undefined : json["case_mda_full"], + case_mda_robust: !exists(json, "case_mda_robust") ? undefined : json["case_mda_robust"], + case_contributions_full: !exists(json, "case_contributions_full") ? undefined : json["case_contributions_full"], + case_contributions_robust: !exists(json, "case_contributions_robust") + ? undefined + : json["case_contributions_robust"], + case_feature_residuals_full: !exists(json, "case_feature_residuals_full") + ? undefined + : json["case_feature_residuals_full"], + case_feature_residuals_robust: !exists(json, "case_feature_residuals_robust") + ? undefined + : json["case_feature_residuals_robust"], + local_case_feature_residual_convictions_full: !exists(json, "local_case_feature_residual_convictions_full") + ? undefined + : json["local_case_feature_residual_convictions_full"], + local_case_feature_residual_convictions_robust: !exists(json, "local_case_feature_residual_convictions_robust") + ? undefined + : json["local_case_feature_residual_convictions_robust"], + global_case_feature_residual_convictions_full: !exists(json, "global_case_feature_residual_convictions_full") + ? undefined + : json["global_case_feature_residual_convictions_full"], + global_case_feature_residual_convictions_robust: !exists(json, "global_case_feature_residual_convictions_robust") + ? undefined + : json["global_case_feature_residual_convictions_robust"], + hypothetical_values: !exists(json, "hypothetical_values") ? undefined : json["hypothetical_values"], + distance_ratio: !exists(json, "distance_ratio") ? undefined : json["distance_ratio"], + distance_ratio_parts: !exists(json, "distance_ratio_parts") + ? undefined + : (json["distance_ratio_parts"] as Array).map(DetailsResponseDistanceRatioPartsInnerFromJSON), + distance_contribution: !exists(json, "distance_contribution") ? undefined : json["distance_contribution"], + similarity_conviction: !exists(json, "similarity_conviction") ? undefined : json["similarity_conviction"], + most_similar_case_indices: !exists(json, "most_similar_case_indices") + ? undefined + : json["most_similar_case_indices"], + generate_attempts: !exists(json, "generate_attempts") ? undefined : json["generate_attempts"], + series_generate_attempts: !exists(json, "series_generate_attempts") ? undefined : json["series_generate_attempts"], + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + action_values: !exists(json, "action_values") ? undefined : json["action_values"], + }; +} + +export function ReactResponseContentToJSON(value?: ReactResponseContent | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + boundary_cases: value.boundary_cases, + categorical_action_probabilities: value.categorical_action_probabilities, + derivation_parameters: + value.derivation_parameters === undefined + ? undefined + : (value.derivation_parameters as Array).map(DerivationParametersToJSON), + feature_residuals_full: value.feature_residuals_full, + feature_residuals_robust: value.feature_residuals_robust, + prediction_stats: value.prediction_stats, + outlying_feature_values: value.outlying_feature_values, + influential_cases: value.influential_cases, + most_similar_cases: value.most_similar_cases, + observational_errors: value.observational_errors, + feature_mda_full: value.feature_mda_full, + feature_mda_robust: value.feature_mda_robust, + feature_mda_ex_post_full: value.feature_mda_ex_post_full, + feature_mda_ex_post_robust: value.feature_mda_ex_post_robust, + directional_feature_contributions_full: value.directional_feature_contributions_full, + directional_feature_contributions_robust: value.directional_feature_contributions_robust, + feature_contributions_full: value.feature_contributions_full, + feature_contributions_robust: value.feature_contributions_robust, + case_directional_feature_contributions_full: value.case_directional_feature_contributions_full, + case_directional_feature_contributions_robust: value.case_directional_feature_contributions_robust, + case_feature_contributions_full: value.case_feature_contributions_full, + case_feature_contributions_robust: value.case_feature_contributions_robust, + case_mda_full: value.case_mda_full, + case_mda_robust: value.case_mda_robust, + case_contributions_full: value.case_contributions_full, + case_contributions_robust: value.case_contributions_robust, + case_feature_residuals_full: value.case_feature_residuals_full, + case_feature_residuals_robust: value.case_feature_residuals_robust, + local_case_feature_residual_convictions_full: value.local_case_feature_residual_convictions_full, + local_case_feature_residual_convictions_robust: value.local_case_feature_residual_convictions_robust, + global_case_feature_residual_convictions_full: value.global_case_feature_residual_convictions_full, + global_case_feature_residual_convictions_robust: value.global_case_feature_residual_convictions_robust, + hypothetical_values: value.hypothetical_values, + distance_ratio: value.distance_ratio, + distance_ratio_parts: + value.distance_ratio_parts === undefined + ? undefined + : (value.distance_ratio_parts as Array).map(DetailsResponseDistanceRatioPartsInnerToJSON), + distance_contribution: value.distance_contribution, + similarity_conviction: value.similarity_conviction, + most_similar_case_indices: value.most_similar_case_indices, + generate_attempts: value.generate_attempts, + series_generate_attempts: value.series_generate_attempts, + action_features: value.action_features, + action_values: value.action_values, + }; +} diff --git a/src/types/models/ReactSeriesActionOutput.ts b/src/types/models/ReactSeriesActionOutput.ts new file mode 100644 index 0000000..e4b4fda --- /dev/null +++ b/src/types/models/ReactSeriesActionOutput.ts @@ -0,0 +1,79 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactSeriesResponse } from "./ReactSeriesResponse"; +import { ReactSeriesResponseFromJSON, ReactSeriesResponseToJSON } from "./ReactSeriesResponse"; + +/** + * + * @export + * @interface ReactSeriesActionOutput + */ +export interface ReactSeriesActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof ReactSeriesActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof ReactSeriesActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof ReactSeriesActionOutput + */ + operation_type: string; + /** + * + * @type {ReactSeriesResponse} + * @memberof ReactSeriesActionOutput + */ + output?: ReactSeriesResponse | null; +} + +/** + * Check if a given object implements the ReactSeriesActionOutput interface. + */ +export function instanceOfReactSeriesActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function ReactSeriesActionOutputFromJSON(json: any): ReactSeriesActionOutput { + return ReactSeriesActionOutputFromJSONTyped(json, false); +} + +export function ReactSeriesActionOutputFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactSeriesActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : ReactSeriesResponseFromJSON(json["output"]), + }; +} + +export function ReactSeriesActionOutputToJSON(value?: ReactSeriesActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: ReactSeriesResponseToJSON(value.output), + }; +} diff --git a/src/types/models/ReactSeriesRequest.ts b/src/types/models/ReactSeriesRequest.ts new file mode 100644 index 0000000..95ecadb --- /dev/null +++ b/src/types/models/ReactSeriesRequest.ts @@ -0,0 +1,366 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists, mapValues } from "../runtime"; +import type { FeatureBounds } from "./FeatureBounds"; +import { FeatureBoundsFromJSON, FeatureBoundsToJSON } from "./FeatureBounds"; +import type { ReactDetails } from "./ReactDetails"; +import { ReactDetailsFromJSON, ReactDetailsToJSON } from "./ReactDetails"; + +/** + * + * @export + * @interface ReactSeriesRequest + */ +export interface ReactSeriesRequest { + /** + * A 2D array of context values. + * @type {Array>} + * @memberof ReactSeriesRequest + */ + contexts?: Array>; + /** + * One or more values for action features, if specified will only return the specified explanation + * details for the given actions. + * @type {Array>} + * @memberof ReactSeriesRequest + */ + actions?: Array>; + /** + * If set to true, assumes provided categorical (nominal or ordinal) feature values have already been substituted. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + input_is_substituted?: boolean; + /** + * Only applicable if a substitution value map has been set. If set to false, will not substitute categorical feature values. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + substitute_output?: boolean; + /** + * + * @type {ReactDetails} + * @memberof ReactSeriesRequest + */ + details?: ReactDetails; + /** + * The context features to use for this reaction. + * @type {Array} + * @memberof ReactSeriesRequest + */ + context_features?: Array; + /** + * The action features to use for this reaction. + * @type {Array} + * @memberof ReactSeriesRequest + */ + action_features?: Array; + /** + * A list of feature names whose values should be computed from the provided context in the specified order. + * + * Note: Relies on the features' "derived_feature_code" attribute to compute the values. If "derived_feature_code" + * attribute is undefined or references non-0 feature indices, the derived value will be null. + * @type {Array} + * @memberof ReactSeriesRequest + */ + derived_context_features?: Array; + /** + * A list of feature names whose values should be computed after reaction from the resulting case prior to output, in the specified order. + * + * Note: Relies on the features' "derived_feature_code" attribute to compute the values. If "derived_feature_code" + * attribute is undefined or references non-0 feature indices, the derived value will be null. + * @type {Array} + * @memberof ReactSeriesRequest + */ + derived_action_features?: Array; + /** + * If specified will execute a generative react. If not specified will executed a discriminative react. Conviction is the ratio of expected surprisal to generated surprisal for each feature generated, values are in the range of (0,infinity]. + * @type {number} + * @memberof ReactSeriesRequest + */ + desired_conviction?: number; + /** + * For generative reacts only. If true, excludes features which have a subtype in their feature attributes from the uniqueness check performed when generate_new_cases is "always". + * @type {boolean} + * @memberof ReactSeriesRequest + */ + exclude_novel_nominals_from_uniqueness_check?: boolean; + /** + * For generative reacts only. If false uses model feature residuals, if true recalculates regional model residuals. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + use_regional_model_residuals?: boolean; + /** + * For generative reacts only. + * @type {{ [key: string]: FeatureBounds; }} + * @memberof ReactSeriesRequest + */ + feature_bounds_map?: { [key: string]: FeatureBounds }; + /** + * Control whether generated cases can be those that already exist in the model. This parameter takes in a string that could be one of the following: + * a. "attempt": attempts to generate new cases and if its not possible to generate a new case, it might generate cases in "no" mode (see point c.) + * b. "always": always generates new cases and if its not possible to generate a new case, it returns nulls. + * c. "no": generates data based on the `desired_conviction` specified and the generated data is not guaranteed to be a new case (that is, a case not found in original dataset.) + * @type {string} + * @memberof ReactSeriesRequest + */ + generate_new_cases?: ReactSeriesRequestGenerateNewCasesEnum; + /** + * List of features that will preserve their values from the case specified by `case_indices`, appending and overwriting the specified contexts as necessary. For generative reacts, if `case_indices` isn't specified will preserve feature values of a random case. + * @type {Array} + * @memberof ReactSeriesRequest + */ + preserve_feature_values?: Array; + /** + * The privacy distance criteria for generated new cases. + * @type {string} + * @memberof ReactSeriesRequest + */ + new_case_threshold?: ReactSeriesRequestNewCaseThresholdEnum; + /** + * List of tuples, of session id and index, where index is the original 0-based index of the case as it was trained into the session. If this case does not exist, discriminative react outputs null, generative react ignores it. + * @type {Array>} + * @memberof ReactSeriesRequest + */ + case_indices?: Array>; + /** + * If set to True and specified along with case_indices, each individual react will respectively ignore the corresponding case specified by case_indices by leaving it out. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + leave_case_out?: boolean; + /** + * For generative reacts only. Features will be generated in the same order as provided in the 'action_features' parameter. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + ordered_by_specified_features?: boolean; + /** + * If set to True will scale influence weights by each case's weight_feature weight. If unspecified, case weights will be used if the Trainee has them. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally + * managed case weight. + * @type {string} + * @memberof ReactSeriesRequest + */ + weight_feature?: string; + /** + * The number of series to generate. + * @type {number} + * @memberof ReactSeriesRequest + */ + num_series_to_generate?: number; + /** + * When True, series ids are replaced with unique values on output. When False, will maintain or replace ids with existing trained values, but also allows output of series with duplicate existing ids. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + output_new_series_ids?: boolean; + /** + * Controls how closely generated series should follow existing series (plural). Choices are: "fixed" , "dynamic" or "no": + * a. "fixed", tracks the particular relevant series ID. + * b. "dynamic", tracks the particular relevant series ID, but is allowed to change the series ID that it tracks based on its current context. + * c. "no", does not track any particular series ID. + * @type {string} + * @memberof ReactSeriesRequest + */ + series_id_tracking?: ReactSeriesRequestSeriesIdTrackingEnum; + /** + * Map of feature name to stop conditions. Stops series when a feature's value meets the specified conditions. When set, must provide either one mapping to apply to all series, or a mapping for each series. + * @type {Array} + * @memberof ReactSeriesRequest + */ + series_stop_maps?: Array; + /** + * The maximum size a series is allowed to be. Default is 3 * model_size. A value of 0 is no limit. If forecasting using 'continue_series', then this value defines the maximum length of the forecast. When set, must provide either one max to apply to all series, or a max for each series. + * @type {Array} + * @memberof ReactSeriesRequest + */ + max_series_lengths?: Array; + /** + * List of features to condition just the first case in a series, overwrites 'context_features' and 'derived_context_features' for that first case. All specified initial features must be in one of: 'context_features', 'action_features', 'derived_context_features' or 'derived_action_features'. + * @type {Array} + * @memberof ReactSeriesRequest + */ + initial_features?: Array; + /** + * A 2d list of values corresponding to the initial_features, used to condition just the first case in each series. When set, must provide either one value to apply to all series, or a value for each series. + * @type {Array>} + * @memberof ReactSeriesRequest + */ + initial_values?: Array>; + /** + * A 3d-list of context values, one for each feature for each row for each series. If specified, 'max_series_lengths' are ignored. + * @type {Array>>} + * @memberof ReactSeriesRequest + */ + series_context_values?: Array>>; + /** + * List of context features corresponding to 'series_context_values', if specified must not overlap with any 'initial_features' or 'context_features'. + * @type {Array} + * @memberof ReactSeriesRequest + */ + series_context_features?: Array; + /** + * The time steps at which to end synthesis. Time-series only. Must provide either one for all series, or exactly one per series. + * @type {Array} + * @memberof ReactSeriesRequest + */ + final_time_steps?: Array; + /** + * The time steps at which to begin synthesis. Time-series only. Must provide either one for all series, or exactly one per series. + * @type {Array} + * @memberof ReactSeriesRequest + */ + init_time_steps?: Array; + /** + * When true will attempt to continue existing series instead of starting new series. If continue_series_values is specified, then that series data will be forecasted. If initial_values provide series IDs, it will continue those explicitly specified IDs, otherwise it will randomly select series to continue. Note: terminated series with terminators cannot be continued and will result in null output. + * @type {boolean} + * @memberof ReactSeriesRequest + */ + continue_series?: boolean; + /** + * The list of feature names corresponding to the values in each row of continue_series_values. This value is ignored if continue_series_values is not specified. + * @type {Array} + * @memberof ReactSeriesRequest + */ + continue_series_features?: Array; + /** + * A 3d list of series data to be forecasted with feature values in the same order defined by continue_series_features. The value of continue_series will be ignored and treated as true if this value is specified. + * @type {Array>>} + * @memberof ReactSeriesRequest + */ + continue_series_values?: Array>>; +} + +/** + * @export + * @enum {string} + */ +export type ReactSeriesRequestGenerateNewCasesEnum = "attempt" | "always" | "no"; +/** + * @export + * @enum {string} + */ +export type ReactSeriesRequestNewCaseThresholdEnum = "min" | "max" | "most_similar"; +/** + * @export + * @enum {string} + */ +export type ReactSeriesRequestSeriesIdTrackingEnum = "fixed" | "dynamic" | "no"; + +/** + * Check if a given object implements the ReactSeriesRequest interface. + */ +export function instanceOfReactSeriesRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactSeriesRequestFromJSON(json: any): ReactSeriesRequest { + return ReactSeriesRequestFromJSONTyped(json, false); +} + +export function ReactSeriesRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactSeriesRequest { + if (json === undefined || json === null) { + return json; + } + return { + contexts: !exists(json, "contexts") ? undefined : json["contexts"], + actions: !exists(json, "actions") ? undefined : json["actions"], + input_is_substituted: !exists(json, "input_is_substituted") ? undefined : json["input_is_substituted"], + substitute_output: !exists(json, "substitute_output") ? undefined : json["substitute_output"], + details: !exists(json, "details") ? undefined : ReactDetailsFromJSON(json["details"]), + context_features: !exists(json, "context_features") ? undefined : json["context_features"], + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + derived_context_features: !exists(json, "derived_context_features") ? undefined : json["derived_context_features"], + derived_action_features: !exists(json, "derived_action_features") ? undefined : json["derived_action_features"], + desired_conviction: !exists(json, "desired_conviction") ? undefined : json["desired_conviction"], + exclude_novel_nominals_from_uniqueness_check: !exists(json, "exclude_novel_nominals_from_uniqueness_check") + ? undefined + : json["exclude_novel_nominals_from_uniqueness_check"], + use_regional_model_residuals: !exists(json, "use_regional_model_residuals") + ? undefined + : json["use_regional_model_residuals"], + feature_bounds_map: !exists(json, "feature_bounds_map") + ? undefined + : mapValues(json["feature_bounds_map"], FeatureBoundsFromJSON), + generate_new_cases: !exists(json, "generate_new_cases") ? undefined : json["generate_new_cases"], + preserve_feature_values: !exists(json, "preserve_feature_values") ? undefined : json["preserve_feature_values"], + new_case_threshold: !exists(json, "new_case_threshold") ? undefined : json["new_case_threshold"], + case_indices: !exists(json, "case_indices") ? undefined : json["case_indices"], + leave_case_out: !exists(json, "leave_case_out") ? undefined : json["leave_case_out"], + ordered_by_specified_features: !exists(json, "ordered_by_specified_features") + ? undefined + : json["ordered_by_specified_features"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + num_series_to_generate: !exists(json, "num_series_to_generate") ? undefined : json["num_series_to_generate"], + output_new_series_ids: !exists(json, "output_new_series_ids") ? undefined : json["output_new_series_ids"], + series_id_tracking: !exists(json, "series_id_tracking") ? undefined : json["series_id_tracking"], + series_stop_maps: !exists(json, "series_stop_maps") ? undefined : json["series_stop_maps"], + max_series_lengths: !exists(json, "max_series_lengths") ? undefined : json["max_series_lengths"], + initial_features: !exists(json, "initial_features") ? undefined : json["initial_features"], + initial_values: !exists(json, "initial_values") ? undefined : json["initial_values"], + series_context_values: !exists(json, "series_context_values") ? undefined : json["series_context_values"], + series_context_features: !exists(json, "series_context_features") ? undefined : json["series_context_features"], + final_time_steps: !exists(json, "final_time_steps") ? undefined : json["final_time_steps"], + init_time_steps: !exists(json, "init_time_steps") ? undefined : json["init_time_steps"], + continue_series: !exists(json, "continue_series") ? undefined : json["continue_series"], + continue_series_features: !exists(json, "continue_series_features") ? undefined : json["continue_series_features"], + continue_series_values: !exists(json, "continue_series_values") ? undefined : json["continue_series_values"], + }; +} + +export function ReactSeriesRequestToJSON(value?: ReactSeriesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + contexts: value.contexts, + actions: value.actions, + input_is_substituted: value.input_is_substituted, + substitute_output: value.substitute_output, + details: ReactDetailsToJSON(value.details), + context_features: value.context_features, + action_features: value.action_features, + derived_context_features: value.derived_context_features, + derived_action_features: value.derived_action_features, + desired_conviction: value.desired_conviction, + exclude_novel_nominals_from_uniqueness_check: value.exclude_novel_nominals_from_uniqueness_check, + use_regional_model_residuals: value.use_regional_model_residuals, + feature_bounds_map: + value.feature_bounds_map === undefined ? undefined : mapValues(value.feature_bounds_map, FeatureBoundsToJSON), + generate_new_cases: value.generate_new_cases, + preserve_feature_values: value.preserve_feature_values, + new_case_threshold: value.new_case_threshold, + case_indices: value.case_indices, + leave_case_out: value.leave_case_out, + ordered_by_specified_features: value.ordered_by_specified_features, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + num_series_to_generate: value.num_series_to_generate, + output_new_series_ids: value.output_new_series_ids, + series_id_tracking: value.series_id_tracking, + series_stop_maps: value.series_stop_maps, + max_series_lengths: value.max_series_lengths, + initial_features: value.initial_features, + initial_values: value.initial_values, + series_context_values: value.series_context_values, + series_context_features: value.series_context_features, + final_time_steps: value.final_time_steps, + init_time_steps: value.init_time_steps, + continue_series: value.continue_series, + continue_series_features: value.continue_series_features, + continue_series_values: value.continue_series_values, + }; +} diff --git a/src/types/models/ReactSeriesResponse.ts b/src/types/models/ReactSeriesResponse.ts new file mode 100644 index 0000000..23005c4 --- /dev/null +++ b/src/types/models/ReactSeriesResponse.ts @@ -0,0 +1,63 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { ReactSeriesResponseContent } from "./ReactSeriesResponseContent"; +import { ReactSeriesResponseContentFromJSON, ReactSeriesResponseContentToJSON } from "./ReactSeriesResponseContent"; +import type { Warning } from "./Warning"; +import { WarningFromJSON, WarningToJSON } from "./Warning"; + +/** + * + * @export + * @interface ReactSeriesResponse + */ +export interface ReactSeriesResponse { + /** + * + * @type {Array} + * @memberof ReactSeriesResponse + */ + warnings?: Array; + /** + * + * @type {ReactSeriesResponseContent} + * @memberof ReactSeriesResponse + */ + content?: ReactSeriesResponseContent; +} + +/** + * Check if a given object implements the ReactSeriesResponse interface. + */ +export function instanceOfReactSeriesResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactSeriesResponseFromJSON(json: any): ReactSeriesResponse { + return ReactSeriesResponseFromJSONTyped(json, false); +} + +export function ReactSeriesResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReactSeriesResponse { + if (json === undefined || json === null) { + return json; + } + return { + warnings: !exists(json, "warnings") ? undefined : (json["warnings"] as Array).map(WarningFromJSON), + content: !exists(json, "content") ? undefined : ReactSeriesResponseContentFromJSON(json["content"]), + }; +} + +export function ReactSeriesResponseToJSON(value?: ReactSeriesResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + warnings: value.warnings === undefined ? undefined : (value.warnings as Array).map(WarningToJSON), + content: ReactSeriesResponseContentToJSON(value.content), + }; +} diff --git a/src/types/models/ReactSeriesResponseContent.ts b/src/types/models/ReactSeriesResponseContent.ts new file mode 100644 index 0000000..3662f75 --- /dev/null +++ b/src/types/models/ReactSeriesResponseContent.ts @@ -0,0 +1,436 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { DerivationParameters } from "./DerivationParameters"; +import { DerivationParametersFromJSON, DerivationParametersToJSON } from "./DerivationParameters"; +import type { DetailsResponseDistanceRatioPartsInner } from "./DetailsResponseDistanceRatioPartsInner"; +import { + DetailsResponseDistanceRatioPartsInnerFromJSON, + DetailsResponseDistanceRatioPartsInnerToJSON, +} from "./DetailsResponseDistanceRatioPartsInner"; +import type { DetailsResponseOutlyingFeatureValuesInnerValue } from "./DetailsResponseOutlyingFeatureValuesInnerValue"; + +/** + * + * @export + * @interface ReactSeriesResponseContent + */ +export interface ReactSeriesResponseContent { + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + boundary_cases?: Array>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactSeriesResponseContent + */ + categorical_action_probabilities?: Array<{ [key: string]: any }>; + /** + * + * @type {Array} + * @memberof ReactSeriesResponseContent + */ + derivation_parameters?: Array; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactSeriesResponseContent + */ + feature_residuals_full?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactSeriesResponseContent + */ + feature_residuals_robust?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactSeriesResponseContent + */ + prediction_stats?: Array<{ [key: string]: any }>; + /** + * + * @type {Array<{ [key: string]: DetailsResponseOutlyingFeatureValuesInnerValue; }>} + * @memberof ReactSeriesResponseContent + */ + outlying_feature_values?: Array<{ [key: string]: DetailsResponseOutlyingFeatureValuesInnerValue }>; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + influential_cases?: Array>; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + most_similar_cases?: Array>; + /** + * Observational errors for all features as defined in feature attributes. + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + observational_errors?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + feature_mda_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + feature_mda_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + feature_mda_ex_post_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + feature_mda_ex_post_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + directional_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + directional_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + case_directional_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + case_directional_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + case_feature_contributions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + case_feature_contributions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + case_mda_full?: Array>; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + case_mda_robust?: Array>; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + case_contributions_full?: Array>; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + case_contributions_robust?: Array>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + case_feature_residuals_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + case_feature_residuals_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + local_case_feature_residual_convictions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + local_case_feature_residual_convictions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + global_case_feature_residual_convictions_full?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: number; }>} + * @memberof ReactSeriesResponseContent + */ + global_case_feature_residual_convictions_robust?: Array<{ [key: string]: number }>; + /** + * + * @type {Array<{ [key: string]: any; }>} + * @memberof ReactSeriesResponseContent + */ + hypothetical_values?: Array<{ [key: string]: any }>; + /** + * + * @type {Array} + * @memberof ReactSeriesResponseContent + */ + distance_ratio?: Array; + /** + * + * @type {Array} + * @memberof ReactSeriesResponseContent + */ + distance_ratio_parts?: Array; + /** + * + * @type {Array} + * @memberof ReactSeriesResponseContent + */ + distance_contribution?: Array; + /** + * + * @type {Array} + * @memberof ReactSeriesResponseContent + */ + similarity_conviction?: Array; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + most_similar_case_indices?: Array>; + /** + * + * @type {Array} + * @memberof ReactSeriesResponseContent + */ + generate_attempts?: Array; + /** + * + * @type {Array>} + * @memberof ReactSeriesResponseContent + */ + series_generate_attempts?: Array>; + /** + * The list of all action features, specified and derived. + * @type {Array} + * @memberof ReactSeriesResponseContent + */ + action_features?: Array | null; + /** + * List of series, where each series is a 2d list of values (rows of data the series), where the values are in the same order as 'action_features'. + * @type {Array>>} + * @memberof ReactSeriesResponseContent + */ + action_values?: Array>> | null; +} + +/** + * Check if a given object implements the ReactSeriesResponseContent interface. + */ +export function instanceOfReactSeriesResponseContent(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReactSeriesResponseContentFromJSON(json: any): ReactSeriesResponseContent { + return ReactSeriesResponseContentFromJSONTyped(json, false); +} + +export function ReactSeriesResponseContentFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): ReactSeriesResponseContent { + if (json === undefined || json === null) { + return json; + } + return { + boundary_cases: !exists(json, "boundary_cases") ? undefined : json["boundary_cases"], + categorical_action_probabilities: !exists(json, "categorical_action_probabilities") + ? undefined + : json["categorical_action_probabilities"], + derivation_parameters: !exists(json, "derivation_parameters") + ? undefined + : (json["derivation_parameters"] as Array).map(DerivationParametersFromJSON), + feature_residuals_full: !exists(json, "feature_residuals_full") ? undefined : json["feature_residuals_full"], + feature_residuals_robust: !exists(json, "feature_residuals_robust") ? undefined : json["feature_residuals_robust"], + prediction_stats: !exists(json, "prediction_stats") ? undefined : json["prediction_stats"], + outlying_feature_values: !exists(json, "outlying_feature_values") ? undefined : json["outlying_feature_values"], + influential_cases: !exists(json, "influential_cases") ? undefined : json["influential_cases"], + most_similar_cases: !exists(json, "most_similar_cases") ? undefined : json["most_similar_cases"], + observational_errors: !exists(json, "observational_errors") ? undefined : json["observational_errors"], + feature_mda_full: !exists(json, "feature_mda_full") ? undefined : json["feature_mda_full"], + feature_mda_robust: !exists(json, "feature_mda_robust") ? undefined : json["feature_mda_robust"], + feature_mda_ex_post_full: !exists(json, "feature_mda_ex_post_full") ? undefined : json["feature_mda_ex_post_full"], + feature_mda_ex_post_robust: !exists(json, "feature_mda_ex_post_robust") + ? undefined + : json["feature_mda_ex_post_robust"], + directional_feature_contributions_full: !exists(json, "directional_feature_contributions_full") + ? undefined + : json["directional_feature_contributions_full"], + directional_feature_contributions_robust: !exists(json, "directional_feature_contributions_robust") + ? undefined + : json["directional_feature_contributions_robust"], + feature_contributions_full: !exists(json, "feature_contributions_full") + ? undefined + : json["feature_contributions_full"], + feature_contributions_robust: !exists(json, "feature_contributions_robust") + ? undefined + : json["feature_contributions_robust"], + case_directional_feature_contributions_full: !exists(json, "case_directional_feature_contributions_full") + ? undefined + : json["case_directional_feature_contributions_full"], + case_directional_feature_contributions_robust: !exists(json, "case_directional_feature_contributions_robust") + ? undefined + : json["case_directional_feature_contributions_robust"], + case_feature_contributions_full: !exists(json, "case_feature_contributions_full") + ? undefined + : json["case_feature_contributions_full"], + case_feature_contributions_robust: !exists(json, "case_feature_contributions_robust") + ? undefined + : json["case_feature_contributions_robust"], + case_mda_full: !exists(json, "case_mda_full") ? undefined : json["case_mda_full"], + case_mda_robust: !exists(json, "case_mda_robust") ? undefined : json["case_mda_robust"], + case_contributions_full: !exists(json, "case_contributions_full") ? undefined : json["case_contributions_full"], + case_contributions_robust: !exists(json, "case_contributions_robust") + ? undefined + : json["case_contributions_robust"], + case_feature_residuals_full: !exists(json, "case_feature_residuals_full") + ? undefined + : json["case_feature_residuals_full"], + case_feature_residuals_robust: !exists(json, "case_feature_residuals_robust") + ? undefined + : json["case_feature_residuals_robust"], + local_case_feature_residual_convictions_full: !exists(json, "local_case_feature_residual_convictions_full") + ? undefined + : json["local_case_feature_residual_convictions_full"], + local_case_feature_residual_convictions_robust: !exists(json, "local_case_feature_residual_convictions_robust") + ? undefined + : json["local_case_feature_residual_convictions_robust"], + global_case_feature_residual_convictions_full: !exists(json, "global_case_feature_residual_convictions_full") + ? undefined + : json["global_case_feature_residual_convictions_full"], + global_case_feature_residual_convictions_robust: !exists(json, "global_case_feature_residual_convictions_robust") + ? undefined + : json["global_case_feature_residual_convictions_robust"], + hypothetical_values: !exists(json, "hypothetical_values") ? undefined : json["hypothetical_values"], + distance_ratio: !exists(json, "distance_ratio") ? undefined : json["distance_ratio"], + distance_ratio_parts: !exists(json, "distance_ratio_parts") + ? undefined + : (json["distance_ratio_parts"] as Array).map(DetailsResponseDistanceRatioPartsInnerFromJSON), + distance_contribution: !exists(json, "distance_contribution") ? undefined : json["distance_contribution"], + similarity_conviction: !exists(json, "similarity_conviction") ? undefined : json["similarity_conviction"], + most_similar_case_indices: !exists(json, "most_similar_case_indices") + ? undefined + : json["most_similar_case_indices"], + generate_attempts: !exists(json, "generate_attempts") ? undefined : json["generate_attempts"], + series_generate_attempts: !exists(json, "series_generate_attempts") ? undefined : json["series_generate_attempts"], + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + action_values: !exists(json, "action_values") ? undefined : json["action_values"], + }; +} + +export function ReactSeriesResponseContentToJSON(value?: ReactSeriesResponseContent | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + boundary_cases: value.boundary_cases, + categorical_action_probabilities: value.categorical_action_probabilities, + derivation_parameters: + value.derivation_parameters === undefined + ? undefined + : (value.derivation_parameters as Array).map(DerivationParametersToJSON), + feature_residuals_full: value.feature_residuals_full, + feature_residuals_robust: value.feature_residuals_robust, + prediction_stats: value.prediction_stats, + outlying_feature_values: value.outlying_feature_values, + influential_cases: value.influential_cases, + most_similar_cases: value.most_similar_cases, + observational_errors: value.observational_errors, + feature_mda_full: value.feature_mda_full, + feature_mda_robust: value.feature_mda_robust, + feature_mda_ex_post_full: value.feature_mda_ex_post_full, + feature_mda_ex_post_robust: value.feature_mda_ex_post_robust, + directional_feature_contributions_full: value.directional_feature_contributions_full, + directional_feature_contributions_robust: value.directional_feature_contributions_robust, + feature_contributions_full: value.feature_contributions_full, + feature_contributions_robust: value.feature_contributions_robust, + case_directional_feature_contributions_full: value.case_directional_feature_contributions_full, + case_directional_feature_contributions_robust: value.case_directional_feature_contributions_robust, + case_feature_contributions_full: value.case_feature_contributions_full, + case_feature_contributions_robust: value.case_feature_contributions_robust, + case_mda_full: value.case_mda_full, + case_mda_robust: value.case_mda_robust, + case_contributions_full: value.case_contributions_full, + case_contributions_robust: value.case_contributions_robust, + case_feature_residuals_full: value.case_feature_residuals_full, + case_feature_residuals_robust: value.case_feature_residuals_robust, + local_case_feature_residual_convictions_full: value.local_case_feature_residual_convictions_full, + local_case_feature_residual_convictions_robust: value.local_case_feature_residual_convictions_robust, + global_case_feature_residual_convictions_full: value.global_case_feature_residual_convictions_full, + global_case_feature_residual_convictions_robust: value.global_case_feature_residual_convictions_robust, + hypothetical_values: value.hypothetical_values, + distance_ratio: value.distance_ratio, + distance_ratio_parts: + value.distance_ratio_parts === undefined + ? undefined + : (value.distance_ratio_parts as Array).map(DetailsResponseDistanceRatioPartsInnerToJSON), + distance_contribution: value.distance_contribution, + similarity_conviction: value.similarity_conviction, + most_similar_case_indices: value.most_similar_case_indices, + generate_attempts: value.generate_attempts, + series_generate_attempts: value.series_generate_attempts, + action_features: value.action_features, + action_values: value.action_values, + }; +} diff --git a/src/types/models/ReduceDataParams.ts b/src/types/models/ReduceDataParams.ts new file mode 100644 index 0000000..51bcddb --- /dev/null +++ b/src/types/models/ReduceDataParams.ts @@ -0,0 +1,78 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface ReduceDataParams + */ +export interface ReduceDataParams { + /** + * A list of context features to use when determining which cases to remove. + * @type {Array} + * @memberof ReduceDataParams + */ + features?: Array; + /** + * The name of the weight feature used when performing data reduction. + * @type {string} + * @memberof ReduceDataParams + */ + distribute_weight_feature?: string; + /** + * The quantile to use when deciding which cases to remove. Cases above this quantile will be removed. + * @type {number} + * @memberof ReduceDataParams + */ + influence_weight_entropy_threshold?: number; + /** + * Whether to skip auto-analyzing as cases are removed. + * @type {boolean} + * @memberof ReduceDataParams + */ + skip_auto_analyze?: boolean; +} + +/** + * Check if a given object implements the ReduceDataParams interface. + */ +export function instanceOfReduceDataParams(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function ReduceDataParamsFromJSON(json: any): ReduceDataParams { + return ReduceDataParamsFromJSONTyped(json, false); +} + +export function ReduceDataParamsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ReduceDataParams { + if (json === undefined || json === null) { + return json; + } + return { + features: !exists(json, "features") ? undefined : json["features"], + distribute_weight_feature: !exists(json, "distribute_weight_feature") + ? undefined + : json["distribute_weight_feature"], + influence_weight_entropy_threshold: !exists(json, "influence_weight_entropy_threshold") + ? undefined + : json["influence_weight_entropy_threshold"], + skip_auto_analyze: !exists(json, "skip_auto_analyze") ? undefined : json["skip_auto_analyze"], + }; +} + +export function ReduceDataParamsToJSON(value?: ReduceDataParams | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + features: value.features, + distribute_weight_feature: value.distribute_weight_feature, + influence_weight_entropy_threshold: value.influence_weight_entropy_threshold, + skip_auto_analyze: value.skip_auto_analyze, + }; +} diff --git a/src/types/models/RemoveSeriesStoreRequest.ts b/src/types/models/RemoveSeriesStoreRequest.ts new file mode 100644 index 0000000..7226bbe --- /dev/null +++ b/src/types/models/RemoveSeriesStoreRequest.ts @@ -0,0 +1,53 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of a remove series store request. + * @export + * @interface RemoveSeriesStoreRequest + */ +export interface RemoveSeriesStoreRequest { + /** + * The name of a series to remove. + * @type {string} + * @memberof RemoveSeriesStoreRequest + */ + series?: string | null; +} + +/** + * Check if a given object implements the RemoveSeriesStoreRequest interface. + */ +export function instanceOfRemoveSeriesStoreRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function RemoveSeriesStoreRequestFromJSON(json: any): RemoveSeriesStoreRequest { + return RemoveSeriesStoreRequestFromJSONTyped(json, false); +} + +export function RemoveSeriesStoreRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): RemoveSeriesStoreRequest { + if (json === undefined || json === null) { + return json; + } + return { + series: !exists(json, "series") ? undefined : json["series"], + }; +} + +export function RemoveSeriesStoreRequestToJSON(value?: RemoveSeriesStoreRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + series: value.series, + }; +} diff --git a/src/types/models/Session.ts b/src/types/models/Session.ts new file mode 100644 index 0000000..6bd4319 --- /dev/null +++ b/src/types/models/Session.ts @@ -0,0 +1,93 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { AccountIdentity } from "./AccountIdentity"; +import { AccountIdentityFromJSON, AccountIdentityToJSON } from "./AccountIdentity"; + +/** + * A model session. + * @export + * @interface Session + */ +export interface Session { + /** + * The session's unique identifier. + * @type {string} + * @memberof Session + */ + id?: string; + /** + * The name given to the session. + * @type {string} + * @memberof Session + */ + name?: string; + /** + * + * @type {AccountIdentity} + * @memberof Session + */ + user?: AccountIdentity; + /** + * Any key-value pair to store custom metadata for the session. + * @type {{ [key: string]: any; }} + * @memberof Session + */ + metadata?: { [key: string]: any }; + /** + * The timestamp of when the session was issued. + * @type {Date} + * @memberof Session + */ + created_date?: Date; + /** + * The timestamp of when the session was modified. + * @type {Date} + * @memberof Session + */ + modified_date?: Date; +} + +/** + * Check if a given object implements the Session interface. + */ +export function instanceOfSession(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function SessionFromJSON(json: any): Session { + return SessionFromJSONTyped(json, false); +} + +export function SessionFromJSONTyped(json: any, ignoreDiscriminator: boolean): Session { + if (json === undefined || json === null) { + return json; + } + return { + id: !exists(json, "id") ? undefined : json["id"], + name: !exists(json, "name") ? undefined : json["name"], + user: !exists(json, "user") ? undefined : AccountIdentityFromJSON(json["user"]), + metadata: !exists(json, "metadata") ? undefined : json["metadata"], + created_date: !exists(json, "created_date") ? undefined : new Date(json["created_date"]), + modified_date: !exists(json, "modified_date") ? undefined : new Date(json["modified_date"]), + }; +} + +export function SessionToJSON(value?: Session | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + id: value.id, + name: value.name, + user: AccountIdentityToJSON(value.user), + metadata: value.metadata, + created_date: value.created_date === undefined ? undefined : value.created_date.toISOString(), + modified_date: value.modified_date === undefined ? undefined : value.modified_date.toISOString(), + }; +} diff --git a/src/types/models/SessionIdentity.ts b/src/types/models/SessionIdentity.ts new file mode 100644 index 0000000..6b90435 --- /dev/null +++ b/src/types/models/SessionIdentity.ts @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * A model session identity. + * @export + * @interface SessionIdentity + */ +export interface SessionIdentity { + /** + * The session's unique identifier. + * @type {string} + * @memberof SessionIdentity + */ + id?: string; + /** + * The name given to the session. + * @type {string} + * @memberof SessionIdentity + */ + name?: string; +} + +/** + * Check if a given object implements the SessionIdentity interface. + */ +export function instanceOfSessionIdentity(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function SessionIdentityFromJSON(json: any): SessionIdentity { + return SessionIdentityFromJSONTyped(json, false); +} + +export function SessionIdentityFromJSONTyped(json: any, ignoreDiscriminator: boolean): SessionIdentity { + if (json === undefined || json === null) { + return json; + } + return { + id: !exists(json, "id") ? undefined : json["id"], + name: !exists(json, "name") ? undefined : json["name"], + }; +} + +export function SessionIdentityToJSON(value?: SessionIdentity | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + id: value.id, + name: value.name, + }; +} diff --git a/src/types/models/SetAutoAnalyzeParamsRequest.ts b/src/types/models/SetAutoAnalyzeParamsRequest.ts new file mode 100644 index 0000000..b565ba2 --- /dev/null +++ b/src/types/models/SetAutoAnalyzeParamsRequest.ts @@ -0,0 +1,239 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Parameters specific for /analyze may be also be passed in and will be cached and used during future auto-analysiss. + * @export + * @interface SetAutoAnalyzeParamsRequest + */ +export interface SetAutoAnalyzeParamsRequest { + /** + * A list of action feature names. + * @type {Array} + * @memberof SetAutoAnalyzeParamsRequest + */ + action_features?: Array; + /** + * A list of context feature names. + * @type {Array} + * @memberof SetAutoAnalyzeParamsRequest + */ + context_features?: Array; + /** + * Number of cross validation folds to do. Value of 1 does hold-one-out instead of k-fold. + * @type {number} + * @memberof SetAutoAnalyzeParamsRequest + */ + k_folds?: number; + /** + * Number of samples used in calculating feature residuals. + * @type {number} + * @memberof SetAutoAnalyzeParamsRequest + */ + num_samples?: number; + /** + * Optional list of distance transform value hyperparameters to analyze with. + * @type {Array} + * @memberof SetAutoAnalyzeParamsRequest + */ + dt_values?: Array; + /** + * Optional list of k value hyperparameters to analyze with. + * @type {Array} + * @memberof SetAutoAnalyzeParamsRequest + */ + k_values?: Array; + /** + * Optional list of p value hyperparameters to analyze with. + * @type {Array} + * @memberof SetAutoAnalyzeParamsRequest + */ + p_values?: Array; + /** + * If true, bypass hyperparameter analysis. + * @type {boolean} + * @memberof SetAutoAnalyzeParamsRequest + */ + bypass_hyperparameter_analysis?: boolean; + /** + * If true, bypass calculation of feature residuals. + * @type {boolean} + * @memberof SetAutoAnalyzeParamsRequest + */ + bypass_calculate_feature_residuals?: boolean; + /** + * If true, bypass calculation of feature weights. + * @type {boolean} + * @memberof SetAutoAnalyzeParamsRequest + */ + bypass_calculate_feature_weights?: boolean; + /** + * Optional value, defaults to single_targeted + * single_targeted: analyze hyperparameters for the specified action_features + * omni_targeted: analyze hyperparameters for each context feature as an action feature, ignores action_features parameter + * targetless: analyze hyperparameters for all context features as possible action features, ignores action_features parameter + * @type {string} + * @memberof SetAutoAnalyzeParamsRequest + */ + targeted_model?: SetAutoAnalyzeParamsRequestTargetedModelEnum; + /** + * Optional. Number of cases to sample during analysis. Only applies for k_folds = 1. + * @type {number} + * @memberof SetAutoAnalyzeParamsRequest + */ + num_analysis_samples?: number; + /** + * Optional. Number of samples to use for analysis. The rest will be randomly held-out and not included in calculations. + * @type {number} + * @memberof SetAutoAnalyzeParamsRequest + */ + analysis_sub_model_size?: number; + /** + * Optional flag, when true uses deviations for LK metric in queries. + * @type {boolean} + * @memberof SetAutoAnalyzeParamsRequest + */ + use_deviations?: boolean; + /** + * Compute and use inverse of residuals as feature weights. + * @type {boolean} + * @memberof SetAutoAnalyzeParamsRequest + */ + inverse_residuals_as_weights?: boolean; + /** + * Optional. When True, will scale influence weights by each case's `weight_feature` weight. + * @type {boolean} + * @memberof SetAutoAnalyzeParamsRequest + */ + use_case_weights?: boolean; + /** + * The name of the feature whose values to use as case weights. When left unspecified, uses the internally + * managed case weight. + * @type {string} + * @memberof SetAutoAnalyzeParamsRequest + */ + weight_feature?: string; + /** + * Additional experimental analyze parameters. + * @type {{ [key: string]: any; }} + * @memberof SetAutoAnalyzeParamsRequest + */ + experimental_options?: { [key: string]: any }; + /** + * When True, the train operation returns when it's time for the model to be analyzed again. + * @type {boolean} + * @memberof SetAutoAnalyzeParamsRequest + */ + auto_analyze_enabled?: boolean; + /** + * The size of of the model at which to stop doing auto-analysis. Value of 0 means no limit. + * @type {number} + * @memberof SetAutoAnalyzeParamsRequest + */ + auto_analyze_limit_size?: number; + /** + * The factor by which to increase the analyze threshold every time the model grows to the current threshold size. + * @type {number} + * @memberof SetAutoAnalyzeParamsRequest + */ + analyze_growth_factor?: number; + /** + * The threshold for the number of cases at which the model should be re-analyzed. + * @type {number} + * @memberof SetAutoAnalyzeParamsRequest + */ + analyze_threshold?: number; +} + +/** + * @export + * @enum {string} + */ +export type SetAutoAnalyzeParamsRequestTargetedModelEnum = "single_targeted" | "omni_targeted" | "targetless"; + +/** + * Check if a given object implements the SetAutoAnalyzeParamsRequest interface. + */ +export function instanceOfSetAutoAnalyzeParamsRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function SetAutoAnalyzeParamsRequestFromJSON(json: any): SetAutoAnalyzeParamsRequest { + return SetAutoAnalyzeParamsRequestFromJSONTyped(json, false); +} + +export function SetAutoAnalyzeParamsRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): SetAutoAnalyzeParamsRequest { + if (json === undefined || json === null) { + return json; + } + return { + action_features: !exists(json, "action_features") ? undefined : json["action_features"], + context_features: !exists(json, "context_features") ? undefined : json["context_features"], + k_folds: !exists(json, "k_folds") ? undefined : json["k_folds"], + num_samples: !exists(json, "num_samples") ? undefined : json["num_samples"], + dt_values: !exists(json, "dt_values") ? undefined : json["dt_values"], + k_values: !exists(json, "k_values") ? undefined : json["k_values"], + p_values: !exists(json, "p_values") ? undefined : json["p_values"], + bypass_hyperparameter_analysis: !exists(json, "bypass_hyperparameter_analysis") + ? undefined + : json["bypass_hyperparameter_analysis"], + bypass_calculate_feature_residuals: !exists(json, "bypass_calculate_feature_residuals") + ? undefined + : json["bypass_calculate_feature_residuals"], + bypass_calculate_feature_weights: !exists(json, "bypass_calculate_feature_weights") + ? undefined + : json["bypass_calculate_feature_weights"], + targeted_model: !exists(json, "targeted_model") ? undefined : json["targeted_model"], + num_analysis_samples: !exists(json, "num_analysis_samples") ? undefined : json["num_analysis_samples"], + analysis_sub_model_size: !exists(json, "analysis_sub_model_size") ? undefined : json["analysis_sub_model_size"], + use_deviations: !exists(json, "use_deviations") ? undefined : json["use_deviations"], + inverse_residuals_as_weights: !exists(json, "inverse_residuals_as_weights") + ? undefined + : json["inverse_residuals_as_weights"], + use_case_weights: !exists(json, "use_case_weights") ? undefined : json["use_case_weights"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + experimental_options: !exists(json, "experimental_options") ? undefined : json["experimental_options"], + auto_analyze_enabled: !exists(json, "auto_analyze_enabled") ? undefined : json["auto_analyze_enabled"], + auto_analyze_limit_size: !exists(json, "auto_analyze_limit_size") ? undefined : json["auto_analyze_limit_size"], + analyze_growth_factor: !exists(json, "analyze_growth_factor") ? undefined : json["analyze_growth_factor"], + analyze_threshold: !exists(json, "analyze_threshold") ? undefined : json["analyze_threshold"], + }; +} + +export function SetAutoAnalyzeParamsRequestToJSON(value?: SetAutoAnalyzeParamsRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_features: value.action_features, + context_features: value.context_features, + k_folds: value.k_folds, + num_samples: value.num_samples, + dt_values: value.dt_values, + k_values: value.k_values, + p_values: value.p_values, + bypass_hyperparameter_analysis: value.bypass_hyperparameter_analysis, + bypass_calculate_feature_residuals: value.bypass_calculate_feature_residuals, + bypass_calculate_feature_weights: value.bypass_calculate_feature_weights, + targeted_model: value.targeted_model, + num_analysis_samples: value.num_analysis_samples, + analysis_sub_model_size: value.analysis_sub_model_size, + use_deviations: value.use_deviations, + inverse_residuals_as_weights: value.inverse_residuals_as_weights, + use_case_weights: value.use_case_weights, + weight_feature: value.weight_feature, + experimental_options: value.experimental_options, + auto_analyze_enabled: value.auto_analyze_enabled, + auto_analyze_limit_size: value.auto_analyze_limit_size, + analyze_growth_factor: value.analyze_growth_factor, + analyze_threshold: value.analyze_threshold, + }; +} diff --git a/src/types/models/StringType.ts b/src/types/models/StringType.ts new file mode 100644 index 0000000..ed82bb4 --- /dev/null +++ b/src/types/models/StringType.ts @@ -0,0 +1,67 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface StringType + */ +export interface StringType { + /** + * The name of the data type. + * @type {string} + * @memberof StringType + */ + data_type: string; + /** + * The maximum allowed length of the string. + * @type {number} + * @memberof StringType + */ + length?: number | null; + /** + * The string encoding type. + * @type {string} + * @memberof StringType + */ + encoding?: string | null; +} + +/** + * Check if a given object implements the StringType interface. + */ +export function instanceOfStringType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function StringTypeFromJSON(json: any): StringType { + return StringTypeFromJSONTyped(json, false); +} + +export function StringTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): StringType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + length: !exists(json, "length") ? undefined : json["length"], + encoding: !exists(json, "encoding") ? undefined : json["encoding"], + }; +} + +export function StringTypeToJSON(value?: StringType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + length: value.length, + encoding: value.encoding, + }; +} diff --git a/src/types/models/TimeType.ts b/src/types/models/TimeType.ts new file mode 100644 index 0000000..1b3393e --- /dev/null +++ b/src/types/models/TimeType.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface TimeType + */ +export interface TimeType { + /** + * The name of the data type. + * @type {string} + * @memberof TimeType + */ + data_type: string; + /** + * The standardized timezone name. + * @type {string} + * @memberof TimeType + */ + timezone?: string | null; +} + +/** + * Check if a given object implements the TimeType interface. + */ +export function instanceOfTimeType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function TimeTypeFromJSON(json: any): TimeType { + return TimeTypeFromJSONTyped(json, false); +} + +export function TimeTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + timezone: !exists(json, "timezone") ? undefined : json["timezone"], + }; +} + +export function TimeTypeToJSON(value?: TimeType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + timezone: value.timezone, + }; +} diff --git a/src/types/models/TimedeltaType.ts b/src/types/models/TimedeltaType.ts new file mode 100644 index 0000000..e8d670d --- /dev/null +++ b/src/types/models/TimedeltaType.ts @@ -0,0 +1,65 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface TimedeltaType + */ +export interface TimedeltaType { + /** + * The name of the data type. + * @type {string} + * @memberof TimedeltaType + */ + data_type: string; + /** + * The unit of the time delta. + * @type {string} + * @memberof TimedeltaType + */ + unit?: TimedeltaTypeUnitEnum; +} + +/** + * @export + * @enum {string} + */ +export type TimedeltaTypeUnitEnum = "days" | "seconds" | "nanoseconds"; + +/** + * Check if a given object implements the TimedeltaType interface. + */ +export function instanceOfTimedeltaType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "data_type" in value; + + return isInstance; +} + +export function TimedeltaTypeFromJSON(json: any): TimedeltaType { + return TimedeltaTypeFromJSONTyped(json, false); +} + +export function TimedeltaTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimedeltaType { + if (json === undefined || json === null) { + return json; + } + return { + data_type: json["data_type"], + unit: !exists(json, "unit") ? undefined : json["unit"], + }; +} + +export function TimedeltaTypeToJSON(value?: TimedeltaType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + data_type: value.data_type, + unit: value.unit, + }; +} diff --git a/src/types/models/TraceResponse.ts b/src/types/models/TraceResponse.ts new file mode 100644 index 0000000..fa3b007 --- /dev/null +++ b/src/types/models/TraceResponse.ts @@ -0,0 +1,58 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Response from persist_trace + * @export + * @interface TraceResponse + */ +export interface TraceResponse { + /** + * + * @type {string} + * @memberof TraceResponse + */ + presigned_url?: string; + /** + * + * @type {string} + * @memberof TraceResponse + */ + expires_at?: string; +} + +/** + * Check if a given object implements the TraceResponse interface. + */ +export function instanceOfTraceResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraceResponseFromJSON(json: any): TraceResponse { + return TraceResponseFromJSONTyped(json, false); +} + +export function TraceResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TraceResponse { + if (json === undefined || json === null) { + return json; + } + return { + presigned_url: !exists(json, "presigned_url") ? undefined : json["presigned_url"], + expires_at: !exists(json, "expires_at") ? undefined : json["expires_at"], + }; +} + +export function TraceResponseToJSON(value?: TraceResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + presigned_url: value.presigned_url, + expires_at: value.expires_at, + }; +} diff --git a/src/types/models/TrainActionOutput.ts b/src/types/models/TrainActionOutput.ts new file mode 100644 index 0000000..c1a9fa0 --- /dev/null +++ b/src/types/models/TrainActionOutput.ts @@ -0,0 +1,79 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { TrainResponse } from "./TrainResponse"; +import { TrainResponseFromJSON, TrainResponseToJSON } from "./TrainResponse"; + +/** + * + * @export + * @interface TrainActionOutput + */ +export interface TrainActionOutput { + /** + * The async action's unique identifier. + * @type {string} + * @memberof TrainActionOutput + */ + action_id?: string; + /** + * The status of the action. + * @type {string} + * @memberof TrainActionOutput + */ + status: string; + /** + * The type of operation that is running. + * @type {string} + * @memberof TrainActionOutput + */ + operation_type: string; + /** + * + * @type {TrainResponse} + * @memberof TrainActionOutput + */ + output?: TrainResponse | null; +} + +/** + * Check if a given object implements the TrainActionOutput interface. + */ +export function instanceOfTrainActionOutput(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "status" in value; + isInstance = isInstance && "operation_type" in value; + + return isInstance; +} + +export function TrainActionOutputFromJSON(json: any): TrainActionOutput { + return TrainActionOutputFromJSONTyped(json, false); +} + +export function TrainActionOutputFromJSONTyped(json: any, ignoreDiscriminator: boolean): TrainActionOutput { + if (json === undefined || json === null) { + return json; + } + return { + action_id: !exists(json, "action_id") ? undefined : json["action_id"], + status: json["status"], + operation_type: json["operation_type"], + output: !exists(json, "output") ? undefined : TrainResponseFromJSON(json["output"]), + }; +} + +export function TrainActionOutputToJSON(value?: TrainActionOutput | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_id: value.action_id, + status: value.status, + operation_type: value.operation_type, + output: TrainResponseToJSON(value.output), + }; +} diff --git a/src/types/models/TrainRequest.ts b/src/types/models/TrainRequest.ts new file mode 100644 index 0000000..ba328b9 --- /dev/null +++ b/src/types/models/TrainRequest.ts @@ -0,0 +1,117 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The body of a train request. + * @export + * @interface TrainRequest + */ +export interface TrainRequest { + /** + * One or more cases to train into the model. + * @type {Array>} + * @memberof TrainRequest + */ + cases: Array>; + /** + * List of feature names. Note, features may not begin with one of the following four characters . ^ ! # + * @type {Array} + * @memberof TrainRequest + */ + features?: Array; + /** + * List of feature names for which values should be derived in the specified order. If this list is not provided, features with the "auto_derive_on_train" feature attribute set to True will be auto-derived. If provided an empty list, no features are derived. Any derived_features that are already in the "features" list will not be derived since their values are being explicitly provided. + * @type {Array} + * @memberof TrainRequest + */ + derived_features?: Array; + /** + * If set to true, assumes provided categorical (nominal or ordinal) feature values have already been substituted. + * @type {boolean} + * @memberof TrainRequest + */ + input_is_substituted?: boolean; + /** + * The name of a feature into which to accumulate neighbors' influences as weight for ablated cases. If unspecified, will not accumulate weights. + * @type {string} + * @memberof TrainRequest + */ + accumulate_weight_feature?: string; + /** + * The name of the series to pull features and case values from internal series storage. If specified, trains on all cases that are stored in the internal series store for the specified series. The trained feature set is the combined features from storage and the passed in features. If cases is of length one, the value(s) of this case are appended to all cases in the series. If cases is the same length as the series, the value of each case in cases is applied in order to each of the cases in the series. + * @type {string} + * @memberof TrainRequest + */ + series?: string; + /** + * When true, any auto-analysis will be skipped within the training process and a status of "analyze" will be returned if an analysis is needed. When false, the training process will automatically trigger an analysis if auto-analyze is enabled and the conditions are met. In the case when an analysis was triggered, the "status" of the TrainResponse will be "analyzed". + * @type {boolean} + * @memberof TrainRequest + */ + skip_auto_analyze?: boolean; + /** + * When true, and accumulate_weight_feature is provided, will accumulate all of the cases' neighbor weights instead of training the cases into the model. + * @type {boolean} + * @memberof TrainRequest + */ + train_weights_only?: boolean; + /** + * Process the request using the asynchronous Request-Reply flow. Otherwise processes request normally. + * @type {boolean} + * @memberof TrainRequest + */ + run_async?: boolean; +} + +/** + * Check if a given object implements the TrainRequest interface. + */ +export function instanceOfTrainRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "cases" in value; + + return isInstance; +} + +export function TrainRequestFromJSON(json: any): TrainRequest { + return TrainRequestFromJSONTyped(json, false); +} + +export function TrainRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): TrainRequest { + if (json === undefined || json === null) { + return json; + } + return { + cases: json["cases"], + features: !exists(json, "features") ? undefined : json["features"], + derived_features: !exists(json, "derived_features") ? undefined : json["derived_features"], + input_is_substituted: !exists(json, "input_is_substituted") ? undefined : json["input_is_substituted"], + accumulate_weight_feature: !exists(json, "accumulate_weight_feature") + ? undefined + : json["accumulate_weight_feature"], + series: !exists(json, "series") ? undefined : json["series"], + skip_auto_analyze: !exists(json, "skip_auto_analyze") ? undefined : json["skip_auto_analyze"], + train_weights_only: !exists(json, "train_weights_only") ? undefined : json["train_weights_only"], + run_async: !exists(json, "run_async") ? undefined : json["run_async"], + }; +} + +export function TrainRequestToJSON(value?: TrainRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + cases: value.cases, + features: value.features, + derived_features: value.derived_features, + input_is_substituted: value.input_is_substituted, + accumulate_weight_feature: value.accumulate_weight_feature, + series: value.series, + skip_auto_analyze: value.skip_auto_analyze, + train_weights_only: value.train_weights_only, + run_async: value.run_async, + }; +} diff --git a/src/types/models/TrainResponse.ts b/src/types/models/TrainResponse.ts new file mode 100644 index 0000000..90bcbec --- /dev/null +++ b/src/types/models/TrainResponse.ts @@ -0,0 +1,70 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * The result of the train request. + * @export + * @interface TrainResponse + */ +export interface TrainResponse { + /** + * The indices of ablated cases. + * @type {Array} + * @memberof TrainResponse + */ + ablated_indices?: Array; + /** + * The number of cases that were trained. + * @type {number} + * @memberof TrainResponse + */ + num_trained?: number; + /** + * Status message output. Valid status values are: + * null - default output, no status + * "analyze" - if auto analysis is enabled, the model has grown large enough to be analyzed again, + * and 'skip_auto_analyze' was True on the call to `train`. + * "analyzed" - if auto analysis is enabled and there was an analysis that occurred during training. + * @type {string} + * @memberof TrainResponse + */ + status?: string | null; +} + +/** + * Check if a given object implements the TrainResponse interface. + */ +export function instanceOfTrainResponse(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TrainResponseFromJSON(json: any): TrainResponse { + return TrainResponseFromJSONTyped(json, false); +} + +export function TrainResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): TrainResponse { + if (json === undefined || json === null) { + return json; + } + return { + ablated_indices: !exists(json, "ablated_indices") ? undefined : json["ablated_indices"], + num_trained: !exists(json, "num_trained") ? undefined : json["num_trained"], + status: !exists(json, "status") ? undefined : json["status"], + }; +} + +export function TrainResponseToJSON(value?: TrainResponse | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + ablated_indices: value.ablated_indices, + num_trained: value.num_trained, + status: value.status, + }; +} diff --git a/src/types/models/Trainee.ts b/src/types/models/Trainee.ts new file mode 100644 index 0000000..20fb71c --- /dev/null +++ b/src/types/models/Trainee.ts @@ -0,0 +1,99 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists, mapValues } from "../runtime"; +import type { FeatureAttributes } from "./FeatureAttributes"; +import { FeatureAttributesFromJSON, FeatureAttributesToJSON } from "./FeatureAttributes"; + +/** + * + * @export + * @interface Trainee + */ +export interface Trainee { + /** + * + * @type {string} + * @memberof Trainee + */ + name?: string | null; + /** + * + * @type {{ [key: string]: FeatureAttributes; }} + * @memberof Trainee + */ + features?: { [key: string]: FeatureAttributes }; + /** + * If allow, the trainee may be manually persisted and will be persisted automatically only when unloaded. If always, the trainee will be automatically persisted whenever it is updated. If never, the trainee will never be persisted and any requests to explicitly persist it will fail. + * @type {string} + * @memberof Trainee + */ + persistence?: TraineePersistenceEnum; + /** + * + * @type {string} + * @memberof Trainee + */ + project_id?: string; + /** + * + * @type {string} + * @memberof Trainee + */ + id: string; + /** + * Metadata for a trainee. User can specify any key-value pair to store custom metadata for a trainee. + * @type {{ [key: string]: any; }} + * @memberof Trainee + */ + metadata?: { [key: string]: any }; +} + +/** + * @export + * @enum {string} + */ +export type TraineePersistenceEnum = "allow" | "always" | "never"; + +/** + * Check if a given object implements the Trainee interface. + */ +export function instanceOfTrainee(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraineeFromJSON(json: any): Trainee { + return TraineeFromJSONTyped(json, false); +} + +export function TraineeFromJSONTyped(json: any, ignoreDiscriminator: boolean): Trainee { + if (json === undefined || json === null) { + return json; + } + return { + name: !exists(json, "name") ? undefined : json["name"], + features: !exists(json, "features") ? undefined : mapValues(json["features"], FeatureAttributesFromJSON), + persistence: !exists(json, "persistence") ? undefined : json["persistence"], + project_id: !exists(json, "project_id") ? undefined : json["project_id"], + id: !exists(json, "id") ? undefined : json["id"], + metadata: !exists(json, "metadata") ? undefined : json["metadata"], + }; +} + +export function TraineeToJSON(value?: Trainee | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + name: value.name, + features: value.features === undefined ? undefined : mapValues(value.features, FeatureAttributesToJSON), + persistence: value.persistence, + project_id: value.project_id, + id: value.id, + metadata: value.metadata, + }; +} diff --git a/src/types/models/TraineeAcquireResourcesRequest.ts b/src/types/models/TraineeAcquireResourcesRequest.ts new file mode 100644 index 0000000..5308489 --- /dev/null +++ b/src/types/models/TraineeAcquireResourcesRequest.ts @@ -0,0 +1,53 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface TraineeAcquireResourcesRequest + */ +export interface TraineeAcquireResourcesRequest { + /** + * The maximum seconds to wait to acquire resources. + * @type {number} + * @memberof TraineeAcquireResourcesRequest + */ + timeout?: number; +} + +/** + * Check if a given object implements the TraineeAcquireResourcesRequest interface. + */ +export function instanceOfTraineeAcquireResourcesRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraineeAcquireResourcesRequestFromJSON(json: any): TraineeAcquireResourcesRequest { + return TraineeAcquireResourcesRequestFromJSONTyped(json, false); +} + +export function TraineeAcquireResourcesRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TraineeAcquireResourcesRequest { + if (json === undefined || json === null) { + return json; + } + return { + timeout: !exists(json, "timeout") ? undefined : json["timeout"], + }; +} + +export function TraineeAcquireResourcesRequestToJSON(value?: TraineeAcquireResourcesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + timeout: value.timeout, + }; +} diff --git a/src/types/models/TraineeIdentity.ts b/src/types/models/TraineeIdentity.ts new file mode 100644 index 0000000..cb117cd --- /dev/null +++ b/src/types/models/TraineeIdentity.ts @@ -0,0 +1,69 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { AccountIdentity } from "./AccountIdentity"; +import { AccountIdentityFromJSON, AccountIdentityToJSON } from "./AccountIdentity"; + +/** + * + * @export + * @interface TraineeIdentity + */ +export interface TraineeIdentity { + /** + * The trainee UUID. + * @type {string} + * @memberof TraineeIdentity + */ + id?: string; + /** + * The trainee name. + * @type {string} + * @memberof TraineeIdentity + */ + name?: string; + /** + * + * @type {AccountIdentity} + * @memberof TraineeIdentity + */ + created_by?: AccountIdentity; +} + +/** + * Check if a given object implements the TraineeIdentity interface. + */ +export function instanceOfTraineeIdentity(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraineeIdentityFromJSON(json: any): TraineeIdentity { + return TraineeIdentityFromJSONTyped(json, false); +} + +export function TraineeIdentityFromJSONTyped(json: any, ignoreDiscriminator: boolean): TraineeIdentity { + if (json === undefined || json === null) { + return json; + } + return { + id: !exists(json, "id") ? undefined : json["id"], + name: !exists(json, "name") ? undefined : json["name"], + created_by: !exists(json, "created_by") ? undefined : AccountIdentityFromJSON(json["created_by"]), + }; +} + +export function TraineeIdentityToJSON(value?: TraineeIdentity | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + id: value.id, + name: value.name, + created_by: AccountIdentityToJSON(value.created_by), + }; +} diff --git a/src/types/models/TraineeInformation.ts b/src/types/models/TraineeInformation.ts new file mode 100644 index 0000000..bc2f391 --- /dev/null +++ b/src/types/models/TraineeInformation.ts @@ -0,0 +1,70 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +import type { TraineeVersion } from "./TraineeVersion"; +import { TraineeVersionFromJSON, TraineeVersionToJSON } from "./TraineeVersion"; + +/** + * Information about the trainee configuration. + * @export + * @interface TraineeInformation + */ +export interface TraineeInformation { + /** + * The library type of the trainee. + * "st": trainee uses the single-threaded amalgam library. + * "mt": trainee uses the multi-threaded amalgam library. + * "openmp": trainee uses the open multiprocessing amalgam library. + * @type {string} + * @memberof TraineeInformation + */ + library_type?: TraineeInformationLibraryTypeEnum; + /** + * + * @type {TraineeVersion} + * @memberof TraineeInformation + */ + version?: TraineeVersion; +} + +/** + * @export + * @enum {string} + */ +export type TraineeInformationLibraryTypeEnum = "st" | "mt" | "openmp"; + +/** + * Check if a given object implements the TraineeInformation interface. + */ +export function instanceOfTraineeInformation(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraineeInformationFromJSON(json: any): TraineeInformation { + return TraineeInformationFromJSONTyped(json, false); +} + +export function TraineeInformationFromJSONTyped(json: any, ignoreDiscriminator: boolean): TraineeInformation { + if (json === undefined || json === null) { + return json; + } + return { + library_type: !exists(json, "library_type") ? undefined : json["library_type"], + version: !exists(json, "version") ? undefined : TraineeVersionFromJSON(json["version"]), + }; +} + +export function TraineeInformationToJSON(value?: TraineeInformation | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + library_type: value.library_type, + version: TraineeVersionToJSON(value.version), + }; +} diff --git a/src/types/models/TraineeRequest.ts b/src/types/models/TraineeRequest.ts new file mode 100644 index 0000000..9a8b7ea --- /dev/null +++ b/src/types/models/TraineeRequest.ts @@ -0,0 +1,100 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists, mapValues } from "../runtime"; +import type { FeatureAttributes } from "./FeatureAttributes"; +import { FeatureAttributesFromJSON, FeatureAttributesToJSON } from "./FeatureAttributes"; + +/** + * + * @export + * @interface TraineeRequest + */ +export interface TraineeRequest { + /** + * + * @type {string} + * @memberof TraineeRequest + */ + name?: string | null; + /** + * + * @type {{ [key: string]: FeatureAttributes; }} + * @memberof TraineeRequest + */ + features: { [key: string]: FeatureAttributes }; + /** + * If allow, the trainee may be manually persisted and will be persisted automatically only when unloaded. If always, the trainee will be automatically persisted whenever it is updated. If never, the trainee will never be persisted and any requests to explicitly persist it will fail. + * @type {string} + * @memberof TraineeRequest + */ + persistence?: TraineeRequestPersistenceEnum; + /** + * + * @type {string} + * @memberof TraineeRequest + */ + project_id?: string; + /** + * + * @type {string} + * @memberof TraineeRequest + */ + id?: string; + /** + * Metadata for a trainee. User can specify any key-value pair to store custom metadata for a trainee. + * @type {{ [key: string]: any; }} + * @memberof TraineeRequest + */ + metadata?: { [key: string]: any }; +} + +/** + * @export + * @enum {string} + */ +export type TraineeRequestPersistenceEnum = "allow" | "always" | "never"; + +/** + * Check if a given object implements the TraineeRequest interface. + */ +export function instanceOfTraineeRequest(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "features" in value; + + return isInstance; +} + +export function TraineeRequestFromJSON(json: any): TraineeRequest { + return TraineeRequestFromJSONTyped(json, false); +} + +export function TraineeRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): TraineeRequest { + if (json === undefined || json === null) { + return json; + } + return { + name: !exists(json, "name") ? undefined : json["name"], + features: mapValues(json["features"], FeatureAttributesFromJSON), + persistence: !exists(json, "persistence") ? undefined : json["persistence"], + project_id: !exists(json, "project_id") ? undefined : json["project_id"], + id: !exists(json, "id") ? undefined : json["id"], + metadata: !exists(json, "metadata") ? undefined : json["metadata"], + }; +} + +export function TraineeRequestToJSON(value?: TraineeRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + name: value.name, + features: mapValues(value.features, FeatureAttributesToJSON), + persistence: value.persistence, + project_id: value.project_id, + id: value.id, + metadata: value.metadata, + }; +} diff --git a/src/types/models/TraineeVersion.ts b/src/types/models/TraineeVersion.ts new file mode 100644 index 0000000..9bc22c3 --- /dev/null +++ b/src/types/models/TraineeVersion.ts @@ -0,0 +1,66 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Trainee version information. + * @export + * @interface TraineeVersion + */ +export interface TraineeVersion { + /** + * The trainee's platform container version. + * @type {string} + * @memberof TraineeVersion + */ + container?: string; + /** + * The version of the Trainee. + * @type {string} + * @memberof TraineeVersion + */ + trainee?: string; + /** + * The version of the loaded Amalgam library. + * @type {string} + * @memberof TraineeVersion + */ + amalgam?: string; +} + +/** + * Check if a given object implements the TraineeVersion interface. + */ +export function instanceOfTraineeVersion(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraineeVersionFromJSON(json: any): TraineeVersion { + return TraineeVersionFromJSONTyped(json, false); +} + +export function TraineeVersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): TraineeVersion { + if (json === undefined || json === null) { + return json; + } + return { + container: !exists(json, "container") ? undefined : json["container"], + trainee: !exists(json, "trainee") ? undefined : json["trainee"], + amalgam: !exists(json, "amalgam") ? undefined : json["amalgam"], + }; +} + +export function TraineeVersionToJSON(value?: TraineeVersion | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + container: value.container, + trainee: value.trainee, + amalgam: value.amalgam, + }; +} diff --git a/src/types/models/TraineeWorkflowAttributes.ts b/src/types/models/TraineeWorkflowAttributes.ts new file mode 100644 index 0000000..648bc21 --- /dev/null +++ b/src/types/models/TraineeWorkflowAttributes.ts @@ -0,0 +1,95 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface TraineeWorkflowAttributes + */ +export interface TraineeWorkflowAttributes { + /** + * + * @type {{ [key: string]: any; }} + * @memberof TraineeWorkflowAttributes + */ + default_hyperparameter_map?: { [key: string]: any }; + /** + * + * @type {{ [key: string]: any; }} + * @memberof TraineeWorkflowAttributes + */ + hyperparameter_map?: { [key: string]: any }; + /** + * When True, the train operation returns when it's time for the model to be analyzed again. + * @type {boolean} + * @memberof TraineeWorkflowAttributes + */ + auto_analyze_enabled?: boolean; + /** + * The size of of the model at which to stop doing auto-analysis. Value of 0 means no limit. + * @type {number} + * @memberof TraineeWorkflowAttributes + */ + auto_analyze_limit_size?: number; + /** + * The factor by which to increase the analyze threshold every time the model grows to the current threshold size. + * @type {number} + * @memberof TraineeWorkflowAttributes + */ + analyze_growth_factor?: number; + /** + * The threshold for the number of cases at which the model should be re-analyzed. + * @type {number} + * @memberof TraineeWorkflowAttributes + */ + analyze_threshold?: number; +} + +/** + * Check if a given object implements the TraineeWorkflowAttributes interface. + */ +export function instanceOfTraineeWorkflowAttributes(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraineeWorkflowAttributesFromJSON(json: any): TraineeWorkflowAttributes { + return TraineeWorkflowAttributesFromJSONTyped(json, false); +} + +export function TraineeWorkflowAttributesFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TraineeWorkflowAttributes { + if (json === undefined || json === null) { + return json; + } + return { + default_hyperparameter_map: !exists(json, "default_hyperparameter_map") + ? undefined + : json["default_hyperparameter_map"], + hyperparameter_map: !exists(json, "hyperparameter_map") ? undefined : json["hyperparameter_map"], + auto_analyze_enabled: !exists(json, "auto_analyze_enabled") ? undefined : json["auto_analyze_enabled"], + auto_analyze_limit_size: !exists(json, "auto_analyze_limit_size") ? undefined : json["auto_analyze_limit_size"], + analyze_growth_factor: !exists(json, "analyze_growth_factor") ? undefined : json["analyze_growth_factor"], + analyze_threshold: !exists(json, "analyze_threshold") ? undefined : json["analyze_threshold"], + }; +} + +export function TraineeWorkflowAttributesToJSON(value?: TraineeWorkflowAttributes | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + default_hyperparameter_map: value.default_hyperparameter_map, + hyperparameter_map: value.hyperparameter_map, + auto_analyze_enabled: value.auto_analyze_enabled, + auto_analyze_limit_size: value.auto_analyze_limit_size, + analyze_growth_factor: value.analyze_growth_factor, + analyze_threshold: value.analyze_threshold, + }; +} diff --git a/src/types/models/TraineeWorkflowAttributesRequest.ts b/src/types/models/TraineeWorkflowAttributesRequest.ts new file mode 100644 index 0000000..71a5088 --- /dev/null +++ b/src/types/models/TraineeWorkflowAttributesRequest.ts @@ -0,0 +1,83 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * Parameters that get passed to get_internal_parameters. + * @export + * @interface TraineeWorkflowAttributesRequest + */ +export interface TraineeWorkflowAttributesRequest { + /** + * The action feature used to determine the desired hyperparameters. + * @type {string} + * @memberof TraineeWorkflowAttributesRequest + */ + action_feature?: string; + /** + * The context features used to determine the desired hyperparameters. + * @type {Array} + * @memberof TraineeWorkflowAttributesRequest + */ + context_features?: Array; + /** + * The mode of calculation (robust or full) used to determine the desired hyperparameters. + * @type {string} + * @memberof TraineeWorkflowAttributesRequest + */ + mode?: TraineeWorkflowAttributesRequestModeEnum; + /** + * The weight feature used to determine the desired hyperparameters. + * @type {string} + * @memberof TraineeWorkflowAttributesRequest + */ + weight_feature?: string; +} + +/** + * @export + * @enum {string} + */ +export type TraineeWorkflowAttributesRequestModeEnum = "robust" | "full"; + +/** + * Check if a given object implements the TraineeWorkflowAttributesRequest interface. + */ +export function instanceOfTraineeWorkflowAttributesRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function TraineeWorkflowAttributesRequestFromJSON(json: any): TraineeWorkflowAttributesRequest { + return TraineeWorkflowAttributesRequestFromJSONTyped(json, false); +} + +export function TraineeWorkflowAttributesRequestFromJSONTyped( + json: any, + ignoreDiscriminator: boolean, +): TraineeWorkflowAttributesRequest { + if (json === undefined || json === null) { + return json; + } + return { + action_feature: !exists(json, "action_feature") ? undefined : json["action_feature"], + context_features: !exists(json, "context_features") ? undefined : json["context_features"], + mode: !exists(json, "mode") ? undefined : json["mode"], + weight_feature: !exists(json, "weight_feature") ? undefined : json["weight_feature"], + }; +} + +export function TraineeWorkflowAttributesRequestToJSON(value?: TraineeWorkflowAttributesRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + action_feature: value.action_feature, + context_features: value.context_features, + mode: value.mode, + weight_feature: value.weight_feature, + }; +} diff --git a/src/types/models/UpdateSessionRequest.ts b/src/types/models/UpdateSessionRequest.ts new file mode 100644 index 0000000..86a9ccf --- /dev/null +++ b/src/types/models/UpdateSessionRequest.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface UpdateSessionRequest + */ +export interface UpdateSessionRequest { + /** + * Any key-value pair to store custom metadata for the session. + * @type {{ [key: string]: any; }} + * @memberof UpdateSessionRequest + */ + metadata?: { [key: string]: any }; +} + +/** + * Check if a given object implements the UpdateSessionRequest interface. + */ +export function instanceOfUpdateSessionRequest(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function UpdateSessionRequestFromJSON(json: any): UpdateSessionRequest { + return UpdateSessionRequestFromJSONTyped(json, false); +} + +export function UpdateSessionRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateSessionRequest { + if (json === undefined || json === null) { + return json; + } + return { + metadata: !exists(json, "metadata") ? undefined : json["metadata"], + }; +} + +export function UpdateSessionRequestToJSON(value?: UpdateSessionRequest | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + metadata: value.metadata, + }; +} diff --git a/src/types/models/Warning.ts b/src/types/models/Warning.ts new file mode 100644 index 0000000..1a5f5ff --- /dev/null +++ b/src/types/models/Warning.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { exists } from "../runtime"; +/** + * + * @export + * @interface Warning + */ +export interface Warning { + /** + * + * @type {string} + * @memberof Warning + */ + detail?: string; +} + +/** + * Check if a given object implements the Warning interface. + */ +export function instanceOfWarning(value: object): boolean { + const isInstance = true; + + return isInstance; +} + +export function WarningFromJSON(json: any): Warning { + return WarningFromJSONTyped(json, false); +} + +export function WarningFromJSONTyped(json: any, ignoreDiscriminator: boolean): Warning { + if (json === undefined || json === null) { + return json; + } + return { + detail: !exists(json, "detail") ? undefined : json["detail"], + }; +} + +export function WarningToJSON(value?: Warning | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + detail: value.detail, + }; +} diff --git a/src/types/models/index.ts b/src/types/models/index.ts new file mode 100644 index 0000000..0bee740 --- /dev/null +++ b/src/types/models/index.ts @@ -0,0 +1,94 @@ +export * from "./AccountIdentity"; +export * from "./AnalyzeRequest"; +export * from "./ApiVersion"; +export * from "./AppendToSeriesStoreRequest"; +export * from "./AutoAblationParams"; +export * from "./BaseReactRequest"; +export * from "./BeginSessionRequest"; +export * from "./BooleanType"; +export * from "./CaseCountResponse"; +export * from "./CaseEditRequest"; +export * from "./CaseRemoveRequest"; +export * from "./Cases"; +export * from "./CasesRequest"; +export * from "./DatetimeType"; +export * from "./DateType"; +export * from "./DerivationParameters"; +export * from "./DestructTraineeResponse"; +export * from "./DetailsResponse"; +export * from "./DetailsResponseDistanceRatioPartsInner"; +export * from "./DetailsResponseOutlyingFeatureValuesInnerValue"; +export * from "./DistancesRequest"; +export * from "./DistancesResponse"; +export * from "./EvaluateActionOutput"; +export * from "./EvaluateRequest"; +export * from "./EvaluateResponse"; +export * from "./ExtremeCasesRequest"; +export * from "./FeatureAddRequest"; +export * from "./FeatureAttributes"; +export * from "./FeatureAutoDeriveOnTrain"; +export * from "./FeatureAutoDeriveOnTrainCustom"; +export * from "./FeatureAutoDeriveOnTrainProgress"; +export * from "./FeatureBounds"; +export * from "./FeatureConviction"; +export * from "./FeatureConvictionActionOutput"; +export * from "./FeatureConvictionRequest"; +export * from "./FeatureMarginalStats"; +export * from "./FeatureMarginalStatsRequest"; +export * from "./FeatureOriginalType"; +export * from "./FeatureRemoveRequest"; +export * from "./FeatureTimeSeries"; +export * from "./ImputeRequest"; +export * from "./IntegerType"; +export * from "./MarginalStats"; +export * from "./Metrics"; +export * from "./ModelError"; +export * from "./NumericType"; +export * from "./ObjectType"; +export * from "./PairwiseDistancesActionOutput"; +export * from "./PairwiseDistancesRequest"; +export * from "./RandomSeedRequest"; +export * from "./ReactActionOutput"; +export * from "./ReactAggregateActionOutput"; +export * from "./ReactAggregateDetails"; +export * from "./ReactAggregateRequest"; +export * from "./ReactAggregateResponse"; +export * from "./ReactAggregateResponseContent"; +export * from "./ReactAggregateResponseContentConfusionMatrix"; +export * from "./ReactDetails"; +export * from "./ReactGroupActionOutput"; +export * from "./ReactGroupRequest"; +export * from "./ReactGroupResponse"; +export * from "./ReactGroupResponseContent"; +export * from "./ReactIntoFeaturesActionOutput"; +export * from "./ReactIntoFeaturesRequest"; +export * from "./ReactIntoFeaturesResponse"; +export * from "./ReactRequest"; +export * from "./ReactResponse"; +export * from "./ReactResponseContent"; +export * from "./ReactSeriesActionOutput"; +export * from "./ReactSeriesRequest"; +export * from "./ReactSeriesResponse"; +export * from "./ReactSeriesResponseContent"; +export * from "./ReduceDataParams"; +export * from "./RemoveSeriesStoreRequest"; +export * from "./Session"; +export * from "./SessionIdentity"; +export * from "./SetAutoAnalyzeParamsRequest"; +export * from "./StringType"; +export * from "./TimedeltaType"; +export * from "./TimeType"; +export * from "./TraceResponse"; +export * from "./TrainActionOutput"; +export * from "./Trainee"; +export * from "./TraineeAcquireResourcesRequest"; +export * from "./TraineeIdentity"; +export * from "./TraineeInformation"; +export * from "./TraineeRequest"; +export * from "./TraineeVersion"; +export * from "./TraineeWorkflowAttributes"; +export * from "./TraineeWorkflowAttributesRequest"; +export * from "./TrainRequest"; +export * from "./TrainResponse"; +export * from "./UpdateSessionRequest"; +export * from "./Warning"; diff --git a/src/types/runtime.ts b/src/types/runtime.ts new file mode 100644 index 0000000..6ea3831 --- /dev/null +++ b/src/types/runtime.ts @@ -0,0 +1,18 @@ +export function exists(json: any, key: string) { + const value = json[key]; + return value !== null && value !== undefined; +} + +export class RequiredError extends Error { + override name = "RequiredError"; + constructor( + public field: string, + msg?: string, + ) { + super(msg); + } +} + +export function mapValues(data: any, fn: (item: any) => any) { + return Object.keys(data).reduce((acc, key) => ({ ...acc, [key]: fn(data[key]) }), {}); +} diff --git a/src/utilities.ts b/src/utilities.ts deleted file mode 100644 index 217064a..0000000 --- a/src/utilities.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./client/utilities/index.js"; -export * from "./features/utils.js"; diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..42dc279 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "allowJs": false, + "allowSyntheticDefaultImports": true, + "declaration": true, + "esModuleInterop": false, + "outDir": "./lib", + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ESNext", + "useDefineForClassFields": true + }, + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..c29b285 --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.base.json", + "include": ["src"], + "exclude": ["node_modules", "**/*.test.*"] +} diff --git a/tsconfig.json b/tsconfig.json index faffac3..8228dad 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,37 +1,4 @@ { - "compilerOptions": { - "target": "ES6", - "module": "ESNext", - "declaration": true, - "outDir": "lib", - "moduleResolution": "Bundler", - "esModuleInterop": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "strict": true, - "sourceMap": false, - "noUnusedLocals": true, - "noImplicitReturns": true, - "noUnusedParameters": true, - "noImplicitAny": true, - "noFallthroughCasesInSwitch": true, - "removeComments": false, - "forceConsistentCasingInFileNames": true, - "lib": [ - "DOM", - "ESNext", - ], - "pretty": true, - "typeRoots": [ - "node_modules/@types" - ], - }, - "include": [ - "src/**/*.ts", - ], - "exclude": [ - "node_modules" - ], - "compileOnSave": true, - "buildOnSave": false, -} \ No newline at end of file + "extends": "./tsconfig.base.json", + "include": ["src"] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..6e2266f --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite"; +import eslint from "vite-plugin-eslint"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [eslint()], +});