From 58c769c84b96b41514a6b958b81bd963b6e7cd45 Mon Sep 17 00:00:00 2001 From: Peramanathan Sathyamoorthy Date: Fri, 8 Nov 2024 12:10:11 +0100 Subject: [PATCH 1/4] Split utils from core --- .github/workflows/release.yml | 14 +- README.md | 149 +- package-lock.json | 6544 ------------------ package.json | 17 +- packages/core/package.json | 17 +- packages/core/src/__tests__/index.test.ts | 40 +- packages/utils/README.md | 80 + packages/utils/images/json-schema-to-zod.png | Bin 0 -> 263410 bytes packages/utils/package.json | 82 + packages/utils/src/index.ts | 10 + packages/utils/src/openapi.ts | 104 + packages/utils/vite.config.js | 18 + pnpm-lock.yaml | 3271 +++++++++ pnpm-workspace.yaml | 2 + tsconfig.jest.json | 8 +- tsconfig.json | 10 +- 16 files changed, 3684 insertions(+), 6682 deletions(-) delete mode 100644 package-lock.json create mode 100644 packages/utils/README.md create mode 100644 packages/utils/images/json-schema-to-zod.png create mode 100644 packages/utils/package.json create mode 100644 packages/utils/src/index.ts create mode 100644 packages/utils/src/openapi.ts create mode 100644 packages/utils/vite.config.js create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aaf8246..bcad0e7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,16 +41,18 @@ jobs: - name: Build project run: npx turbo run build + # pnpm will publish all packages in the monorepo + # --provenance for comprehensive metadata about their build process, enhancing their security and traceability - name: Publish adaptate to npm env: NODE_AUTH_TOKEN: ${{ secrets.NPM_USER_TOKEN }} - run: npm publish --access public + run: pnpm publish --provenance --access public - - name: Publish @adaptate/core to npm - working-directory: packages/core - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm publish --access public + # - name: Publish @adaptate/core to npm + # working-directory: packages/core + # env: + # NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + # run: npm publish --provenance --access public # - name: Publish @adaptate/core to GitHub Packages # working-directory: packages/core diff --git a/README.md b/README.md index 6bd8d62..18b2cbf 100644 --- a/README.md +++ b/README.md @@ -170,104 +170,21 @@ const updatedSchema = applyConditionalRequirements(schema, config, data); -
-Converting OpenAPI Schema to Zod Schema (most commonly needed) - -The utility is in the early stage and not one to one. For complete and advanced use cases check [json-schema-to-zod](https://snyk.io/advisor/npm-package/json-schema-to-zod) +#### Converting OpenAPI Schema to Zod Schema (most commonly needed) -```ts -import { openAPISchemaToZod } from 'adaptate'; - -const openAPISchema = { - type: 'object', - required: ['age'], - properties: { - name: { type: 'string' }, - age: { type: 'number' }, - }, -}; +Refer [@adaptate/utils README](/packages/utils/README.md#converting-openapi-schema-to-zod-schema-most-commonly-needed) -const zodSchema = openAPISchemaToZod(openAPISchema); -``` +#### Converting Zod Schema to OpenAPI Schema -
+Refer [@adaptate/utils README](/packages/utils/README.md#converting-zod-schema-to-openapi-schema) -
- Converting Zod Schema to OpenAPI Schema +#### Generate zod schemas(modules) from existing OpenAPI yml spec -The utility is in the early stage and not one to one. For complete and advanced use cases check [zod-to-json-schema](https://snyk.io/advisor/npm-package/zod-to-json-schema) - -```ts -import { z } from 'zod'; -import { zodToOpenAPISchema } from 'adaptate'; - -const zodSchema = z.object({ - name: z.string(), - age: z.number(), -}); - -const openAPISchema = zodToOpenAPISchema(zodSchema); -``` - -
- -
- - Loading schema directly from OpenAPI yml spec file (imaginary one) - - -It is not exported something similar for your use case, you could build your own yml loader, spec parser that takes care of the usage of `$ref`. - -```ts -// loadAndResolveYAML.ts -import fs from 'node:fs'; -import path, { dirname } from 'node:path'; -import { fileURLToPath } from 'node:url'; - -import SwaggerParser from '@apidevtools/swagger-parser'; -import yaml from 'js-yaml'; - -export async function loadAndResolveYAML( - fileURL: string, - relativePath: string -) { - try { - let fileURLPath = fileURLToPath(fileURL); - let callerDirectoryName = dirname(fileURLPath); - let yamlFilePath = path.resolve(callerDirectoryName, relativePath); - const openapiDocument = yaml.load( - fs.readFileSync(yamlFilePath, 'utf8') - ) as string; - - const dereferenced = await SwaggerParser.dereference(openapiDocument); - - // For debugging uncomment this! - // console.log(JSON.stringify(dereferenced, null, 2)); - - return dereferenced; - } catch (error) { - console.error('Error:', error); - } -} -``` - -Example usage - -```ts -let dataLoadedFromYAML = await loadAndResolveYAML( - import.meta.url, - '../fixtures/base-schema.yml' // relative path to spec yml file from where it is called -); -let dataZodSchema = openAPISchemaToZod( - dataLoadedFromYAML['components']['schemas']['Category'] -); -``` - -
+Refer [@adaptate/utils README](/packages/utils/README.md#generate-zod-schemas-from-existing-openapi-spec) ## Credits -I have attempted to recreate what I have done at work with the help of ChatGPT Canvas model, the problem is simple and yet enough to test the muscle of code generators where the solution involved recursion and dealing with deep and nested data structures. It produced bugs and those are hard to figure out even for humans in the recursion context such as using correct APIs of the library (`required` instead of `unwrap`). I have tried to generate a minimal project with basic toolings. It did a decent job. +I have attempted to recreate what I have done at work with the help of **ChatGPT Canvas** model, the problem is simple and yet enough to test the muscle of code generators where the solution involved recursion and dealing with deep and nested data structures. It produced bugs and those are hard to figure out even for humans in the recursion context such as using correct APIs of the library (`required` instead of `unwrap`). I have tried to generate a minimal project with basic toolings. It did a decent job.
Suggestion vs Final edits @@ -370,6 +287,56 @@ I have attempted to recreate what I have done at work with the help of ChatGPT C } ``` +### Apply Conditional Requirements (needs improvement) + +You can apply conditional requirements to a Zod schema using the applyConditionalRequirements function. (Didn't work in improving it, generated by ChatGPT as is) + +```ts +import { z } from 'zod'; +import { applyConditionalRequirements } from 'adaptate'; + +const schema = z.object({ + firstName: z.string().optional(), + secondName: z.string().optional(), + age: z.number().optional(), + address: z + .object({ + street: z.string().optional(), + city: z.string().optional(), + }) + .optional(), + title: z.string().optional(), +}); + +const config = { + age: true, + // explicit + firstName: { + requiredIf: (data: any) => data.age > 18, + }, + // or implicit + secondName: (data) => !!data.firstName, +}; + +const data = { age: 20 }; + +const updatedSchema = applyConditionalRequirements(schema, config, data); +``` + +### Converting OpenAPI Schema to Zod Schema (most commonly needed) + +Refer [@adaptate/utils README](/packages/utils/README.md#converting-openapi-schema-to-zod-schema-most-commonly-needed) + +### Converting Zod Schema to OpenAPI Schema + +The utility is in the early stage and not one to one. For complete and advanced use cases check [zod-to-json-schema](https://snyk.io/advisor/npm-package/zod-to-json-schema) + +Refer [@adaptate/utils README](/packages/utils/README.md#converting-zod-schema-to-openapi-schema) + +### Generate zod schemas(modules) from existing OpenAPI yml spec + +Refer [@adaptate/utils README](/packages/utils/README.md#generate-zod-schemas-from-existing-openapi-spec) +
[Full conversation with ChatGPT Canvas](https://chatgpt.com/share/6728eb4e-07f8-8005-b586-c4b8ee0e798c) @@ -379,6 +346,6 @@ I have attempted to recreate what I have done at work with the help of ChatGPT C
The Background -At [Oneflow AB](https://oneflow.com), we faced a situation where a component was used on two different pages, each receiving data from different endpoints. This led to discrepancies in the properties of the same model for valid reasons. To avoid breaking the app, I have built a run-time validation library that abstracted business data extensively. Although it wasn't completely dynamic, it supported specifying business entities, types such as `collection` or `entity`, and reusable specifications like `relations`. It also included React-specific hooks that worked seamlessly with error boundaries. This effort aims to create a more generic solution that can be extended to various use cases. +At [Oneflow AB](https://oneflow.com), we faced a situation where a component was used on two different pages, each receiving data from different endpoints. This led to discrepancies in the properties of the same model for valid reasons. To avoid breaking the app, I have built a run-time validation library that abstracted business data extensively. Although it wasn't completely this sophisticated, it supported specifying business entities, types such as `collection` or `entity`, and reusable specifications like `relations` to reduce the verbosity in config definitions. It also included React-specific hooks that worked seamlessly with error boundaries. This effort aims to create a more generic solution that can be extended to various use cases.
diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 8472d57..0000000 --- a/package-lock.json +++ /dev/null @@ -1,6544 +0,0 @@ -{ - "name": "adaptate", - "version": "0.0.7", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "adaptate", - "version": "0.0.7", - "license": "MIT", - "workspaces": [ - "packages/*" - ], - "devDependencies": { - "turbo": "^2.2.3" - } - }, - "node_modules/@actions/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", - "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/exec": "^1.1.1", - "@actions/http-client": "^2.0.1" - } - }, - "node_modules/@actions/exec": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", - "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/io": "^1.0.1" - } - }, - "node_modules/@actions/http-client": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^5.25.4" - } - }, - "node_modules/@actions/io": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", - "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@adaptate/core": { - "resolved": "packages/core", - "link": true - }, - "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, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz", - "integrity": "sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "call-me-maybe": "^1.0.1", - "js-yaml": "^3.13.1" - } - }, - "node_modules/@apidevtools/json-schema-ref-parser/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, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@apidevtools/json-schema-ref-parser/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, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@apidevtools/openapi-schemas": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", - "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@apidevtools/swagger-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@apidevtools/swagger-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz", - "integrity": "sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "9.0.6", - "@apidevtools/openapi-schemas": "^2.1.0", - "@apidevtools/swagger-methods": "^3.0.2", - "@jsdevtools/ono": "^7.1.3", - "ajv": "^8.6.3", - "ajv-draft-04": "^1.0.0", - "call-me-maybe": "^1.0.1" - }, - "peerDependencies": { - "openapi-types": ">=7" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@github/local-action": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@github/local-action/-/local-action-2.1.3.tgz", - "integrity": "sha512-+z4BVl08fb75ItJ6QdocTlqhLYVwl8lwzLnzoRZesRKVH1+Svgp9XmdhaatZ/0+tBqyzC6xJ8WUt4w3jMdwtRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/core": "^1.10.1", - "@octokit/core": "^6.1.2", - "chalk": "^5.3.0", - "commander": "^12.0.0", - "dotenv": "^16.4.5", - "figlet": "^1.7.0", - "js-yaml": "^4.1.0", - "quibble": "^0.9.2", - "tsconfig-paths": "^4.2.0", - "tsx": "^4.16.5", - "typescript": "^5.5.4", - "yaml": "^2.4.2" - }, - "bin": { - "local-action": "bin/local-action.js" - }, - "engines": { - "node": ">=20" - } - }, - "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, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/auth-token": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", - "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/core": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", - "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^5.0.0", - "@octokit/graphql": "^8.0.0", - "@octokit/request": "^9.0.0", - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.0.0", - "before-after-hook": "^3.0.2", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/endpoint": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", - "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/graphql": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", - "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^9.0.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/request": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz", - "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^10.0.0", - "@octokit/request-error": "^6.0.1", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request-error": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz", - "integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/types": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.1.tgz", - "integrity": "sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^22.2.0" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz", - "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz", - "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", - "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz", - "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz", - "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz", - "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz", - "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz", - "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz", - "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz", - "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz", - "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz", - "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz", - "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz", - "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz", - "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz", - "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz", - "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz", - "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "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, - "license": "MIT" - }, - "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, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "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, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/js-yaml": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.8" - } - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "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, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "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, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "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, - "license": "Python-2.0" - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "BSD-3-Clause", - "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, - "license": "BSD-3-Clause", - "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-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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT" - }, - "node_modules/before-after-hook": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", - "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", - "dev": true, - "license": "Apache-2.0" - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "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" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - }, - "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, - "license": "MIT", - "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, - "license": "Apache-2.0", - "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, - "license": "MIT" - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001677", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", - "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", - "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" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "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" - } - ], - "license": "MIT", - "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, - "license": "MIT" - }, - "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, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "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, - "license": "MIT" - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": 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, - "license": "MIT", - "engines": { - "node": ">=0.10.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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "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, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.52", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.52.tgz", - "integrity": "sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ==", - "dev": true, - "license": "ISC" - }, - "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, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "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, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/figlet": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.8.0.tgz", - "integrity": "sha512-chzvGjd+Sp7KUvPHZv6EXV5Ir3Q7kYNpCr4aHrRW79qFtTefmQZNny+W1pW9kf5zeE6dikku2W50W/wAH2xWgw==", - "dev": true, - "license": "MIT", - "bin": { - "figlet": "bin/index.js" - }, - "engines": { - "node": ">= 0.4.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, - "license": "Apache-2.0", - "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, - "license": "MIT", - "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, - "license": "ISC", - "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, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "ISC" - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "ISC", - "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "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, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "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, - "license": "ISC" - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT" - }, - "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, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "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, - "license": "ISC" - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "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, - "license": "ISC" - }, - "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, - "license": "BSD-3-Clause", - "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, - "license": "BSD-3-Clause", - "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-instrument/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "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, - "license": "BSD-3-Clause", - "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, - "license": "BSD-3-Clause", - "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, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "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, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "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, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.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, - "license": "MIT", - "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, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "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" - } - ], - "license": "MIT", - "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, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "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, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openapi-types": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "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, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "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/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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", - "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" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "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, - "license": "MIT", - "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/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, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "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" - } - ], - "license": "MIT" - }, - "node_modules/quibble": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/quibble/-/quibble-0.9.2.tgz", - "integrity": "sha512-BrL7hrZcbyyt5ZDfePkGFDc3m82uUtxCPOnpRUrkOdtBnmV9ldQKxXORkKL8eIzToRNaCpIPyKyfdfq/tBlFAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21", - "resolve": "^1.22.8" - }, - "engines": { - "node": ">= 0.14.0" - } - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/rollup": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", - "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.4", - "@rollup/rollup-android-arm64": "4.24.4", - "@rollup/rollup-darwin-arm64": "4.24.4", - "@rollup/rollup-darwin-x64": "4.24.4", - "@rollup/rollup-freebsd-arm64": "4.24.4", - "@rollup/rollup-freebsd-x64": "4.24.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", - "@rollup/rollup-linux-arm-musleabihf": "4.24.4", - "@rollup/rollup-linux-arm64-gnu": "4.24.4", - "@rollup/rollup-linux-arm64-musl": "4.24.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", - "@rollup/rollup-linux-riscv64-gnu": "4.24.4", - "@rollup/rollup-linux-s390x-gnu": "4.24.4", - "@rollup/rollup-linux-x64-gnu": "4.24.4", - "@rollup/rollup-linux-x64-musl": "4.24.4", - "@rollup/rollup-win32-arm64-msvc": "4.24.4", - "@rollup/rollup-win32-ia32-msvc": "4.24.4", - "@rollup/rollup-win32-x64-msvc": "4.24.4", - "fsevents": "~2.3.2" - } - }, - "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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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, - "license": "ISC" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "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, - "license": "BSD-3-Clause", - "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, - "license": "BSD-3-Clause", - "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, - "license": "MIT", - "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, - "license": "BSD-3-Clause" - }, - "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, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "BSD-3-Clause" - }, - "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, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.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, - "license": "MIT", - "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-jest/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tsx": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", - "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/turbo": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.2.3.tgz", - "integrity": "sha512-5lDvSqIxCYJ/BAd6rQGK/AzFRhBkbu4JHVMLmGh/hCb7U3CqSnr5Tjwfy9vc+/5wG2DJ6wttgAaA7MoCgvBKZQ==", - "dev": true, - "license": "MIT", - "bin": { - "turbo": "bin/turbo" - }, - "optionalDependencies": { - "turbo-darwin-64": "2.2.3", - "turbo-darwin-arm64": "2.2.3", - "turbo-linux-64": "2.2.3", - "turbo-linux-arm64": "2.2.3", - "turbo-windows-64": "2.2.3", - "turbo-windows-arm64": "2.2.3" - } - }, - "node_modules/turbo-darwin-64": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.2.3.tgz", - "integrity": "sha512-Rcm10CuMKQGcdIBS3R/9PMeuYnv6beYIHqfZFeKWVYEWH69sauj4INs83zKMTUiZJ3/hWGZ4jet9AOwhsssLyg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/turbo-darwin-arm64": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.2.3.tgz", - "integrity": "sha512-+EIMHkuLFqUdJYsA3roj66t9+9IciCajgj+DVek+QezEdOJKcRxlvDOS2BUaeN8kEzVSsNiAGnoysFWYw4K0HA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/turbo-linux-64": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.2.3.tgz", - "integrity": "sha512-UBhJCYnqtaeOBQLmLo8BAisWbc9v9daL9G8upLR+XGj6vuN/Nz6qUAhverN4Pyej1g4Nt1BhROnj6GLOPYyqxQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-linux-arm64": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.2.3.tgz", - "integrity": "sha512-hJYT9dN06XCQ3jBka/EWvvAETnHRs3xuO/rb5bESmDfG+d9yQjeTMlhRXKrr4eyIMt6cLDt1LBfyi+6CQ+VAwQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-windows-64": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.2.3.tgz", - "integrity": "sha512-NPrjacrZypMBF31b4HE4ROg4P3nhMBPHKS5WTpMwf7wydZ8uvdEHpESVNMOtqhlp857zbnKYgP+yJF30H3N2dQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/turbo-windows-arm64": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.2.3.tgz", - "integrity": "sha512-fnNrYBCqn6zgKPKLHu4sOkihBI/+0oYFr075duRxqUZ+1aLWTAGfHZLgjVeLh3zR37CVzuerGIPWAEkNhkWEIw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/universal-user-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", - "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "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" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "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, - "license": "ISC", - "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.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", - "dev": true, - "license": "MIT", - "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/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, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/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, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "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/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "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, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?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, - "license": "ISC" - }, - "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, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", - "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "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, - "license": "MIT", - "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, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "packages/core": { - "name": "@adaptate/core", - "version": "0.0.7", - "license": "MIT", - "dependencies": { - "zod": "^3.23.8" - }, - "devDependencies": { - "@apidevtools/swagger-parser": "^10.1.0", - "@github/local-action": "^2.1.3", - "@types/jest": "^29.5.14", - "@types/js-yaml": "^4.0.9", - "jest": "^29.7.0", - "js-yaml": "^4.1.0", - "ts-jest": "^29.2.5", - "vite": "^5.4.10" - }, - "peerDependencies": { - "zod": "^3.23.8" - } - } - } -} diff --git a/package.json b/package.json index f276fc2..9d0d729 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,5 @@ { "name": "adaptate", - "workspaces": [ - "packages/*" - ], "version": "0.0.9-rc", "author": { "name": "Peramanathan Sathyamoorthy", @@ -10,7 +7,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/p10ns11y/adaptate.git" + "url": "https://github.com/p10ns11y/adaptate" }, "bugs": { "url": "https://github.com/p10ns11y/adaptate/issues" @@ -27,12 +24,16 @@ "README.md" ], "scripts": { + "test": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js --coverage", "build": "turbo run build" }, "devDependencies": { + "@types/jest": "^29.5.14", + "@types/node": "^22.9.0", + "jest": "^29.7.0", + "ts-jest": "^29.2.5", "turbo": "^2.2.3" }, - "packageManager": "npm@10.8.3", "description": "Dynamic and Adaptable Model Validator Using Zod, Interoperable with OpenAPI", "keywords": [ "Zod", @@ -50,5 +51,9 @@ "Runtime Validation", "Component Props Validation", "Business Data Abstraction" - ] + ], + "engines": { + "node": ">=20.0.0" + }, + "packageManager": "pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee" } diff --git a/packages/core/package.json b/packages/core/package.json index 72a30cd..9c5a1bb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -7,7 +7,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/p10ns11y/adaptate.git" + "url": "https://github.com/p10ns11y/adaptate" }, "bugs": { "url": "https://github.com/p10ns11y/adaptate/issues" @@ -19,7 +19,6 @@ "main": "./build/index.es.js", "types": "./build/index.d.ts", "scripts": { - "test": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js --coverage", "build": "vite build", "check-types": "tsc --noEmit" }, @@ -27,19 +26,12 @@ "zod": "^3.23.8" }, "devDependencies": { - "@apidevtools/swagger-parser": "^10.1.0", - "@github/local-action": "^2.1.3", - "@types/jest": "^29.5.14", - "@types/js-yaml": "^4.0.9", - "jest": "^29.7.0", - "js-yaml": "^4.1.0", - "ts-jest": "^29.2.5", + "@adaptate/utils": "workspace:*", "vite": "^5.4.10" }, "peerDependencies": { "zod": "^3.23.8" }, - "packageManager": "npm@10.8.3", "files": [ "build", "package.json", @@ -68,5 +60,8 @@ "Runtime Validation", "Component Props Validation", "Business Data Abstraction" - ] + ], + "engines": { + "node": ">=20.0.0" + } } diff --git a/packages/core/src/__tests__/index.test.ts b/packages/core/src/__tests__/index.test.ts index fc04244..3a0f90f 100644 --- a/packages/core/src/__tests__/index.test.ts +++ b/packages/core/src/__tests__/index.test.ts @@ -1,11 +1,11 @@ import { z } from 'zod'; +import { getDereferencedOpenAPIDocument } from '@adaptate/utils/openapi'; import { makeSchemaRequired, openAPISchemaToZod, applyConditionalRequirements, zodToOpenAPISchema, } from '../'; -import { loadAndResolveYAML } from '../openapi-spec-parser'; describe('makeSchemaRequired', () => { it('should make properties required based on the config', async () => { @@ -187,28 +187,28 @@ describe('makeSchemaRequired', () => { expect(() => anotherTransformedSchema.parse(anotherInValidData)).toThrow(); - let dataLoadedFromYAML = await loadAndResolveYAML( - import.meta.url, - '../fixtures/base-schema.yml' - ); - let dataZodSchema = openAPISchemaToZod( - // @ts-ignore - dataLoadedFromYAML['components']['schemas']['Category'] - ); + // let dataLoadedFromYAML = await getDereferencedOpenAPIDocument( + // import.meta.url, + // '../fixtures/base-schema.yml' + // ); + // let dataZodSchema = openAPISchemaToZod( + // // @ts-ignore + // dataLoadedFromYAML['components']['schemas']['Category'] + // ); - let yetAnotherTransformedSchema = makeSchemaRequired(dataZodSchema, config); + // let yetAnotherTransformedSchema = makeSchemaRequired(dataZodSchema, config); - expect(() => - yetAnotherTransformedSchema.parse(validData['category']) - ).not.toThrow(); + // expect(() => + // yetAnotherTransformedSchema.parse(validData['category']) + // ).not.toThrow(); - expect(() => - yetAnotherTransformedSchema.parse(invalidDataMissingName['category']) - ).toThrow(); + // expect(() => + // yetAnotherTransformedSchema.parse(invalidDataMissingName['category']) + // ).toThrow(); - expect(() => - yetAnotherTransformedSchema.parse(invalidDataItems['category']) - ).toThrow(); + // expect(() => + // yetAnotherTransformedSchema.parse(invalidDataItems['category']) + // ).toThrow(); }); it('should handle array of objects at top level', () => { @@ -427,7 +427,7 @@ describe('openAPISchemaToZod', () => { }); it('should convert OpenAPI schema with $ref to another component using openapi-spec-parser', async () => { - let dataLoadedFromYAML = await loadAndResolveYAML( + let dataLoadedFromYAML = await getDereferencedOpenAPIDocument( import.meta.url, '../fixtures/base-schema.yml' ); diff --git a/packages/utils/README.md b/packages/utils/README.md new file mode 100644 index 0000000..3e5df61 --- /dev/null +++ b/packages/utils/README.md @@ -0,0 +1,80 @@ +## Installation + +To install the library, use npm or yarn: + +```sh +npm install @adaptate/utils +# or +yarn add @adaptate/utils +``` + +### Generate zod schemas from existing OpenAPI spec + +Spec parser that takes care of the usage of `$ref`. + +```ts +import { getDereferencedOpenAPIDocument } from '@adaptate/utils'; + +let dereferencedOpenAPIDocument = await getDereferencedOpenAPIDocument( + import.meta.url, + '../fixtures/base-schema.yml' +); + +for (let [name, schema] of Object.entries( + dereferencedOpenAPIDocument.components.schemas +)) { + // Generate zod schema + let zodSchema = openAPISchemaToZod(schema); + // write zodSchema to .ts or .d.ts modules +} +``` + +use [json-schema-to-zod](https://github.com/StefanTerdell/json-schema-to-zod) and `$ref` is already expanded by `getDereferencedOpenAPIDocument` and you can skip [this part](https://github.com/StefanTerdell/json-schema-to-zod?tab=readme-ov-file#example-with-refs-resolved-and-output-formatted-1) + +```ts +for (let [name, schema] of Object.entries( + dereferencedOpenAPIDocument.components.schemas +)) { + // Generate zod schema module for each schema + jsonSchemaToZod(schema, { + name, + module: 'esm', + type: true, + }); +} +``` + +### Converting OpenAPI Schema to Zod Schema (most commonly needed) + +The utility is in the early stage and not one to one. For complete and advanced use cases check [json-schema-to-zod](https://snyk.io/advisor/npm-package/json-schema-to-zod) + +```ts +import { incomplete_openAPISchemaToZod } from '@adaptate/utils'; + +const openAPISchema = { + type: 'object', + required: ['age'], + properties: { + name: { type: 'string' }, + age: { type: 'number' }, + }, +}; + +const zodSchema = incomplete_openAPISchemaToZod(openAPISchema); +``` + +### Converting Zod Schema to OpenAPI Schema + +The utility is in the early stage and not one to one. For complete and advanced use cases check [zod-to-json-schema](https://snyk.io/advisor/npm-package/zod-to-json-schema) + +```ts +import { z } from 'zod'; +import { incomplete_zodToOpenAPISchema } from '@adaptate/utils'; + +const zodSchema = z.object({ + name: z.string(), + age: z.number(), +}); + +const openAPISchema = incomplete_zodToOpenAPISchema(zodSchema); +``` diff --git a/packages/utils/images/json-schema-to-zod.png b/packages/utils/images/json-schema-to-zod.png new file mode 100644 index 0000000000000000000000000000000000000000..613be32c9df2ca0e9105ee5c8c5638dec4790f03 GIT binary patch literal 263410 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∨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 XOd=T=20.0.0" + } +} diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts new file mode 100644 index 0000000..a66d6ea --- /dev/null +++ b/packages/utils/src/index.ts @@ -0,0 +1,10 @@ +export { + getDereferencedOpenAPIDocument, + // Features such as max, min, minLength, maxLength, pattern are missing + openAPISchemaToZod as simple_OpenAPISchemaToZod, + zodToOpenAPISchema as simple_ZodToOpenAPISchema, + openAPISchemaToZod as partial_OpenAPISchemaToZod, + zodToOpenAPISchema as partial_ZodToOpenAPISchema, + openAPISchemaToZod as incomplete_OpenAPISchemaToZod, + zodToOpenAPISchema as incomplete_ZodToOpenAPISchema, +} from './openapi'; diff --git a/packages/utils/src/openapi.ts b/packages/utils/src/openapi.ts new file mode 100644 index 0000000..42e4de9 --- /dev/null +++ b/packages/utils/src/openapi.ts @@ -0,0 +1,104 @@ +import SwaggerParser from '@apidevtools/swagger-parser'; +import yaml from 'js-yaml'; + +import { z, ZodTypeAny, ZodArray, ZodObject } from 'zod'; + +export function openAPISchemaToZod( + schema: any, + propertyKey: string = '', + required: string[] = [] +): ZodTypeAny { + // Handle string type, including specific formats like email + if (schema.type === 'string') { + let zodSchema = z.string(); + if (schema.format === 'email') { + zodSchema = zodSchema.email(); + } + + return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); + // Handle number type + } else if (schema.type === 'number') { + let zodSchema = z.number(); + return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); + // Handle integer type + } else if (schema.type === 'integer') { + let zodSchema = z.number().int(); + return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); + // Handle boolean type + } else if (schema.type === 'boolean') { + let zodSchema = z.boolean(); + return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); + // Handle array type + } else if (schema.type === 'array') { + const itemsSchema = schema.items + ? openAPISchemaToZod(schema.items, propertyKey, required) + : z.any(); + + return required.includes(propertyKey) + ? z.array(itemsSchema) + : z.array(itemsSchema.optional()); + // Handle object type by converting properties recursively + } else if (schema.type === 'object') { + const properties = schema.properties || {}; + const requiredProperties = schema.required || []; + const shape = Object.fromEntries( + Object.entries(properties).map((entry) => { + let [key, value] = entry; + let zodSchema = openAPISchemaToZod(value, key, requiredProperties); + // If the property is not in the required list, make it optional + if (!requiredProperties.includes(key)) { + zodSchema = zodSchema.optional(); + } + return [key, zodSchema]; + }) + ); + return z.object(shape); + } + // Default case for unsupported types + return z.any(); +} + +export function zodToOpenAPISchema(schema: ZodTypeAny): any { + if (schema instanceof z.ZodString) { + return { type: 'string' }; + } else if (schema instanceof z.ZodNumber) { + return { type: 'number' }; + } else if (schema instanceof z.ZodBoolean) { + return { type: 'boolean' }; + } else if (schema instanceof ZodArray) { + return { type: 'array', items: zodToOpenAPISchema(schema.element) }; + } else if (schema instanceof ZodObject) { + const properties = Object.fromEntries( + Object.entries(schema.shape).map(([key, value]) => { + // @ts-ignore + return [key, zodToOpenAPISchema(value)]; + }) + ); + return { type: 'object', properties }; + } + return {}; +} + +export async function getDereferencedOpenAPIDocument( + fileURL: string, + relativePath: string +) { + try { + let fs = await import('node:fs'); + let path = await import('node:path'); + let { fileURLToPath } = await import('node:url'); + let { dirname } = path; + let fileURLPath = fileURLToPath(fileURL); + let callerDirectoryName = dirname(fileURLPath); + let yamlFilePath = path.resolve(callerDirectoryName, relativePath); + const openapiDocument = yaml.load( + fs.readFileSync(yamlFilePath, 'utf8') + ) as string; + + const dereferenced = await SwaggerParser.dereference(openapiDocument); + + return dereferenced; + } catch (error) { + console.error('Error:', error); + } +} diff --git a/packages/utils/vite.config.js b/packages/utils/vite.config.js new file mode 100644 index 0000000..c598b9b --- /dev/null +++ b/packages/utils/vite.config.js @@ -0,0 +1,18 @@ +// vite.config.js +import { defineConfig } from 'vite'; + +export default defineConfig({ + build: { + target: 'esnext', + outDir: 'build', + lib: { + entry: ['src/index.ts', 'src/openapi.ts'], + formats: ['es'], + fileName: (format, entryName) => `${entryName}.${format}.js`, + types: 'src/index.d.ts', + }, + rollupOptions: { + external: ['zod'], + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..525bc8f --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3271 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/node': + specifier: ^22.9.0 + version: 22.9.0 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.9.0) + ts-jest: + specifier: ^29.2.5 + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.9.0))(typescript@5.6.3) + turbo: + specifier: ^2.2.3 + version: 2.2.3 + + packages/core: + dependencies: + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@adaptate/utils': + specifier: workspace:* + version: link:../utils + vite: + specifier: ^5.4.10 + version: 5.4.10(@types/node@22.9.0) + + packages/utils: + dependencies: + zod: + specifier: ^3.23.8 + version: 3.23.8 + devDependencies: + '@apidevtools/swagger-parser': + specifier: ^10.1.0 + version: 10.1.0(openapi-types@12.1.3) + '@types/js-yaml': + specifier: ^4.0.9 + version: 4.0.9 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 + vite: + specifier: ^5.4.10 + version: 5.4.10(@types/node@22.9.0) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@apidevtools/json-schema-ref-parser@9.0.6': + resolution: {integrity: sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==} + + '@apidevtools/openapi-schemas@2.1.0': + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} + + '@apidevtools/swagger-methods@3.0.2': + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + + '@apidevtools/swagger-parser@10.1.0': + resolution: {integrity: sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==} + peerDependencies: + openapi-types: '>=7' + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + 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 + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + 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 + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@rollup/rollup-android-arm-eabi@4.24.4': + resolution: {integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.4': + resolution: {integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.4': + resolution: {integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.4': + resolution: {integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.24.4': + resolution: {integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.24.4': + resolution: {integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.4': + resolution: {integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.4': + resolution: {integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.4': + resolution: {integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.4': + resolution: {integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': + resolution: {integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.4': + resolution: {integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.4': + resolution: {integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.4': + resolution: {integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.4': + resolution: {integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.4': + resolution: {integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.4': + resolution: {integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.4': + resolution: {integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==} + cpu: [x64] + os: [win32] + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/node@22.9.0': + resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001679: + resolution: {integrity: sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} + engines: {node: '>= 8'} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.55: + resolution: {integrity: sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + 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 + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + rollup@4.24.4: + resolution: {integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-jest@29.2.5: + resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + 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 + + turbo-darwin-64@2.2.3: + resolution: {integrity: sha512-Rcm10CuMKQGcdIBS3R/9PMeuYnv6beYIHqfZFeKWVYEWH69sauj4INs83zKMTUiZJ3/hWGZ4jet9AOwhsssLyg==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.2.3: + resolution: {integrity: sha512-+EIMHkuLFqUdJYsA3roj66t9+9IciCajgj+DVek+QezEdOJKcRxlvDOS2BUaeN8kEzVSsNiAGnoysFWYw4K0HA==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.2.3: + resolution: {integrity: sha512-UBhJCYnqtaeOBQLmLo8BAisWbc9v9daL9G8upLR+XGj6vuN/Nz6qUAhverN4Pyej1g4Nt1BhROnj6GLOPYyqxQ==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.2.3: + resolution: {integrity: sha512-hJYT9dN06XCQ3jBka/EWvvAETnHRs3xuO/rb5bESmDfG+d9yQjeTMlhRXKrr4eyIMt6cLDt1LBfyi+6CQ+VAwQ==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.2.3: + resolution: {integrity: sha512-NPrjacrZypMBF31b4HE4ROg4P3nhMBPHKS5WTpMwf7wydZ8uvdEHpESVNMOtqhlp857zbnKYgP+yJF30H3N2dQ==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.2.3: + resolution: {integrity: sha512-fnNrYBCqn6zgKPKLHu4sOkihBI/+0oYFr075duRxqUZ+1aLWTAGfHZLgjVeLh3zR37CVzuerGIPWAEkNhkWEIw==} + cpu: [arm64] + os: [win32] + + turbo@2.2.3: + resolution: {integrity: sha512-5lDvSqIxCYJ/BAd6rQGK/AzFRhBkbu4JHVMLmGh/hCb7U3CqSnr5Tjwfy9vc+/5wG2DJ6wttgAaA7MoCgvBKZQ==} + hasBin: true + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + 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 + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@apidevtools/json-schema-ref-parser@9.0.6': + dependencies: + '@jsdevtools/ono': 7.1.3 + call-me-maybe: 1.0.2 + js-yaml: 3.14.1 + + '@apidevtools/openapi-schemas@2.1.0': {} + + '@apidevtools/swagger-methods@3.0.2': {} + + '@apidevtools/swagger-parser@10.1.0(openapi-types@12.1.3)': + dependencies: + '@apidevtools/json-schema-ref-parser': 9.0.6 + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + '@jsdevtools/ono': 7.1.3 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + call-me-maybe: 1.0.2 + openapi-types: 12.1.3 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.2': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.2': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.25.9': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bcoe/v8-coverage@0.2.3': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.9.0 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0': + 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': 22.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.9.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.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.9.0 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.9.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + 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.25 + '@types/node': 22.9.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.9.0 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsdevtools/ono@7.1.3': {} + + '@rollup/rollup-android-arm-eabi@4.24.4': + optional: true + + '@rollup/rollup-android-arm64@4.24.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.4': + optional: true + + '@rollup/rollup-darwin-x64@4.24.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.24.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.24.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.4': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.4': + optional: true + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.0 + + '@types/estree@1.0.6': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.9.0 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/js-yaml@4.0.9': {} + + '@types/node@22.9.0': + dependencies: + undici-types: 6.19.8 + + '@types/stack-utils@2.0.3': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + ajv-draft-04@1.0.0(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + async@3.2.6: {} + + babel-jest@29.7.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.26.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.25.9 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + + babel-preset-jest@29.6.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001679 + electron-to-chromium: 1.5.55 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + call-me-maybe@1.0.2: {} + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001679: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + char-regex@1.0.2: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.1: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + create-jest@29.7.0(@types/node@22.9.0): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.9.0) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + cross-spawn@7.0.5: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deepmerge@4.3.1: {} + + detect-newline@3.1.0: {} + + diff-sequences@29.6.3: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.55: {} + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + esbuild@0.21.5: + 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 + + escalade@3.2.0: {} + + escape-string-regexp@2.0.0: {} + + esprima@4.0.1: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.5 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expect@29.7.0: + 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 + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-uri@3.0.3: {} + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-package-type@0.1.0: {} + + get-stream@6.0.1: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + html-escaper@2.0.2: {} + + human-signals@2.1.0: {} + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-number@7.0.0: {} + + is-stream@2.0.1: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.26.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.26.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.7 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.9.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.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.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@22.9.0): + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.9.0) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.9.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@22.9.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + 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.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.9.0 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.9.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.9.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.26.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.9.0 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + + jest-runner@29.7.0: + 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': 22.9.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + 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 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + 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': 22.9.0 + chalk: 4.1.2 + cjs-module-lexer: 1.4.1 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + 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 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.26.0 + '@babel/generator': 7.26.2 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + 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.6.3 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.9.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.9.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.9.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@22.9.0): + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.9.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@1.0.0: {} + + json5@2.2.3: {} + + kleur@3.0.3: {} + + leven@3.1.0: {} + + lines-and-columns@1.2.4: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash.memoize@4.1.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + merge-stream@2.0.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + ms@2.1.3: {} + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + node-int64@0.4.0: {} + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + openapi-types@12.1.3: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pirates@4.0.6: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + pure-rand@6.1.0: {} + + react-is@18.3.1: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@5.0.0: {} + + resolve.exports@2.0.2: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rollup@4.24.4: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.4 + '@rollup/rollup-android-arm64': 4.24.4 + '@rollup/rollup-darwin-arm64': 4.24.4 + '@rollup/rollup-darwin-x64': 4.24.4 + '@rollup/rollup-freebsd-arm64': 4.24.4 + '@rollup/rollup-freebsd-x64': 4.24.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.4 + '@rollup/rollup-linux-arm-musleabihf': 4.24.4 + '@rollup/rollup-linux-arm64-gnu': 4.24.4 + '@rollup/rollup-linux-arm64-musl': 4.24.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.4 + '@rollup/rollup-linux-riscv64-gnu': 4.24.4 + '@rollup/rollup-linux-s390x-gnu': 4.24.4 + '@rollup/rollup-linux-x64-gnu': 4.24.4 + '@rollup/rollup-linux-x64-musl': 4.24.4 + '@rollup/rollup-win32-arm64-msvc': 4.24.4 + '@rollup/rollup-win32-ia32-msvc': 4.24.4 + '@rollup/rollup-win32-x64-msvc': 4.24.4 + fsevents: 2.3.3 + + semver@6.3.1: {} + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@3.0.7: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.9.0))(typescript@5.6.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@22.9.0) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.3 + typescript: 5.6.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.26.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.0) + + turbo-darwin-64@2.2.3: + optional: true + + turbo-darwin-arm64@2.2.3: + optional: true + + turbo-linux-64@2.2.3: + optional: true + + turbo-linux-arm64@2.2.3: + optional: true + + turbo-windows-64@2.2.3: + optional: true + + turbo-windows-arm64@2.2.3: + optional: true + + turbo@2.2.3: + optionalDependencies: + turbo-darwin-64: 2.2.3 + turbo-darwin-arm64: 2.2.3 + turbo-linux-64: 2.2.3 + turbo-linux-arm64: 2.2.3 + turbo-windows-64: 2.2.3 + turbo-windows-arm64: 2.2.3 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + typescript@5.6.3: {} + + undici-types@6.19.8: {} + + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + vite@5.4.10(@types/node@22.9.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.4 + optionalDependencies: + '@types/node': 22.9.0 + fsevents: 2.3.3 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + zod@3.23.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..18ec407 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/*' diff --git a/tsconfig.jest.json b/tsconfig.jest.json index d497244..7b06cd9 100644 --- a/tsconfig.jest.json +++ b/tsconfig.jest.json @@ -20,9 +20,13 @@ "resolvePackageJsonExports": true, "resolvePackageJsonImports": true, "resolveJsonModule": true, + "types": ["node", "jest"], "paths": { - "*": ["node_modules/*"] + "@adaptate/core": ["./packages/core/src"], + "@adaptate/utils": ["./packages/utils/src"], + "@adaptate/utils/*": ["./packages/utils/src/*"], + "@adaptate/utils/openapi": ["./packages/utils/src/openapi.ts"] } }, - "include": ["src/**/*.ts", "src/**/*.tsx", "tests/**/*.ts", "tests/**/*.tsx"] + "include": ["packages", "packages/core/src/**/*.ts"] } diff --git a/tsconfig.json b/tsconfig.json index 8966617..9295f38 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,8 +15,14 @@ // "verbatimModuleSyntax": true, "strict": true, "esModuleInterop": true, - "outDir": "./dist" + "outDir": "./dist", + "types": ["node"], + "paths": { + "@adaptate/core": ["./packages/core/src"], + "@adaptate/utils": ["./packages/utils/src"], + "@adaptate/utils/*": ["./packages/utils/src/*"] + } }, - "include": ["packages/core/src/**/*.ts", "tests/**/*.ts"], + "include": ["packages", "packages/core/src/**/*.ts", "tests/**/*.ts"], "exclude": ["node_modules"] } From f0f4527cb6e2b186fb9c388b3fb7e99a01db6cde Mon Sep 17 00:00:00 2001 From: Peramanathan Sathyamoorthy Date: Fri, 8 Nov 2024 12:57:06 +0100 Subject: [PATCH 2/4] Update release.yml Add missing '--recursive' flag for 'pnpm publish' --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bcad0e7..fc1d9a1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,7 +46,7 @@ jobs: - name: Publish adaptate to npm env: NODE_AUTH_TOKEN: ${{ secrets.NPM_USER_TOKEN }} - run: pnpm publish --provenance --access public + run: pnpm publish --recursive --provenance --access public # - name: Publish @adaptate/core to npm # working-directory: packages/core From 23b1c27460c7ac2200e3869c0439a3de817169e5 Mon Sep 17 00:00:00 2001 From: Peramanathan Sathyamoorthy Date: Fri, 8 Nov 2024 16:02:32 +0100 Subject: [PATCH 3/4] Move tests to corresponding package, cleanup --- README.md | 2 + coverage-badge.svg | 1 + jest.config.mjs | 1 + .../core/src/__tests__/check-model.test.ts | 46 --- packages/core/src/__tests__/index.test.ts | 251 +++----------- packages/core/src/index.ts | 118 +++---- .../src/{check-model.ts => mutate-model.ts} | 45 ++- packages/core/src/openapi-spec-parser.ts | 32 -- packages/core/vite.config.js | 2 +- packages/utils/package.json | 1 - packages/utils/src/__tests__/openapi.test.ts | 326 ++++++++++++++++++ packages/utils/src/fixtures/base-schema.yml | 43 +++ packages/utils/src/openapi.ts | 4 +- tsconfig.jest.json | 3 +- tsconfig.json | 2 +- turbo.json | 5 + 16 files changed, 511 insertions(+), 371 deletions(-) create mode 100644 coverage-badge.svg delete mode 100644 packages/core/src/__tests__/check-model.test.ts rename packages/core/src/{check-model.ts => mutate-model.ts} (56%) delete mode 100644 packages/core/src/openapi-spec-parser.ts create mode 100644 packages/utils/src/__tests__/openapi.test.ts create mode 100644 packages/utils/src/fixtures/base-schema.yml diff --git a/README.md b/README.md index 18b2cbf..a407c55 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Dynamic and Adaptable Model Validator Using Zod, Interoperable with OpenAPI +![Coverage Badge](/coverage-badge.svg) + ## Overview `adaptate` is a dynamic and adaptable model validator that leverages the power of Zod for schema validation and is interoperable with OpenAPI. This library allows you to define, validate, and transform schemas seamlessly. diff --git a/coverage-badge.svg b/coverage-badge.svg new file mode 100644 index 0000000..5bb55be --- /dev/null +++ b/coverage-badge.svg @@ -0,0 +1 @@ +Coverage: 100%Coverage100% \ No newline at end of file diff --git a/jest.config.mjs b/jest.config.mjs index 70f7cdf..9fe2ed5 100644 --- a/jest.config.mjs +++ b/jest.config.mjs @@ -11,4 +11,5 @@ export default { ], }, extensionsToTreatAsEsm: ['.ts', '.tsx'], + coverageReporters: ['json-summary'], }; diff --git a/packages/core/src/__tests__/check-model.test.ts b/packages/core/src/__tests__/check-model.test.ts deleted file mode 100644 index 436757a..0000000 --- a/packages/core/src/__tests__/check-model.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { z } from 'zod'; -import { checkModel } from '../check-model'; - -describe('checkModel function', () => { - it('should correctly apply required properties as per the config', () => { - // Create a Zod schema where all properties are optional - const schema = z.object({ - name: z.string().optional(), - age: z.number().optional(), - address: z - .object({ - street: z.string().optional(), - city: z.string().optional(), - }) - .optional(), - }); - - // Config specifying which properties are required - const config = { - requiredProperties: { - name: true, - 'address.city': true, - }, - }; - - // Perform the check - checkModel(schema, config); - - // Validate instances to verify the required properties are enforced - const validData = { - name: 'John Doe', - address: { city: 'New York' }, - }; - const invalidDataMissingName = { - address: { city: 'New York' }, - }; - const invalidDataMissingCity = { - name: 'John Doe', - address: {}, - }; - - expect(() => schema.parse(validData)).not.toThrow(); // Should pass - expect(() => schema.parse(invalidDataMissingName)).toThrow(); // Should fail due to missing 'name' - expect(() => schema.parse(invalidDataMissingCity)).toThrow(); // Should fail due to missing 'address.city' - }); -}); diff --git a/packages/core/src/__tests__/index.test.ts b/packages/core/src/__tests__/index.test.ts index 3a0f90f..464304c 100644 --- a/packages/core/src/__tests__/index.test.ts +++ b/packages/core/src/__tests__/index.test.ts @@ -1,11 +1,9 @@ import { z } from 'zod'; -import { getDereferencedOpenAPIDocument } from '@adaptate/utils/openapi'; import { - makeSchemaRequired, + getDereferencedOpenAPIDocument, openAPISchemaToZod, - applyConditionalRequirements, - zodToOpenAPISchema, -} from '../'; +} from '@adaptate/utils/openapi'; +import { makeSchemaRequired, applyConditionalRequirements } from '../'; describe('makeSchemaRequired', () => { it('should make properties required based on the config', async () => { @@ -63,7 +61,6 @@ describe('makeSchemaRequired', () => { subcategories: [{ items: ['iPhone', 'Samsung Galaxy'] }], }, type: 'electronics', - warrantyPeriod: '2 years', }; let invalidDataItems = { @@ -80,6 +77,9 @@ describe('makeSchemaRequired', () => { }; expect(() => transformedSchema.parse(validData)).not.toThrow(); + + expect(() => baseSchema.parse(invalidDataMissingName)).not.toThrow(); + expect(() => transformedSchema.parse(invalidDataMissingName)) .toThrowErrorMatchingInlineSnapshot(` "[ @@ -108,6 +108,25 @@ describe('makeSchemaRequired', () => { ]" `); + // Re transforming the schema with different config + // Here making warrantyPeriod required + expect(() => + makeSchemaRequired(transformedSchema, { + category: { + warrantyPeriod: true, + }, + }).parse(invalidDataMissingName) + ).toThrow(); + + expect(() => baseSchema.parse({})).not.toThrow(); + expect(() => + baseSchema.parse({ + category: { + subcategories: [{ items: [] }], + }, + }) + ).not.toThrow(); + expect(() => baseSchema.parse(invalidDataItems)).toThrow(); expect(() => transformedSchema.parse(invalidDataItems)) .toThrowErrorMatchingInlineSnapshot(` "[ @@ -187,28 +206,28 @@ describe('makeSchemaRequired', () => { expect(() => anotherTransformedSchema.parse(anotherInValidData)).toThrow(); - // let dataLoadedFromYAML = await getDereferencedOpenAPIDocument( - // import.meta.url, - // '../fixtures/base-schema.yml' - // ); - // let dataZodSchema = openAPISchemaToZod( - // // @ts-ignore - // dataLoadedFromYAML['components']['schemas']['Category'] - // ); + let dereferencedOpenAPIDocument = await getDereferencedOpenAPIDocument( + import.meta.url, + '../fixtures/base-schema.yml' + ); + let dataZodSchema = openAPISchemaToZod( + // @ts-ignore + dereferencedOpenAPIDocument['components']['schemas']['Category'] + ); - // let yetAnotherTransformedSchema = makeSchemaRequired(dataZodSchema, config); + let yetAnotherTransformedSchema = makeSchemaRequired(dataZodSchema, config); - // expect(() => - // yetAnotherTransformedSchema.parse(validData['category']) - // ).not.toThrow(); + expect(() => + yetAnotherTransformedSchema.parse(validData['category']) + ).not.toThrow(); - // expect(() => - // yetAnotherTransformedSchema.parse(invalidDataMissingName['category']) - // ).toThrow(); + expect(() => + yetAnotherTransformedSchema.parse(invalidDataMissingName['category']) + ).toThrow(); - // expect(() => - // yetAnotherTransformedSchema.parse(invalidDataItems['category']) - // ).toThrow(); + expect(() => + yetAnotherTransformedSchema.parse(invalidDataItems['category']) + ).toThrow(); }); it('should handle array of objects at top level', () => { @@ -316,143 +335,6 @@ describe('makeSchemaRequired', () => { }); }); -describe('openAPISchemaToZod', () => { - it('should convert OpenAPI string schema to Zod string schema', () => { - let openAPISchema = { - type: 'object', - required: ['name'], - properties: { - name: { - type: 'string', - }, - items: { - type: 'array', - items: { - type: 'string', - }, - }, - }, - }; - // const openAPISchema = { type: 'string' }; - const zodSchema = openAPISchemaToZod(openAPISchema); - // @ts-ignore - expect(zodSchema.shape.name).toBeInstanceOf(z.ZodString); - // @ts-ignore - expect(zodSchema.shape.items).toBeInstanceOf(z.ZodOptional); - // @ts-ignore - expect(zodSchema.shape.items.unwrap()).toBeInstanceOf(z.ZodArray); - expect( - // @ts-ignore - zodSchema.shape.items.unwrap().element.unwrap().unwrap() - ).toBeInstanceOf(z.ZodString); - }); - - it('should convert OpenAPI number schema to Zod number schema', () => { - const openAPISchema = { - type: 'object', - required: ['id'], - properties: { - id: { - type: 'number', - }, - }, - }; - const zodSchema = openAPISchemaToZod(openAPISchema); - // @ts-ignore - expect(zodSchema.shape.id).toBeInstanceOf(z.ZodNumber); - }); - - it('should convert OpenAPI boolean schema to Zod boolean schema', () => { - const openAPISchema = { - type: 'object', - required: ['enabled'], - properties: { - enabled: { - type: 'boolean', - }, - }, - }; - - const zodSchema = openAPISchemaToZod(openAPISchema); - // @ts-ignore - expect(zodSchema.shape.enabled).toBeInstanceOf(z.ZodBoolean); - }); - - it('should convert OpenAPI array schema to Zod array schema', () => { - const openAPISchema = { - type: 'object', - required: ['products'], - properties: { - products: { - type: 'array', - items: { type: 'string' }, - }, - }, - }; - - const zodSchema = openAPISchemaToZod( - openAPISchema - ) as z.ZodArray; - - // @ts-ignore - expect(zodSchema.shape.products).toBeInstanceOf(z.ZodArray); - }); - - it('should convert OpenAPI object schema to Zod object schema', () => { - const openAPISchema = { - type: 'object', - required: ['name', 'age', 'email', 'count'], - properties: { - name: { type: 'string' }, - age: { type: 'number' }, - email: { type: 'string', format: 'email' }, - count: { type: 'integer' }, - unknownType: { type: 'unknown' }, - }, - }; - const zodSchema = openAPISchemaToZod(openAPISchema) as z.ZodObject<{ - name: z.ZodString; - age: z.ZodNumber; - email: z.ZodString; - count: z.ZodNumber; - unknownType: z.ZodAny; - }>; - expect(zodSchema).toBeInstanceOf(z.ZodObject); - expect(zodSchema.shape.name).toBeInstanceOf(z.ZodString); - expect(zodSchema.shape.age).toBeInstanceOf(z.ZodNumber); - expect(zodSchema.shape.email).toBeInstanceOf(z.ZodString); - expect(zodSchema.shape.count).toBeInstanceOf(z.ZodNumber); - // @ts-ignore - expect(zodSchema.shape.unknownType.unwrap()).toBeInstanceOf(z.ZodAny); - }); - - it('should convert OpenAPI schema with $ref to another component using openapi-spec-parser', async () => { - let dataLoadedFromYAML = await getDereferencedOpenAPIDocument( - import.meta.url, - '../fixtures/base-schema.yml' - ); - let zodSchema = openAPISchemaToZod( - // @ts-ignore - dataLoadedFromYAML.components.schemas.Category - ) as z.ZodObject<{ - name: z.ZodString; - subcategories: z.ZodArray< - z.ZodObject<{ name: z.ZodString; items: z.ZodArray }> - >; - }>; - - expect(zodSchema).toBeInstanceOf(z.ZodObject); - expect(zodSchema.shape.name).toBeInstanceOf(z.ZodString); - expect(zodSchema.shape.subcategories).toBeInstanceOf(z.ZodArray); - expect(zodSchema.shape.subcategories.element.shape.name).toBeInstanceOf( - z.ZodString - ); - expect(zodSchema.shape.subcategories.element.shape.items).toBeInstanceOf( - z.ZodArray - ); - }); -}); - // Rethink describe('applyConditionalRequirements', () => { it('should apply conditional requirements based on the config', () => { @@ -512,50 +394,3 @@ describe('applyConditionalRequirements', () => { expect(result).toBe(schema); }); }); - -describe('zodToOpenAPISchema', () => { - it('should convert Zod string schema to OpenAPI string schema', () => { - const zodSchema = z.string(); - const openAPISchema = zodToOpenAPISchema(zodSchema); - expect(openAPISchema).toEqual({ type: 'string' }); - }); - - it('should convert Zod number schema to OpenAPI number schema', () => { - const zodSchema = z.number(); - const openAPISchema = zodToOpenAPISchema(zodSchema); - expect(openAPISchema).toEqual({ type: 'number' }); - }); - - it('should convert Zod boolean schema to OpenAPI boolean schema', () => { - const zodSchema = z.boolean(); - const openAPISchema = zodToOpenAPISchema(zodSchema); - expect(openAPISchema).toEqual({ type: 'boolean' }); - }); - - it('should convert Zod array schema to OpenAPI array schema', () => { - const zodSchema = z.array(z.string()); - const openAPISchema = zodToOpenAPISchema(zodSchema); - expect(openAPISchema).toEqual({ type: 'array', items: { type: 'string' } }); - }); - - it('should convert Zod object schema to OpenAPI object schema', () => { - const zodSchema = z.object({ - name: z.string(), - age: z.number(), - }); - const openAPISchema = zodToOpenAPISchema(zodSchema); - expect(openAPISchema).toEqual({ - type: 'object', - properties: { - name: { type: 'string' }, - age: { type: 'number' }, - }, - }); - }); - - it('should handle unsupported Zod schema type', () => { - const zodSchema = z.date(); - const openAPISchema = zodToOpenAPISchema(zodSchema); - expect(openAPISchema).toEqual({}); - }); -}); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 6d4d2d2..1e23e64 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -2,6 +2,48 @@ import { z, ZodObject, ZodArray, ZodTypeAny } from 'zod'; export type Config = Record; +/** + * Make the given Zod schema required as per the configuration. + * @param schema - The Zod schema to make required. + * @param config - The configuration object. + * @returns The updated Zod schema with required properties. + * @throws If the given schema is not a Zod object. + * @example + * const schema = z.object({ + * name: z.string().optional(), + * age: z.number().optional(), + * address: z.object({ + * street: z.string().optional(), + * city: z.string().optional(), + * }).optional(), + * }); + * + * // Specify which properties are required, false will not make required + * // In original schema optional properties yet + * const config = { + * name: true, + * address: { + * city: true + * } + * }; + * const updatedSchema = makeSchemaRequired(schema, config); + * const validData = { + * name: 'John Doe', + * address: { city: 'New York' }, + * }; + * const invalidDataMissingName = { + * address: { city: 'New York' }, + * }; + * const invalidDataMissingCity = { + * name: 'John Doe', + * address: {}, + * }; + * schema.parse(validData); // Should pass + * schema.parse(invalidDataMissingName); // Should fail due to missing 'name' + * schema.parse(invalidDataMissingCity); // Should fail due to missing 'address.city' + * @category Helper + * @module makeSchemaRequired + * */ // @ts-ignore export function makeSchemaRequired( schema: ZodTypeAny, @@ -76,61 +118,6 @@ export function makeSchemaRequired( return updatedSchema; } -export function openAPISchemaToZod( - schema: any, - propertyKey: string = '', - required: string[] = [] -): ZodTypeAny { - // Handle string type, including specific formats like email - if (schema.type === 'string') { - let zodSchema = z.string(); - if (schema.format === 'email') { - zodSchema = zodSchema.email(); - } - - return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); - // Handle number type - } else if (schema.type === 'number') { - let zodSchema = z.number(); - return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); - // Handle integer type - } else if (schema.type === 'integer') { - let zodSchema = z.number().int(); - return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); - // Handle boolean type - } else if (schema.type === 'boolean') { - let zodSchema = z.boolean(); - return required.includes(propertyKey) ? zodSchema : zodSchema.optional(); - // Handle array type - } else if (schema.type === 'array') { - const itemsSchema = schema.items - ? openAPISchemaToZod(schema.items, propertyKey, required) - : z.any(); - - return required.includes(propertyKey) - ? z.array(itemsSchema) - : z.array(itemsSchema.optional()); - // Handle object type by converting properties recursively - } else if (schema.type === 'object') { - const properties = schema.properties || {}; - const requiredProperties = schema.required || []; - const shape = Object.fromEntries( - Object.entries(properties).map((entry) => { - let [key, value] = entry; - let zodSchema = openAPISchemaToZod(value, key, requiredProperties); - // If the property is not in the required list, make it optional - if (!requiredProperties.includes(key)) { - zodSchema = zodSchema.optional(); - } - return [key, zodSchema]; - }) - ); - return z.object(shape); - } - // Default case for unsupported types - return z.any(); -} - // TODO: Make the function either partial or hoc // Which returns a function that takes data later export function applyConditionalRequirements( @@ -163,24 +150,3 @@ export function applyConditionalRequirements( } return schema; } - -export function zodToOpenAPISchema(schema: ZodTypeAny): any { - if (schema instanceof z.ZodString) { - return { type: 'string' }; - } else if (schema instanceof z.ZodNumber) { - return { type: 'number' }; - } else if (schema instanceof z.ZodBoolean) { - return { type: 'boolean' }; - } else if (schema instanceof ZodArray) { - return { type: 'array', items: zodToOpenAPISchema(schema.element) }; - } else if (schema instanceof ZodObject) { - const properties = Object.fromEntries( - Object.entries(schema.shape).map(([key, value]) => { - // @ts-ignore - return [key, zodToOpenAPISchema(value)]; - }) - ); - return { type: 'object', properties }; - } - return {}; -} diff --git a/packages/core/src/check-model.ts b/packages/core/src/mutate-model.ts similarity index 56% rename from packages/core/src/check-model.ts rename to packages/core/src/mutate-model.ts index 4054a07..1d1cfc0 100644 --- a/packages/core/src/check-model.ts +++ b/packages/core/src/mutate-model.ts @@ -8,8 +8,47 @@ type Config = { * Check the given Zod schema and unwrap the properties that are required. * @param schema - The Zod schema to check. * @param config - The configuration object. + * @throws If the given schema is not a Zod object. + * @example + * const schema = z.object({ + * name: z.string().optional(), + * age: z.number().optional(), + * address: z.object({ + * street: z.string().optional(), + * city: z.string().optional(), + * }).optional(), + * }); + * + * const config = { + * requiredProperties: { + * name: true, + * 'address.city': true, + * }, + * }; + * + * checkModel(schema, config); + * + * const validData = { + * name: 'John Doe', + * address: { city: 'New York' }, + * }; + * + * const invalidDataMissingName = { + * address: { city: 'New York' }, + * }; + * + * const invalidDataMissingCity = { + * name: 'John Doe', + * address: {}, + * }; + * + * schema.parse(validData); // Should pass + * schema.parse(invalidDataMissingName); // Should fail due to missing 'name' + * schema.parse(invalidDataMissingCity); // Should fail due to missing 'address.city' + * @category Helper + * @module mutateModel */ -function checkModel(schema: ZodSchema, config: Config) { +function mutateModel(schema: ZodSchema, config: Config) { const { requiredProperties } = config; const checkProperties = (object: ZodObject, path: string = '') => { @@ -41,10 +80,10 @@ function checkModel(schema: ZodSchema, config: Config) { }; if (schema instanceof ZodObject) { - checkProperties(schema); + return checkProperties(schema); } else { console.error('The given schema must be a Zod object.'); } } -export { checkModel }; +export { mutateModel }; diff --git a/packages/core/src/openapi-spec-parser.ts b/packages/core/src/openapi-spec-parser.ts deleted file mode 100644 index 3b8812a..0000000 --- a/packages/core/src/openapi-spec-parser.ts +++ /dev/null @@ -1,32 +0,0 @@ -import fs from 'node:fs'; -import path, { dirname } from 'node:path'; -import { fileURLToPath } from 'node:url'; - -import SwaggerParser from '@apidevtools/swagger-parser'; -import yaml from 'js-yaml'; - -export async function loadAndResolveYAML( - fileURL: string, - relativePath: string -) { - try { - let fileURLPath = fileURLToPath(fileURL); - let callerDirectoryName = dirname(fileURLPath); - let yamlFilePath = path.resolve( - callerDirectoryName, - relativePath - // `fixtures/${relativePath}` - ); - const openapiDocument = yaml.load( - fs.readFileSync(yamlFilePath, 'utf8') - ) as string; - - const dereferenced = await SwaggerParser.dereference(openapiDocument); - - // console.log(JSON.stringify(dereferenced, null, 2)); - - return dereferenced; - } catch (error) { - console.error('Error:', error); - } -} diff --git a/packages/core/vite.config.js b/packages/core/vite.config.js index aec1500..be1da2b 100644 --- a/packages/core/vite.config.js +++ b/packages/core/vite.config.js @@ -6,7 +6,7 @@ export default defineConfig({ target: 'esnext', outDir: 'build', lib: { - entry: ['src/index.ts', 'src/check-model.ts'], + entry: ['src/index.ts', 'src/mutate-model.ts'], formats: ['es'], fileName: (format, entryName) => `${entryName}.${format}.js`, types: 'src/index.d.ts', diff --git a/packages/utils/package.json b/packages/utils/package.json index e60c0f7..02daffe 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -19,7 +19,6 @@ "main": "./build/index.es.js", "types": "./build/index.d.ts", "scripts": { - "test": "node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js --coverage", "build": "vite build", "check-types": "tsc --noEmit" }, diff --git a/packages/utils/src/__tests__/openapi.test.ts b/packages/utils/src/__tests__/openapi.test.ts new file mode 100644 index 0000000..8871520 --- /dev/null +++ b/packages/utils/src/__tests__/openapi.test.ts @@ -0,0 +1,326 @@ +import { z } from 'zod'; + +import { + getDereferencedOpenAPIDocument, + openAPISchemaToZod, + zodToOpenAPISchema, +} from '../openapi'; + +describe('openAPISchemaToZod', () => { + it('should convert OpenAPI string schema to Zod string schema', () => { + let openAPISchema = { + type: 'object', + required: ['name'], + properties: { + name: { + type: 'string', + }, + items: { + type: 'array', + items: { + type: 'string', + }, + }, + }, + }; + + const zodSchema = openAPISchemaToZod(openAPISchema); + // @ts-ignore + expect(zodSchema.shape.name).toBeInstanceOf(z.ZodString); + // @ts-ignore + expect(zodSchema.shape.items).toBeInstanceOf(z.ZodOptional); + // @ts-ignore + expect(zodSchema.shape.items.unwrap()).toBeInstanceOf(z.ZodArray); + expect( + // @ts-ignore + zodSchema.shape.items.unwrap().element.unwrap().unwrap() + ).toBeInstanceOf(z.ZodString); + }); + + it('should convert OpenAPI number schema to Zod number schema', () => { + const openAPISchema = { + type: 'object', + required: ['id'], + properties: { + id: { + type: 'number', + }, + }, + }; + const zodSchema = openAPISchemaToZod(openAPISchema); + // @ts-ignore + expect(zodSchema.shape.id).toBeInstanceOf(z.ZodNumber); + }); + + it('should convert OpenAPI boolean schema to Zod boolean schema', () => { + const openAPISchema = { + type: 'object', + required: ['enabled'], + properties: { + enabled: { + type: 'boolean', + }, + }, + }; + + const zodSchema = openAPISchemaToZod(openAPISchema); + // @ts-ignore + expect(zodSchema.shape.enabled).toBeInstanceOf(z.ZodBoolean); + }); + + it('should convert OpenAPI array schema to Zod array schema', () => { + const openAPISchema = { + type: 'object', + required: ['products'], + properties: { + products: { + type: 'array', + items: { type: 'string' }, + }, + }, + }; + + const zodSchema = openAPISchemaToZod( + openAPISchema + ) as z.ZodArray; + + // @ts-ignore + expect(zodSchema.shape.products).toBeInstanceOf(z.ZodArray); + }); + + it('should convert OpenAPI object schema to Zod object schema', () => { + const openAPISchema = { + type: 'object', + required: ['name', 'age', 'email', 'count'], + properties: { + name: { type: 'string' }, + age: { type: 'number' }, + email: { type: 'string', format: 'email' }, + count: { type: 'integer' }, + unknownType: { type: 'unknown' }, + }, + }; + const zodSchema = openAPISchemaToZod(openAPISchema) as z.ZodObject<{ + name: z.ZodString; + age: z.ZodNumber; + email: z.ZodString; + count: z.ZodNumber; + unknownType: z.ZodAny; + }>; + expect(zodSchema).toBeInstanceOf(z.ZodObject); + expect(zodSchema.shape.name).toBeInstanceOf(z.ZodString); + expect(zodSchema.shape.age).toBeInstanceOf(z.ZodNumber); + expect(zodSchema.shape.email).toBeInstanceOf(z.ZodString); + expect(zodSchema.shape.count).toBeInstanceOf(z.ZodNumber); + // @ts-ignore + expect(zodSchema.shape.unknownType.unwrap()).toBeInstanceOf(z.ZodAny); + }); + + it('should convert OpenAPI schema with $ref to another component using openapi-spec-parser', async () => { + let dereferencedOpenAPIDocument = await getDereferencedOpenAPIDocument( + import.meta.url, + '../fixtures/base-schema.yml' + ); + let zodSchema = openAPISchemaToZod( + // @ts-ignore + dereferencedOpenAPIDocument.components.schemas.Category + ) as z.ZodObject<{ + name: z.ZodString; + subcategories: z.ZodArray< + z.ZodObject<{ name: z.ZodString; items: z.ZodArray }> + >; + }>; + + expect(zodSchema).toBeInstanceOf(z.ZodObject); + expect(zodSchema.shape.name).toBeInstanceOf(z.ZodString); + expect(zodSchema.shape.subcategories).toBeInstanceOf(z.ZodArray); + expect(zodSchema.shape.subcategories.element.shape.name).toBeInstanceOf( + z.ZodString + ); + expect(zodSchema.shape.subcategories.element.shape.items).toBeInstanceOf( + z.ZodArray + ); + }); +}); + +describe('zodToOpenAPISchema', () => { + it('should convert Zod string schema to OpenAPI string schema', () => { + const zodSchema = z.string(); + const openAPISchema = zodToOpenAPISchema(zodSchema); + expect(openAPISchema).toEqual({ type: 'string' }); + }); + + it('should convert Zod number schema to OpenAPI number schema', () => { + const zodSchema = z.number(); + const openAPISchema = zodToOpenAPISchema(zodSchema); + expect(openAPISchema).toEqual({ type: 'number' }); + }); + + it('should convert Zod boolean schema to OpenAPI boolean schema', () => { + const zodSchema = z.boolean(); + const openAPISchema = zodToOpenAPISchema(zodSchema); + expect(openAPISchema).toEqual({ type: 'boolean' }); + }); + + it('should convert Zod array schema to OpenAPI array schema', () => { + const zodSchema = z.array(z.string()); + const openAPISchema = zodToOpenAPISchema(zodSchema); + expect(openAPISchema).toEqual({ type: 'array', items: { type: 'string' } }); + }); + + it('should convert Zod object schema to OpenAPI object schema', () => { + const zodSchema = z.object({ + name: z.string(), + age: z.number(), + }); + const openAPISchema = zodToOpenAPISchema(zodSchema); + expect(openAPISchema).toEqual({ + type: 'object', + properties: { + name: { type: 'string' }, + age: { type: 'number' }, + }, + }); + }); + + it('should handle unsupported Zod schema type', () => { + const zodSchema = z.date(); + const openAPISchema = zodToOpenAPISchema(zodSchema); + expect(openAPISchema).toEqual({}); + }); +}); + +describe('getDereferencedOpenAPIDocument', () => { + it('should return dereferencedOpenAPIDocument from OpenAPI yml spec file', async () => { + let dereferencedOpenAPIDocument = await getDereferencedOpenAPIDocument( + import.meta.url, + '../fixtures/base-schema.yml' + ); + + expect(dereferencedOpenAPIDocument).toMatchInlineSnapshot(` + { + "components": { + "schemas": { + "Category": { + "properties": { + "name": { + "type": "string", + }, + "optionalProperty": { + "type": "string", + }, + "subcategories": { + "items": { + "properties": { + "items": { + "items": { + "type": "string", + }, + "type": "array", + }, + "name": { + "type": "string", + }, + }, + "required": [ + "name", + "items", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "name", + "subcategories", + ], + "type": "object", + }, + "Subcategory": { + "properties": { + "items": { + "items": { + "type": "string", + }, + "type": "array", + }, + "name": { + "type": "string", + }, + }, + "required": [ + "name", + "items", + ], + "type": "object", + }, + }, + }, + "info": { + "title": "Sample API", + "version": "1.0.0", + }, + "openapi": "3.0.0", + "paths": { + "/category": { + "get": { + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "type": "string", + }, + "optionalProperty": { + "type": "string", + }, + "subcategories": { + "items": { + "properties": { + "items": { + "items": { + "type": "string", + }, + "type": "array", + }, + "name": { + "type": "string", + }, + }, + "required": [ + "name", + "items", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "name", + "subcategories", + ], + "type": "object", + }, + }, + }, + "description": "A category object", + }, + }, + "summary": "Get category", + }, + }, + }, + } + `); + }); + + expect(() => + getDereferencedOpenAPIDocument(import.meta.url, '../fixtures/unknown.yml') + ).rejects.toThrowErrorMatchingInlineSnapshot( + `"Error reading OpenAPI document: ENOENT: no such file or directory, open '/Users/peram/code/adaptate/packages/utils/src/fixtures/unknown.yml'"` + ); +}); diff --git a/packages/utils/src/fixtures/base-schema.yml b/packages/utils/src/fixtures/base-schema.yml new file mode 100644 index 0000000..d9226ea --- /dev/null +++ b/packages/utils/src/fixtures/base-schema.yml @@ -0,0 +1,43 @@ +openapi: '3.0.0' +info: + title: 'Sample API' + version: '1.0.0' +components: + schemas: + Category: + type: object + required: + - name + - subcategories + properties: + optionalProperty: + type: string + name: + type: string + subcategories: + type: array + items: + $ref: '#/components/schemas/Subcategory' + Subcategory: + type: object + required: + - name + - items + properties: + name: + type: string + items: + type: array + items: + type: string +paths: + /category: + get: + summary: 'Get category' + responses: + '200': + description: 'A category object' + content: + application/json: + schema: + $ref: '#/components/schemas/Category' diff --git a/packages/utils/src/openapi.ts b/packages/utils/src/openapi.ts index 42e4de9..b3c4201 100644 --- a/packages/utils/src/openapi.ts +++ b/packages/utils/src/openapi.ts @@ -99,6 +99,8 @@ export async function getDereferencedOpenAPIDocument( return dereferenced; } catch (error) { - console.error('Error:', error); + throw new Error( + `Error reading OpenAPI document: ${(error as any)?.message || ''}` + ); } } diff --git a/tsconfig.jest.json b/tsconfig.jest.json index 7b06cd9..a95f6b4 100644 --- a/tsconfig.jest.json +++ b/tsconfig.jest.json @@ -24,8 +24,7 @@ "paths": { "@adaptate/core": ["./packages/core/src"], "@adaptate/utils": ["./packages/utils/src"], - "@adaptate/utils/*": ["./packages/utils/src/*"], - "@adaptate/utils/openapi": ["./packages/utils/src/openapi.ts"] + "@adaptate/utils/*": ["./packages/utils/src/*"] } }, "include": ["packages", "packages/core/src/**/*.ts"] diff --git a/tsconfig.json b/tsconfig.json index 9295f38..323c172 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,7 +16,7 @@ "strict": true, "esModuleInterop": true, "outDir": "./dist", - "types": ["node"], + "types": ["node", "jest"], "paths": { "@adaptate/core": ["./packages/core/src"], "@adaptate/utils": ["./packages/utils/src"], diff --git a/turbo.json b/turbo.json index e4d2051..65ad4bc 100644 --- a/turbo.json +++ b/turbo.json @@ -2,8 +2,13 @@ "$schema": "https://turbo.build/schema.json", "tasks": { "build": { + "dependsOn": ["^test"], "outputs": ["build/**"] }, + "test": { + "dependsOn": ["check-types"], + "outputs": ["coverage/**"] + }, "check-types": { "dependsOn": ["^check-types"] }, From c3fe7b5e69db66d8ed4254a78fd8e6b3ca0e519e Mon Sep 17 00:00:00 2001 From: Peramanathan Sathyamoorthy Date: Fri, 8 Nov 2024 16:20:09 +0100 Subject: [PATCH 4/4] 0.0.10-rc --- package.json | 2 +- packages/core/package.json | 2 +- packages/utils/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9d0d729..564cd9f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "adaptate", - "version": "0.0.9-rc", + "version": "0.0.10-rc", "author": { "name": "Peramanathan Sathyamoorthy", "url": "https://github.com/p10ns11y/adaptate.git" diff --git a/packages/core/package.json b/packages/core/package.json index 9c5a1bb..1fa4983 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@adaptate/core", - "version": "0.0.9-rc", + "version": "0.0.10-rc", "author": { "name": "Peramanathan Sathyamoorthy", "url": "https://github.com/p10ns11y/adaptate.git" diff --git a/packages/utils/package.json b/packages/utils/package.json index 02daffe..0d303b1 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@adaptate/utils", - "version": "0.0.9-rc", + "version": "0.0.10-rc", "author": { "name": "Peramanathan Sathyamoorthy", "url": "https://github.com/p10ns11y/adaptate.git"