diff --git a/MAINTAINERS.md b/MAINTAINERS.md index b0a266b..1127b64 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,4 +1,11 @@ -# Serverless Workflow Typescript SDK Maintainers +# Serverless Workflow Org Maintainers +* [Jean-Baptiste Bianchi](https://github.com/JBBianchi) +* [Charles d'Avernas](https://github.com/cdavernas) +* [Ricardo Zanini](https://github.com/ricardozanini) + +# Serverless Workflow Org Emeritus Maintainers * [Antonio Mendoza PĂ©rez](https://github.com/antmendoza) -* [Tihomir Surdilovic](https://github.com/tsurdilo) + +# Maintainers Mailing list +[cncf-serverlessws-maintainers](mailto:cncf-serverlessws-maintainers@lists.cncf.io) \ No newline at end of file diff --git a/README.md b/README.md index 0381af1..b4d5da1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Node CI](https://github.com/serverlessworkflow/sdk-typescript/workflows/Node%20CI/badge.svg) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/serverlessworkflow/sdk-typescript) +![Node CI](https://github.com/serverless-workflow/sdk/workflows/Node%20CI/badge.svg) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/serverless-workflow/sdk) # Serverless Workflow Specification - Typescript SDK @@ -14,9 +14,9 @@ With the SDK you can: | Latest Releases | Conformance to spec version | | :---: | :---: | -| [v1.0.0](https://github.com/serverlessworkflow/sdk-typescript/releases/) | [v0.6](https://github.com/serverlessworkflow/specification/tree/0.6.x) | -| [v2.0.0](https://github.com/serverlessworkflow/sdk-typescript/releases/) | [v0.7](https://github.com/serverlessworkflow/specification/tree/0.7.x) | -| [v3.0.0](https://github.com/serverlessworkflow/sdk-typescript/releases/) | [v0.8](https://github.com/serverlessworkflow/specification/tree/0.8.x) | +| [v1.0.0](https://github.com/serverless-workflow/sdk/releases/) | [v0.6](https://github.com/serverlessworkflow/specification/tree/0.6.x) | +| [v2.0.0](https://github.com/serverless-workflow/sdk/releases/) | [v0.7](https://github.com/serverlessworkflow/specification/tree/0.7.x) | +| [v3.0.0](https://github.com/serverless-workflow/sdk/releases/) | [v0.8](https://github.com/serverlessworkflow/specification/tree/0.8.x) | @@ -27,7 +27,7 @@ With the SDK you can: To build the project and run tests locally: ```sh -git clone https://github.com/serverlessworkflow/sdk-typescript.git +git clone https://github.com/serverless-workflow/sdk.git cd sdk-typescript npm install && npm run build && npm run test ``` @@ -41,7 +41,7 @@ npm install && npm run build && npm run test ##### Version >= 4.0.0 Note: Version 4.0.0 has not been released yet. ```sh -npm i @serverlessworkflow/sdk-typescript +npm i @serverless-workflow/sdk ``` @@ -55,7 +55,7 @@ npm i @severlessworkflow/sdk-typescript #### Create Workflow using builder API ```typescript -import { workflowBuilder, injectstateBuilder, Specification } from '@serverlessworkflow/sdk-typescript'; +import { workflowBuilder, injectstateBuilder, Specification } from '@serverless-workflow/sdk'; const workflow: Specification.Workflow = workflowBuilder() .id("helloworld") @@ -78,7 +78,7 @@ const workflow: Specification.Workflow = workflowBuilder() #### Create Workflow from JSON/YAML source ```typescript -import { Specification, Workflow } from '@serverlessworkflow/sdk-typescript'; +import { Specification, Workflow } from '@serverless-workflow/sdk'; const source = `id: helloworld version: '1.0' @@ -102,7 +102,7 @@ Where `source` can be in both JSON or YAML format. Having the following workflow instance: ```typescript -import { workflowBuilder, injectstateBuilder, Specification } from '@serverlessworkflow/sdk-typescript'; +import { workflowBuilder, injectstateBuilder, Specification } from '@serverless-workflow/sdk'; const workflow: Specification.Workflow = workflowBuilder() .id("helloworld") @@ -156,7 +156,7 @@ The sdk provides a way to validate if a workflow object is compliant with the se - `validate(): boolean` ```typescript -import {WorkflowValidator, Specification} from '@serverlessworkflow/sdk-typescript'; +import {WorkflowValidator, Specification} from '@serverless-workflow/sdk'; import {Workflow} from "./workflow"; const workflow = { @@ -188,7 +188,7 @@ You can also validate parts of a workflow using `validators`: ```typescript import { ValidateFunction } from 'ajv'; -import { validators, Specification } from '@serverlessworkflow/sdk-typescript'; +import { validators, Specification } from '@serverless-workflow/sdk'; const injectionState: Specification.Injectstate = workflow.states[0]; const injectionStateValidator: ValidateFunction = validators.get('Injectstate'); diff --git a/examples/browser/index.html b/examples/browser/index.html deleted file mode 100644 index 717fdb2..0000000 --- a/examples/browser/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Serveless Workflow JS SDK - - - - - -
- - - - diff --git a/examples/browser/mermaid.html b/examples/browser/mermaid.html deleted file mode 100644 index 95c1249..0000000 --- a/examples/browser/mermaid.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - Serveless Workflow JS SDK - - - - - -
- - - - - - - - diff --git a/examples/node/index.js b/examples/node/index.js deleted file mode 100644 index d4bfb80..0000000 --- a/examples/node/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { workflowBuilder, injectstateBuilder } = require('../../dist'); -const workflow = workflowBuilder() - .id("helloworld") - .version("1.0") - .name("Hello World Workflow") - .description("Inject Hello World") - .start("Hello State") - .states([ - injectstateBuilder() - .name("Hello State") - .data({ - "result": "Hello World!" - }) - .end(true) - .build() - ]) - .build(); -console.log(workflow.id); \ No newline at end of file diff --git a/examples/node/index.ts b/examples/node/index.ts deleted file mode 100644 index 2425e1a..0000000 --- a/examples/node/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { injectstateBuilder, Specification, workflowBuilder } from '../../dist'; - -const workflow: Specification.Workflow = workflowBuilder() - .id('helloworld') - .version('1.0') - .name('Hello World Workflow') - .description('Inject Hello World') - .start('Hello State') - .states([ - injectstateBuilder() - .name('Hello State') - .data({ - result: 'Hello World!', - }) - .end(true) - .build(), - ]) - .build(); -console.log(workflow.id); diff --git a/examples/node/tsconfig.json b/examples/node/tsconfig.json deleted file mode 100644 index a86f07e..0000000 --- a/examples/node/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.base.json" -} diff --git a/package-lock.json b/package-lock.json index cd3ae34..99343c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,106 +1,128 @@ { - "name": "@serverlessworkflow/sdk-typescript", - "version": "4.0.0", - "lockfileVersion": 2, + "name": "@serverless-workflow/sdk", + "version": "1.0.0-alpha2.0", + "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@serverlessworkflow/sdk-typescript", - "version": "4.0.0", + "name": "@serverless-workflow/sdk", + "version": "1.0.0-alpha2.0", "license": "http://www.apache.org/licenses/LICENSE-2.0.txt", "dependencies": { - "ajv": "^8.1.0", + "ajv": "^8.17.1", "js-yaml": "^4.1.0" }, "devDependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0.7", - "@dtsgenerator/replace-namespace": "^1.4.1", - "@rollup/plugin-commonjs": "^19.0.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^13.0.0", - "@types/jest": "^27.0.3", - "@types/js-yaml": "^4.0.1", - "@types/node-fetch": "^2.5.10", - "@types/rimraf": "^3.0.0", - "@types/yargs": "^16.0.1", - "@typescript-eslint/eslint-plugin": "^4.23.0", - "@typescript-eslint/parser": "^4.23.0", - "dtsgenerator": "^3.10.0", - "eslint": "^7.26.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^3.4.0", - "husky": "6.0.0", - "jest": "^27.4.3", - "lint-staged": "11.0.0", - "node-fetch": "^2.6.1", - "prettier": "^2.3.0", - "rimraf": "^3.0.2", - "rollup": "^2.47.0", + "@apidevtools/json-schema-ref-parser": "^11.6.4", + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@types/jest": "^29.5.12", + "@types/js-yaml": "^4.0.9", + "@types/node-fetch": "^2.6.11", + "@types/rimraf": "^4.0.5", + "@types/yargs": "^17.0.32", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "husky": "^9.0.11", + "jest": "^29.7.0", + "json-schema-to-typescript": "^14.1.0", + "lint-staged": "^15.2.7", + "node-fetch": "^3.3.2", + "prettier": "^3.3.3", + "rimraf": "^6.0.1", + "rollup": "^2.79.1", "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", - "rollup-plugin-typescript2": "^0.31.0", + "rollup-plugin-typescript2": "^0.36.0", "shx": "^0.3.4", - "ts-jest": "^27.1.0", - "ts-node": "^9.1.1", - "typescript": "^4.2.4", - "yargs": "^17.0.1" + "ts-jest": "^29.2.2", + "ts-morph": "^23.0.0", + "ts-node": "^10.9.2", + "typescript": "^5.5.3", + "yargs": "^17.7.2" + }, + "engines": { + "node": ">=20.0", + "npm": ">=10.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=15.0", - "npm": ">=7.0.0" + "node": ">=6.0.0" } }, "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "version": "11.6.4", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.6.4.tgz", + "integrity": "sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==", "dev": true, "dependencies": { "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", + "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/philsturgeon" } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -110,18 +132,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -131,24 +141,15 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -156,21 +157,19 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { @@ -183,192 +182,158 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "dev": true, "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -412,13 +377,13 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -427,7 +392,7 @@ "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -446,9 +411,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -517,6 +482,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "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", @@ -605,12 +585,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -620,331 +600,292 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { "node": ">=4" } }, - "node_modules/@babel/template/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/types": { + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@babel/template/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, "engines": { - "node": ">=0.8.0" + "node": ">=12" } }, - "node_modules/@babel/template/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@babel/template/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, "engines": { - "node": ">=6.9.0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/traverse/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/traverse/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@babel/traverse/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/traverse/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/@babel/traverse/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=0.8.0" + "node": "*" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/traverse/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, "engines": { - "node": ">=4" + "node": ">=10.10.0" } }, - "node_modules/@babel/traverse/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" + "node": "*" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@dtsgenerator/replace-namespace": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@dtsgenerator/replace-namespace/-/replace-namespace-1.5.1.tgz", - "integrity": "sha512-euoDqrH2obSzuNQBDxMcIvXluQVgbxH2wUkJeDo36hQBTwSiZaT5FBEz3YmC5uZBwJGDGsHPYCpicuuNYnTHRQ==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "peerDependencies": { - "dtsgenerator": "^3.12.1", - "tslib": "^2.3.1" + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "engines": { + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -970,6 +911,19 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -983,6 +937,45 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -1002,59 +995,59 @@ } }, "node_modules/@jest/console": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.2.tgz", - "integrity": "sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.4.2", - "jest-util": "^27.4.2", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/core": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.3.tgz", - "integrity": "sha512-V9ms3zSxUHxh1E/ZLAiXF7SLejsdFnjWTFizWotMOWvjho0lW5kSjZymhQSodNW0T0ZMQRiha7f8+NcFVm3hJQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "dependencies": { - "@jest/console": "^27.4.2", - "@jest/reporters": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", + "@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", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.3", - "jest-haste-map": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.2", - "jest-resolve-dependencies": "^27.4.2", - "jest-runner": "^27.4.3", - "jest-runtime": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "jest-watcher": "^27.4.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", - "rimraf": "^3.0.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -1066,85 +1059,110 @@ } }, "node_modules/@jest/environment": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.2.tgz", - "integrity": "sha512-uSljKxh/rGlHlmhyeG4ZoVK9hOec+EPBkwTHkHKQ2EqDu5K+MaG9uJZ8o1CbRsSdZqSuhXvJCYhBWsORPPg6qw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.4.2", - "@jest/types": "^27.4.2", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^27.4.2" + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.2.tgz", - "integrity": "sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", - "jest-util": "^27.4.2" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.2.tgz", - "integrity": "sha512-KkfaHEttlGpXYAQTZHgrESiEPx2q/DKAFLGLFda1uGVrqc17snd3YVPhOxlXOHIzVPs+lQ/SDB2EIvxyGzb3Ew==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.2", - "@jest/types": "^27.4.2", - "expect": "^27.4.2" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.2.tgz", - "integrity": "sha512-sp4aqmdBJtjKetEakzDPcZggPcVIF6w9QLkYBbaWDV6e/SIsHnF1S4KtIH91eEc2fp7ep6V/e1xvdfEoho1d2w==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", + "@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.2", - "graceful-fs": "^4.2.4", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.4.2", - "jest-resolve": "^27.4.2", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.2", + "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", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -1155,204 +1173,204 @@ } } }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jest/reporters/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==", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "dependencies": { + "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": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/reporters/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==", + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "*" } }, - "node_modules/@jest/source-map": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", - "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/source-map/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==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-result": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.2.tgz", - "integrity": "sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "dependencies": { - "@jest/console": "^27.4.2", - "@jest/types": "^27.4.2", + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.2.tgz", - "integrity": "sha512-HmHp5mlh9f9GyNej5yCS1JZIFfUGnP9+jEOH5zoq5EmsuZeYD+dGULqyvGDPtuzzbyAFJ6R4+z4SS0VvnFwwGQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", - "jest-runtime": "^27.4.2" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/transform": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.2.tgz", - "integrity": "sha512-RTKcPZllfcmLfnlxBya7aypofhdz05+E6QITe55Ex0rxyerkgjmmpMlvVn11V0cP719Ps6WcDYCnDzxnnJUwKg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.4.2", - "babel-plugin-istanbul": "^6.0.0", + "@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": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-util": "^27.4.2", + "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.1", + "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/types": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", - "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jsdevtools/ono": { @@ -1396,135 +1414,206 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@rollup/plugin-commonjs": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz", - "integrity": "sha512-gBjarfqlC7qs0AutpRW/hrFNm+cd2/QKxhwyFa+srbg1oX7rDsEU3l+W7LAUhsAp9mPJMAkXDhLbQaVwEaE8bA==", + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz", + "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^3.1.0", + "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" + "estree-walker": "^2.0.2", + "glob": "^10.4.1", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" }, "engines": { - "node": ">= 8.0.0" + "node": ">=16.0.0 || 14 >= 14.17" }, "peerDependencies": { - "rollup": "^2.38.3" + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, "node_modules/@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^3.0.8" + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz", - "integrity": "sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", "is-module": "^1.0.0", - "resolve": "^1.19.0" + "resolve": "^1.22.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.42.0" + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 8.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@ts-morph/common": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz", + "integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==", "dev": true, - "engines": { - "node": ">= 6" + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, "node_modules/@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@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.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1532,183 +1621,163 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, - "node_modules/@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "27.0.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", - "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, "node_modules/@types/js-yaml": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.3.tgz", - "integrity": "sha512-5t9BhoORasuF5uCPr+d5/hdB++zRFUTMIZOzbNkr+jZh3yQht4HYbRDyj9fY8n2TZT30iW9huzav73x4NikqWg==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", "dev": true }, "node_modules/@types/node": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.0.tgz", - "integrity": "sha512-nmP+VR4oT0pJUPFbKE4SXj3Yb4Q/kz3M9dSAO1GGMebRKWHQxLfDNmU/yh3xxCJha3N60nQ/JwXWwOE/ZSEVag==", - "dev": true + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "dependencies": { "@types/node": "*", - "form-data": "^3.0.0" + "form-data": "^4.0.0" } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", - "dev": true - }, "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true }, "node_modules/@types/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-4.0.5.tgz", + "integrity": "sha512-DTCZoIQotB2SUJnYgrEx43cQIUYOlNZz0AZPbKU4PSLYTUdML5Gox0++z4F9kQocxStrCmRNhi4x5x/UlwtKUA==", + "deprecated": "This is a stub types definition. rimraf provides its own type definitions, so you do not need this installed.", "dev": true, "dependencies": { - "@types/glob": "*", - "@types/node": "*" + "rimraf": "*" } }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz", - "integrity": "sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "4.31.0", - "@typescript-eslint/scope-manager": "4.31.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", + "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/type-utils": "7.16.1", + "@typescript-eslint/utils": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -1716,50 +1785,27 @@ } } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz", - "integrity": "sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.31.0", - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/typescript-estree": "4.31.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.0.tgz", - "integrity": "sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.1.tgz", + "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.31.0", - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/typescript-estree": "4.31.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -1768,173 +1814,139 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz", - "integrity": "sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==", + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", + "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/visitor-keys": "4.31.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.0.tgz", - "integrity": "sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==", - "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz", - "integrity": "sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==", + "node_modules/@typescript-eslint/type-utils": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz", + "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/visitor-keys": "4.31.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "@typescript-eslint/typescript-estree": "7.16.1", + "@typescript-eslint/utils": "7.16.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.56.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz", - "integrity": "sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==", + "node_modules/@typescript-eslint/types": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz", + "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "4.31.0", - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@yarn-tool/resolve-package": { - "version": "1.0.47", - "resolved": "https://registry.npmjs.org/@yarn-tool/resolve-package/-/resolve-package-1.0.47.tgz", - "integrity": "sha512-Zaw58gQxjQceJqhqybJi1oUDaORT8i2GTgwICPs8v/X/Pkx35FXQba69ldHVg5pQZ6YLKpROXgyHvBaCJOFXiA==", - "dev": true, - "dependencies": { - "pkg-dir": "< 6 >= 5", - "tslib": "^2", - "upath2": "^3.1.13" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz", + "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/visitor-keys": "7.16.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@yarn-tool/resolve-package/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/@typescript-eslint/utils": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz", + "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.16.1", + "@typescript-eslint/types": "7.16.1", + "@typescript-eslint/typescript-estree": "7.16.1" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@yarn-tool/resolve-package/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz", + "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "@typescript-eslint/types": "7.16.1", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@yarn-tool/resolve-package/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=10" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1943,16 +1955,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -1963,63 +1965,32 @@ } }, "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "acorn": "^8.11.0" }, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, "node_modules/ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -2065,16 +2036,16 @@ "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -2104,19 +2075,16 @@ "node": ">=8" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "node_modules/atob": { @@ -2132,22 +2100,21 @@ } }, "node_modules/babel-jest": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.2.tgz", - "integrity": "sha512-MADrjb3KBO2eyZCAc6QaJg6RT5u+6oEdDyHO5HEalnpwQ6LrhTsQF2Kj1Wnz2t6UPXIXPk18dSXXOT0wF5yTxA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "dependencies": { - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", + "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.4.0", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": "^7.8.0" @@ -2170,9 +2137,9 @@ } }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -2195,18 +2162,18 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", - "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/babel-preset-current-node-syntax": { @@ -2233,16 +2200,16 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", - "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.4.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -2255,54 +2222,56 @@ "dev": true }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/bs-logger": { @@ -2333,9 +2302,9 @@ "dev": true }, "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "engines": { "node": ">=6" @@ -2344,12 +2313,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2369,14 +2332,24 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001284", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001284.tgz", - "integrity": "sha512-t28SKa7g6kiIQi6NHeOcKrOrGMzCRrXvlasPwWC26TH2QNdglgzQIRUuJ0cR3NeQPH+5jpuveeeSFDLm2zbkEw==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chalk": { "version": "4.1.2", @@ -2388,7 +2361,7 @@ "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -2404,79 +2377,203 @@ } }, "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, "engines": { - "node": ">=6" + "node": ">=0.10" } }, "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, + "node_modules/code-block-writer": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.1.tgz", + "integrity": "sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==", + "dev": true + }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "node_modules/color-convert": { @@ -2486,6 +2583,9 @@ "dev": true, "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { @@ -2495,9 +2595,9 @@ "dev": true }, "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/combined-stream": { @@ -2513,55 +2613,51 @@ } }, "node_modules/commander": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.1.0.tgz", - "integrity": "sha512-mf45ldcuHSYShkplHHGKWb4TrmwQadxOn7v4WuhDJy0ZVoY5JFajaRDKD0PNe5qXzBX0rhovjTnP6Kz9LETcuA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=18" } }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@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": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/create-require": { @@ -2570,15 +2666,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "dependencies": { - "node-fetch": "2.6.7" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2593,48 +2680,32 @@ "node": ">= 8" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "es5-ext": "^0.10.64", + "type": "^2.7.2" }, "engines": { - "node": ">=8" + "node": ">=0.12" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 12" } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -2648,12 +2719,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -2664,10 +2729,18 @@ } }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deep-is": { "version": "0.1.4", @@ -2676,9 +2749,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2687,7 +2760,7 @@ "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2712,12 +2785,12 @@ } }, "node_modules/diff-sequences": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", - "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { @@ -2744,85 +2817,51 @@ "node": ">=6.0.0" } }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, - "node_modules/dtsgenerator": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/dtsgenerator/-/dtsgenerator-3.13.0.tgz", - "integrity": "sha512-jGCEbUAr7sUubmuYHLx2MAEaWc62rWNMav7/+ZEMMPdhvAld6RTQ5EyU9b6OhP9kJo/ZH0vMyeY9xpIEcL8dFg==", + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "dependencies": { - "commander": "^8.1.0", - "cross-fetch": "^3.1.4", - "debug": "^4.3.2", - "glob": "^7.1.7", - "https-proxy-agent": "^5.0.0", - "js-yaml": "^4.1.0", - "tslib": "^2.3.1", - "typescript": "^4.4.2" + "jake": "^10.8.5" }, "bin": { - "dtsgen": "bin/dtsgen" + "ejs": "bin/cli.js" }, "engines": { - "node": ">= 10.0" + "node": ">=0.10.0" } }, "node_modules/electron-to-chromium": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.11.tgz", - "integrity": "sha512-2OhsaYgsWGhWjx2et8kaUcdktPbBGjKM2X0BReUCKcSCPttEY+hz2zie820JLbttU8jwL92+JJysWwkut3wZgA==", + "version": "1.4.828", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.828.tgz", + "integrity": "sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw==", "dev": true }, "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "engines": { - "node": ">=10" + "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==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2832,497 +2871,202 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/esbuild": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.2.tgz", - "integrity": "sha512-l076A6o/PIgcyM24s0dWmDI/b8RQf41uWoJu9I0M71CtW/YSw5T5NUeXxs5lo2tFQD+O4CW4nBHJXx3OY5NpXg==", + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" }, - "optionalDependencies": { - "esbuild-android-arm64": "0.14.2", - "esbuild-darwin-64": "0.14.2", - "esbuild-darwin-arm64": "0.14.2", - "esbuild-freebsd-64": "0.14.2", - "esbuild-freebsd-arm64": "0.14.2", - "esbuild-linux-32": "0.14.2", - "esbuild-linux-64": "0.14.2", - "esbuild-linux-arm": "0.14.2", - "esbuild-linux-arm64": "0.14.2", - "esbuild-linux-mips64le": "0.14.2", - "esbuild-linux-ppc64le": "0.14.2", - "esbuild-netbsd-64": "0.14.2", - "esbuild-openbsd-64": "0.14.2", - "esbuild-sunos-64": "0.14.2", - "esbuild-windows-32": "0.14.2", - "esbuild-windows-64": "0.14.2", - "esbuild-windows-arm64": "0.14.2" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.2.tgz", - "integrity": "sha512-hEixaKMN3XXCkoe+0WcexO4CcBVU5DCSUT+7P8JZiWZCbAjSkc9b6Yz2X5DSfQmRCtI/cQRU6TfMYrMQ5NBfdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.2.tgz", - "integrity": "sha512-Uq8t0cbJQkxkQdbUfOl2wZqZ/AtLZjvJulR1HHnc96UgyzG9YlCLSDMiqjM+NANEy7/zzvwKJsy3iNC9wwqLJA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": ">=0.10" + } }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.2.tgz", - "integrity": "sha512-619MSa17sr7YCIrUj88KzQu2ESA4jKYtIYfLU/smX6qNgxQt3Y/gzM4s6sgJ4fPQzirvmXgcHv1ZNQAs/Xh48A==", - "cpu": [ - "arm64" - ], + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.2.tgz", - "integrity": "sha512-aP6FE/ZsChZpUV6F3HE3x1Pz0paoYXycJ7oLt06g0G9dhJKknPawXCqQg/WMyD+ldCEZfo7F1kavenPdIT/SGQ==", - "cpu": [ - "x64" - ], + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.2.tgz", - "integrity": "sha512-LSm98WTb1QIhyS83+Po0KTpZNdd2XpVpI9ua5rLWqKWbKeNRFwOsjeiuwBaRNc+O32s9oC2ZMefETxHBV6VNkQ==", - "cpu": [ - "arm64" - ], + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ] + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } }, - "node_modules/esbuild-linux-32": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.2.tgz", - "integrity": "sha512-8VxnNEyeUbiGflTKcuVc5JEPTqXfsx2O6ABwUbfS1Hp26lYPRPC7pKQK5Dxa0MBejGc50jy7YZae3EGQUQ8EkQ==", - "cpu": [ - "ia32" - ], + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=6" + } }, - "node_modules/esbuild-linux-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.2.tgz", - "integrity": "sha512-4bzMS2dNxOJoFIiHId4w+tqQzdnsch71JJV1qZnbnErSFWcR9lRgpSqWnTTFtv6XM+MvltRzSXC5wQ7AEBY6Hg==", - "cpu": [ - "x64" - ], + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.2.tgz", - "integrity": "sha512-PaylahvMHhH8YMfJPMKEqi64qA0Su+d4FNfHKvlKes/2dUe4QxgbwXT9oLVgy8iJdcFMrO7By4R8fS8S0p8aVQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.2.tgz", - "integrity": "sha512-RlIVp0RwJrdtasDF1vTFueLYZ8WuFzxoQ1OoRFZOTyJHCGCNgh7xJIC34gd7B7+RT0CzLBB4LcM5n0LS+hIoww==", - "cpu": [ - "arm64" - ], + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.2.tgz", - "integrity": "sha512-Fdwrq2roFnO5oetIiUQQueZ3+5soCxBSJswg3MvYaXDomj47BN6oAWMZgLrFh1oVrtWrxSDLCJBenYdbm2s+qQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.2.tgz", - "integrity": "sha512-vxptskw8JfCDD9QqpRO0XnsM1osuWeRjPaXX1TwdveLogYsbdFtcuiuK/4FxGiNMUr1ojtnCS2rMPbY8puc5NA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.2.tgz", - "integrity": "sha512-I8+LzYK5iSNpspS9eCV9sW67Rj8FgMHimGri4mKiGAmN0pNfx+hFX146rYtzGtewuxKtTsPywWteHx+hPRLDsw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ] - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.2.tgz", - "integrity": "sha512-120HgMe9elidWUvM2E6mMf0csrGwx8sYDqUIJugyMy1oHm+/nT08bTAVXuwYG/rkMIqsEO9AlMxuYnwR6En/3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.2.tgz", - "integrity": "sha512-Q3xcf9Uyfra9UuCFxoLixVvdigo0daZaKJ97TL2KNA4bxRUPK18wwGUk3AxvgDQZpRmg82w9PnkaNYo7a+24ow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ] - }, - "node_modules/esbuild-windows-32": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.2.tgz", - "integrity": "sha512-TW7O49tPsrq+N1sW8mb3m24j/iDGa4xzAZH4wHWwoIzgtZAYPKC0hpIhufRRG/LA30bdMChO9pjJZ5mtcybtBQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.2.tgz", - "integrity": "sha512-Rym6ViMNmi1E2QuQMWy0AFAfdY0wGwZD73BnzlsQBX5hZBuy/L+Speh7ucUZ16gwsrMM9v86icZUDrSN/lNBKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.2.tgz", - "integrity": "sha512-ZrLbhr0vX5Em/P1faMnHucjVVWPS+m3tktAtz93WkMZLmbRJevhiW1y4CbulBd2z0MEdXZ6emDa1zFHq5O5bSA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=0.8.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/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, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ajv": { @@ -3341,79 +3085,64 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/eslint/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==", + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=0.10" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -3430,9 +3159,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -3441,15 +3170,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -3462,19 +3182,10 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { "node": ">=4.0" @@ -3495,6 +3206,22 @@ "node": ">=0.10.0" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -3518,42 +3245,44 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/expect": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.2.tgz", - "integrity": "sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-regex-util": "^27.4.0" + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expect/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==", + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "type": "^2.7.2" } }, "node_modules/fast-deep-equal": { @@ -3562,15 +3291,15 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3580,7 +3309,19 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/fast-json-stable-stringify": { @@ -3592,27 +3333,55 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==" + }, "node_modules/fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { "bser": "2.1.1" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -3625,10 +3394,31 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3654,42 +3444,145 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flat-cache/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { "asynckit": "^0.4.0", @@ -3700,6 +3593,18 @@ "node": ">= 6" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -3714,25 +3619,16 @@ "node": ">=12" } }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -3744,16 +3640,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -3773,11 +3666,17 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/get-package-type": { "version": "0.1.0", @@ -3801,41 +3700,41 @@ } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3848,16 +3747,16 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -3867,32 +3766,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/has-flag": { "version": "4.0.0", @@ -3900,19 +3784,19 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { - "whatwg-encoding": "^1.0.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, "node_modules/html-escaper": { @@ -3921,33 +3805,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -3958,36 +3815,27 @@ } }, "node_modules/husky": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", - "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", "dev": true, "bin": { - "husky": "lib/bin.js" + "husky": "bin.mjs" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/typicode" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" + "node": ">= 4" } }, "node_modules/import-fresh": { @@ -4007,9 +3855,9 @@ } }, "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -4020,30 +3868,25 @@ }, "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": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -4068,16 +3911,34 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4086,19 +3947,22 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-generator-fn": { @@ -4111,9 +3975,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -4125,7 +3989,7 @@ "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, "node_modules/is-number": { @@ -4137,19 +4001,19 @@ "node": ">=0.12.0" } }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", "dev": true }, "node_modules/is-reference": { @@ -4161,15 +4025,6 @@ "@types/estree": "*" } }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -4182,75 +4037,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "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": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "@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": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps": { @@ -4267,19 +4096,10 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/istanbul-reports": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", - "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -4289,21 +4109,77 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.3.tgz", - "integrity": "sha512-jwsfVABBzuN3Atm+6h6vIEpTs9+VApODLt4dk2qv1WMOpb1weI1IIZfuwpMiWZ62qvWj78MvdvMHIYdUfqrFaA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "@jest/core": "^27.4.3", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^27.4.3" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -4315,73 +4191,73 @@ } }, "node_modules/jest-changed-files": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", - "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", "execa": "^5.0.0", - "throat": "^6.0.1" + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.2.tgz", - "integrity": "sha512-2ePUSru1BGMyzxsMvRfu+tNb+PW60rUyMLJBfw1Nrh5zC8RoTPfF+zbE0JToU31a6ZVe4nnrNKWYRzlghAbL0A==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", + "@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": "^0.7.0", - "expect": "^27.4.2", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", + "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", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-cli": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.3.tgz", - "integrity": "sha512-zZSJBXNC/i8UnJPwcKWsqnhGgIF3uoTYP7th32Zej7KNQJdxzOMj+wCfy2Ox3kU7nXErJ36DtYyXDhfiqaiDRw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "@jest/core": "^27.4.3", - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", + "@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", - "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.4.3", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "prompts": "^2.0.1", - "yargs": "^16.2.0" + "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -4392,313 +4268,254 @@ } } }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-config": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.3.tgz", - "integrity": "sha512-DQ10HTSqYtC2pO7s9j2jw+li4xUnm2wLYWH2o7K1ftB8NyvToHsXoLlXxtsGh3AW9gUQR6KY/4B7G+T/NswJBw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.4.2", - "@jest/types": "^27.4.2", - "babel-jest": "^27.4.2", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.2", - "jest-environment-jsdom": "^27.4.3", - "jest-environment-node": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.2", - "jest-runner": "^27.4.3", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.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", - "pretty-format": "^27.4.2", - "slash": "^3.0.0" + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "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-diff": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.2.tgz", - "integrity": "sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==", + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.4.0", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/jest-docblock": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", - "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" + "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-each": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.2.tgz", - "integrity": "sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==", + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "*" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.3.tgz", - "integrity": "sha512-x1AUVz3G14LpEJs7KIFUaTINT2n0unOUmvdAby3s/sldUpJJetOJifHo1O/EUQC5fNBowggwJbVulko18y6OWw==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.2", - "@jest/fake-timers": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.2", - "jest-util": "^27.4.2", - "jsdom": "^16.6.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-node": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.2.tgz", - "integrity": "sha512-nzTZ5nJ+FabuZPH2YVci7SZIHpvtNRHPt8+vipLkCnAgXGjVzHm7XJWdnNqXbAkExIgiKeVEkVMNZOZE/LeiIg==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.2", - "@jest/fake-timers": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.2", - "jest-util": "^27.4.2" + "detect-newline": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", - "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.2.tgz", - "integrity": "sha512-foiyAEePORUN2eeJnOtcM1y8qW0ShEd9kTjWVL4sVaMcuCJM6gtHegvYPBRT0mpI/bs4ueThM90+Eoj2ncoNsA==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.4.0", - "jest-serializer": "^27.4.0", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.2", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "@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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map/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==", + "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, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-jasmine2": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.2.tgz", - "integrity": "sha512-VO/fyAJSH9u0THjbteFiL8qc93ufU+yW+bdieDc8tzTCWwlWzO53UHS5nFK1qmE8izb5Smkn+XHlVt6/l06MKQ==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.4.2", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.4.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", - "throat": "^6.0.1" + "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, "node_modules/jest-leak-detector": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz", - "integrity": "sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz", - "integrity": "sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.4.2", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.2.tgz", - "integrity": "sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.4.2", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.4.2", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-mock": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.2.tgz", - "integrity": "sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "@types/node": "*" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "engines": { "node": ">=6" @@ -4713,252 +4530,224 @@ } }, "node_modules/jest-regex-util": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", - "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.2.tgz", - "integrity": "sha512-d/zqPjxCzMqHlOdRTg8cTpO9jY+1/T74KazT8Ws/LwmwxV5sRMWOkiLjmzUCDj/5IqA5XHNK4Hkmlq9Kdpb9Sg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.2.tgz", - "integrity": "sha512-hb++cTpqvOWfU49MCP/JQkxmnrhKoAVqXWFjgYXswRSVGk8Q6bDTSvhbCeYXDtXaymY0y7WrrSIlKogClcKJuw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.2" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.3.tgz", - "integrity": "sha512-JgR6Om/j22Fd6ZUUIGTWNcCtuZVYbNrecb4k89W4UyFJoRtHpo2zMKWkmFFFJoqwWGrfrcPLnVBIgkJiTV3cyA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "dependencies": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", + "@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.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.3", - "jest-environment-node": "^27.4.2", - "jest-haste-map": "^27.4.2", - "jest-leak-detector": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.2", - "jest-runtime": "^27.4.2", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.2", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "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": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", - "dev": true, - "dependencies": { + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "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": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/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==", + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-runtime": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.2.tgz", - "integrity": "sha512-eqPgcBaUNaw6j8T5M+dnfAEh6MIrh2YmtskCr9sl50QYpD22Sg+QqHw3J3nmaLzVMbBtOMHFFxLF0Qx8MsZVFQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.2", - "@jest/globals": "^27.4.2", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/jest-runtime/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "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": ">=10" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-serializer": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", - "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "*" } }, "node_modules/jest-snapshot": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.2.tgz", - "integrity": "sha512-DI7lJlNIu6WSQ+esqhnJzEzU70+dV+cNjoF1c+j5FagWEd3KtOyZvVliAH0RWNQ6KSnAAnKSU0qxJ8UXOOhuUQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", + "@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": "^27.4.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.2", - "jest-util": "^27.4.2", + "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": "^27.4.2", - "semver": "^7.3.2" + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", - "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-validate": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.2.tgz", - "integrity": "sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^27.4.2" + "pretty-format": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" @@ -4968,35 +4757,52 @@ } }, "node_modules/jest-watcher": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.2.tgz", - "integrity": "sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.4.2", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { "@types/node": "*", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/js-tokens": { @@ -5016,64 +4822,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -5086,12 +4834,44 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema-to-typescript": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-14.1.0.tgz", + "integrity": "sha512-VIeAFQkn88gFh26MSHWG4uX7TjK/arTw0NVLMZn6vX1WrSF+P6xu5MyEdovu+9PJ0uiS5gm0wzwQvYW9eSq1uw==", + "dev": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^11.5.5", + "@types/json-schema": "^7.0.15", + "@types/lodash": "^4.17.0", + "cli-color": "^2.0.4", + "glob": "^10.3.12", + "is-glob": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "minimist": "^1.2.8", + "mkdirp": "^3.0.1", + "node-fetch": "^3.3.2", + "prettier": "^3.2.5" + }, + "bin": { + "json2ts": "dist/src/cli.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -5100,7 +4880,7 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json5": { @@ -5127,13 +4907,13 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "json-buffer": "3.0.1" } }, "node_modules/kleur": { @@ -5167,236 +4947,529 @@ "node": ">= 0.8.0" } }, + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "node_modules/lint-staged": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz", - "integrity": "sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.1", - "cli-truncate": "^2.1.0", - "commander": "^7.2.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "dedent": "^0.7.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "listr2": "^3.8.2", - "log-symbols": "^4.1.0", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "^3.3.0" + "version": "15.2.7", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.7.tgz", + "integrity": "sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==", + "dev": true, + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.4", + "execa": "~8.0.1", + "lilconfig": "~3.1.1", + "listr2": "~8.2.1", + "micromatch": "~4.0.7", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.4.2" }, "bin": { "lint-staged": "bin/lint-staged.js" }, + "engines": { + "node": ">=18.12.0" + }, "funding": { "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/lint-staged/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, "engines": { - "node": ">= 10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/listr2": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.11.1.tgz", - "integrity": "sha512-ZXQvQfmH9iWLlb4n3hh31yicXDxlzB0pE7MM1zu6kgbVL4ivEsO4H8IPh4E682sC8RjnYO9anose+zT52rrpyg==", + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^1.2.2", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rxjs": "^6.6.7", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=16.17" }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "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==", + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/slice-ansi": { + "node_modules/lint-staged/node_modules/path-key": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/listr2": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.3.tgz", + "integrity": "sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.0.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "dependencies": { - "tmpl": "1.0.5" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-update": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", + "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.2.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^7.0.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/merge-stream": { @@ -5415,34 +5488,34 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, "node_modules/mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.49.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -5458,22 +5531,52 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/ms": { "version": "2.1.2", @@ -5484,70 +5587,62 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" } + ], + "engines": { + "node": ">=10.5.0" } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -5571,16 +5666,10 @@ "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" @@ -5602,9 +5691,9 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { "deep-is": "^0.1.3", @@ -5612,46 +5701,34 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, "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==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "p-limit": "^3.0.2" }, "engines": { "node": ">=10" @@ -5669,6 +5746,12 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -5699,10 +5782,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true }, "node_modules/path-exists": { @@ -5717,21 +5800,12 @@ "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/path-is-network-drive": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/path-is-network-drive/-/path-is-network-drive-1.0.20.tgz", - "integrity": "sha512-p5wCWlRB4+ggzxWshqHH9aF3kAuVu295NaENXmVhThbZPJQBeJdxZTP6CIoUR+kWHDUW56S9YcaO1gXnc/BOxw==", - "dev": true, - "dependencies": { - "tslib": "^2" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -5747,15 +5821,28 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-strip-sep": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.17.tgz", - "integrity": "sha512-+2zIC2fNgdilgV7pTrktY6oOxxZUo9x5zJYfTzxsGze5kSGDDwhA5/0WlBn+sUyv/WuuyYn3OfM+Ue5nhdQUgA==", + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { - "tslib": "^2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -5766,15 +5853,15 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -5783,14 +5870,23 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, - "dependencies": { - "node-modules-regexp": "^1.0.0" + "bin": { + "pidtree": "bin/pidtree.js" }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, "engines": { "node": ">= 6" } @@ -5807,13 +5903,56 @@ "node": ">=8" } }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "semver-compare": "^1.0.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/prelude-ls": { @@ -5826,15 +5965,18 @@ } }, "node_modules/prettier": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.0.tgz", - "integrity": "sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-linter-helpers": { @@ -5850,18 +5992,17 @@ } }, "node_modules/pretty-format": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.2.tgz", - "integrity": "sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -5876,15 +6017,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -5898,25 +6030,30 @@ "node": ">= 6" } }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "engines": { "node": ">=6" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -5948,15 +6085,15 @@ } }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -5965,22 +6102,10 @@ "node": ">= 0.10" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5994,20 +6119,18 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "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" @@ -6044,27 +6167,36 @@ } }, "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -6075,25 +6207,116 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/rimraf/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "dev": true, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rollup": { - "version": "2.56.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz", - "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==", + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -6127,10 +6350,40 @@ } } }, + "node_modules/rollup-plugin-sourcemaps/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/rollup-plugin-sourcemaps/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/rollup-plugin-sourcemaps/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/rollup-plugin-terser": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -6142,18 +6395,31 @@ "rollup": "^2.0.0" } }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/rollup-plugin-typescript2": { - "version": "0.31.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz", - "integrity": "sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q==", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.36.0.tgz", + "integrity": "sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==", "dev": true, "dependencies": { "@rollup/pluginutils": "^4.1.2", - "@yarn-tool/resolve-package": "^1.0.40", "find-cache-dir": "^3.3.2", "fs-extra": "^10.0.0", - "resolve": "^1.20.0", - "tslib": "^2.3.1" + "semver": "^7.5.4", + "tslib": "^2.6.2" }, "peerDependencies": { "rollup": ">=1.26.3", @@ -6196,24 +6462,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6234,32 +6482,11 @@ } ] }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6267,12 +6494,6 @@ "node": ">=10" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, "node_modules/serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -6320,6 +6541,49 @@ "node": ">=4" } }, + "node_modules/shelljs/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shelljs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/shx": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", @@ -6337,10 +6601,16 @@ } }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/sisteransi": { "version": "1.0.5", @@ -6358,32 +6628,47 @@ } }, "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, "node_modules/source-map-resolve": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, "dependencies": { "atob": "^2.1.2", @@ -6391,40 +6676,25 @@ } }, "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -6443,9 +6713,9 @@ } }, "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "engines": { "node": ">=0.6.19" @@ -6465,40 +6735,99 @@ } }, "node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -6542,87 +6871,46 @@ "dependencies": { "has-flag": "^4.0.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "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, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/unts" } }, "node_modules/terser": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", - "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", + "version": "5.31.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.2.tgz", + "integrity": "sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -6633,24 +6921,22 @@ "node": ">=10" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -6665,23 +6951,67 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" + } }, "node_modules/tmpl": { "version": "1.0.5", @@ -6692,7 +7022,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -6710,125 +7040,129 @@ "node": ">=8.0" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" + "node": ">=16" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "typescript": ">=4.2.0" } }, "node_modules/ts-jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.0.tgz", - "integrity": "sha512-ZouWlP03JMtzfNHg0ZeDrxAESYGmVhWyHtIl2/01kBbXaMbTr4Vhv6/GeMxUed6GFg/4ycMo+yU6Eo9gI16xTQ==", + "version": "29.2.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.2.tgz", + "integrity": "sha512-sSW7OooaKT34AAngP6k1VS669a0HdLxkQZnlC7T76sckGCokXFnvJ3yRlQZGRTAoV5K19HfSgCiSwWOSIfcYlg==", "dev": true, "dependencies": { "bs-logger": "0.x", - "esbuild": "~0.14.0", + "ejs": "^3.0.0", "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" + "@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 }, - "@types/jest": { + "@jest/transform": { + "optional": true + }, + "@jest/types": { "optional": true }, "babel-jest": { "optional": true + }, + "esbuild": { + "optional": true } } }, - "node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "node_modules/ts-morph": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz", + "integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==", "dev": true, "dependencies": { + "@ts-morph/common": "~0.24.0", + "code-block-writer": "^13.0.1" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" }, - "engines": { - "node": ">=10.0.0" - }, "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "dev": true }, "node_modules/type-check": { @@ -6864,108 +7198,93 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typescript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", - "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, - "node_modules/upath2": { - "version": "3.1.19", - "resolved": "https://registry.npmjs.org/upath2/-/upath2-3.1.19.tgz", - "integrity": "sha512-d23dQLi8nDWSRTIQwXtaYqMrHuca0As53fNiTLLFDmsGBbepsZepISaB2H1x45bDFN/n3Qw9bydvyZEacTrEWQ==", + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@types/node": "*", - "path-is-network-drive": "^1.0.20", - "path-strip-sep": "^1.0.17", - "tslib": "^2" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "punycode": "^2.1.0" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, "node_modules/v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -6975,42 +7294,13 @@ "makeerror": "1.0.12" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, "engines": { - "node": ">=10" + "node": ">= 8" } }, "node_modules/which": { @@ -7038,6 +7328,24 @@ } }, "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", @@ -7054,55 +7362,97 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "engines": { - "node": ">=8.3.0" + "node": ">=12" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/y18n": { @@ -7115,45 +7465,77 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "dev": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/yn": { @@ -7177,5408 +7559,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@apidevtools/json-schema-ref-parser": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", - "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", - "dev": true, - "requires": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", - "dev": true - }, - "@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "requires": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true - }, - "@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, - "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" - } - }, - "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@dtsgenerator/replace-namespace": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@dtsgenerator/replace-namespace/-/replace-namespace-1.5.1.tgz", - "integrity": "sha512-euoDqrH2obSzuNQBDxMcIvXluQVgbxH2wUkJeDo36hQBTwSiZaT5FBEz3YmC5uZBwJGDGsHPYCpicuuNYnTHRQ==", - "dev": true, - "requires": {} - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.2.tgz", - "integrity": "sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.4.2", - "jest-util": "^27.4.2", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.3.tgz", - "integrity": "sha512-V9ms3zSxUHxh1E/ZLAiXF7SLejsdFnjWTFizWotMOWvjho0lW5kSjZymhQSodNW0T0ZMQRiha7f8+NcFVm3hJQ==", - "dev": true, - "requires": { - "@jest/console": "^27.4.2", - "@jest/reporters": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.3", - "jest-haste-map": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.2", - "jest-resolve-dependencies": "^27.4.2", - "jest-runner": "^27.4.3", - "jest-runtime": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "jest-watcher": "^27.4.2", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.2.tgz", - "integrity": "sha512-uSljKxh/rGlHlmhyeG4ZoVK9hOec+EPBkwTHkHKQ2EqDu5K+MaG9uJZ8o1CbRsSdZqSuhXvJCYhBWsORPPg6qw==", - "dev": true, - "requires": { - "@jest/fake-timers": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.2" - } - }, - "@jest/fake-timers": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.2.tgz", - "integrity": "sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", - "jest-util": "^27.4.2" - } - }, - "@jest/globals": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.2.tgz", - "integrity": "sha512-KkfaHEttlGpXYAQTZHgrESiEPx2q/DKAFLGLFda1uGVrqc17snd3YVPhOxlXOHIzVPs+lQ/SDB2EIvxyGzb3Ew==", - "dev": true, - "requires": { - "@jest/environment": "^27.4.2", - "@jest/types": "^27.4.2", - "expect": "^27.4.2" - } - }, - "@jest/reporters": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.2.tgz", - "integrity": "sha512-sp4aqmdBJtjKetEakzDPcZggPcVIF6w9QLkYBbaWDV6e/SIsHnF1S4KtIH91eEc2fp7ep6V/e1xvdfEoho1d2w==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.4.2", - "jest-resolve": "^27.4.2", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.2", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "dependencies": { - "jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/source-map": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", - "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@jest/test-result": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.2.tgz", - "integrity": "sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==", - "dev": true, - "requires": { - "@jest/console": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.2.tgz", - "integrity": "sha512-HmHp5mlh9f9GyNej5yCS1JZIFfUGnP9+jEOH5zoq5EmsuZeYD+dGULqyvGDPtuzzbyAFJ6R4+z4SS0VvnFwwGQ==", - "dev": true, - "requires": { - "@jest/test-result": "^27.4.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", - "jest-runtime": "^27.4.2" - } - }, - "@jest/transform": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.2.tgz", - "integrity": "sha512-RTKcPZllfcmLfnlxBya7aypofhdz05+E6QITe55Ex0rxyerkgjmmpMlvVn11V0cP719Ps6WcDYCnDzxnnJUwKg==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.4.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-util": "^27.4.2", - "micromatch": "^4.0.4", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@jest/types": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", - "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@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 - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@rollup/plugin-commonjs": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz", - "integrity": "sha512-gBjarfqlC7qs0AutpRW/hrFNm+cd2/QKxhwyFa+srbg1oX7rDsEU3l+W7LAUhsAp9mPJMAkXDhLbQaVwEaE8bA==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - } - }, - "@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.8" - } - }, - "@rollup/plugin-node-resolve": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz", - "integrity": "sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - } - } - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "27.0.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", - "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", - "dev": true, - "requires": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "@types/js-yaml": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.3.tgz", - "integrity": "sha512-5t9BhoORasuF5uCPr+d5/hdB++zRFUTMIZOzbNkr+jZh3yQht4HYbRDyj9fY8n2TZT30iW9huzav73x4NikqWg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/node": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.0.tgz", - "integrity": "sha512-nmP+VR4oT0pJUPFbKE4SXj3Yb4Q/kz3M9dSAO1GGMebRKWHQxLfDNmU/yh3xxCJha3N60nQ/JwXWwOE/ZSEVag==", - "dev": true - }, - "@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/prettier": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", - "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", - "dev": true - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", - "dev": true, - "requires": { - "@types/glob": "*", - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz", - "integrity": "sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.31.0", - "@typescript-eslint/scope-manager": "4.31.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz", - "integrity": "sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.31.0", - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/typescript-estree": "4.31.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.0.tgz", - "integrity": "sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.31.0", - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/typescript-estree": "4.31.0", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz", - "integrity": "sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/visitor-keys": "4.31.0" - } - }, - "@typescript-eslint/types": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.0.tgz", - "integrity": "sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz", - "integrity": "sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/visitor-keys": "4.31.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz", - "integrity": "sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.31.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "@yarn-tool/resolve-package": { - "version": "1.0.47", - "resolved": "https://registry.npmjs.org/@yarn-tool/resolve-package/-/resolve-package-1.0.47.tgz", - "integrity": "sha512-Zaw58gQxjQceJqhqybJi1oUDaORT8i2GTgwICPs8v/X/Pkx35FXQba69ldHVg5pQZ6YLKpROXgyHvBaCJOFXiA==", - "dev": true, - "requires": { - "pkg-dir": "< 6 >= 5", - "tslib": "^2", - "upath2": "^3.1.13" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "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, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - } - } - } - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "babel-jest": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.2.tgz", - "integrity": "sha512-MADrjb3KBO2eyZCAc6QaJg6RT5u+6oEdDyHO5HEalnpwQ6LrhTsQF2Kj1Wnz2t6UPXIXPk18dSXXOT0wF5yTxA==", - "dev": true, - "requires": { - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^27.4.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", - "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", - "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.4.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-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 - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001284", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001284.tgz", - "integrity": "sha512-t28SKa7g6kiIQi6NHeOcKrOrGMzCRrXvlasPwWC26TH2QNdglgzQIRUuJ0cR3NeQPH+5jpuveeeSFDLm2zbkEw==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.1.0.tgz", - "integrity": "sha512-mf45ldcuHSYShkplHHGKWb4TrmwQadxOn7v4WuhDJy0ZVoY5JFajaRDKD0PNe5qXzBX0rhovjTnP6Kz9LETcuA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "requires": { - "node-fetch": "2.6.7" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diff-sequences": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", - "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "dtsgenerator": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/dtsgenerator/-/dtsgenerator-3.13.0.tgz", - "integrity": "sha512-jGCEbUAr7sUubmuYHLx2MAEaWc62rWNMav7/+ZEMMPdhvAld6RTQ5EyU9b6OhP9kJo/ZH0vMyeY9xpIEcL8dFg==", - "dev": true, - "requires": { - "commander": "^8.1.0", - "cross-fetch": "^3.1.4", - "debug": "^4.3.2", - "glob": "^7.1.7", - "https-proxy-agent": "^5.0.0", - "js-yaml": "^4.1.0", - "tslib": "^2.3.1", - "typescript": "^4.4.2" - } - }, - "electron-to-chromium": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.11.tgz", - "integrity": "sha512-2OhsaYgsWGhWjx2et8kaUcdktPbBGjKM2X0BReUCKcSCPttEY+hz2zie820JLbttU8jwL92+JJysWwkut3wZgA==", - "dev": true - }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "esbuild": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.2.tgz", - "integrity": "sha512-l076A6o/PIgcyM24s0dWmDI/b8RQf41uWoJu9I0M71CtW/YSw5T5NUeXxs5lo2tFQD+O4CW4nBHJXx3OY5NpXg==", - "dev": true, - "requires": { - "esbuild-android-arm64": "0.14.2", - "esbuild-darwin-64": "0.14.2", - "esbuild-darwin-arm64": "0.14.2", - "esbuild-freebsd-64": "0.14.2", - "esbuild-freebsd-arm64": "0.14.2", - "esbuild-linux-32": "0.14.2", - "esbuild-linux-64": "0.14.2", - "esbuild-linux-arm": "0.14.2", - "esbuild-linux-arm64": "0.14.2", - "esbuild-linux-mips64le": "0.14.2", - "esbuild-linux-ppc64le": "0.14.2", - "esbuild-netbsd-64": "0.14.2", - "esbuild-openbsd-64": "0.14.2", - "esbuild-sunos-64": "0.14.2", - "esbuild-windows-32": "0.14.2", - "esbuild-windows-64": "0.14.2", - "esbuild-windows-arm64": "0.14.2" - } - }, - "esbuild-android-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.2.tgz", - "integrity": "sha512-hEixaKMN3XXCkoe+0WcexO4CcBVU5DCSUT+7P8JZiWZCbAjSkc9b6Yz2X5DSfQmRCtI/cQRU6TfMYrMQ5NBfdw==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.2.tgz", - "integrity": "sha512-Uq8t0cbJQkxkQdbUfOl2wZqZ/AtLZjvJulR1HHnc96UgyzG9YlCLSDMiqjM+NANEy7/zzvwKJsy3iNC9wwqLJA==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.2.tgz", - "integrity": "sha512-619MSa17sr7YCIrUj88KzQu2ESA4jKYtIYfLU/smX6qNgxQt3Y/gzM4s6sgJ4fPQzirvmXgcHv1ZNQAs/Xh48A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.2.tgz", - "integrity": "sha512-aP6FE/ZsChZpUV6F3HE3x1Pz0paoYXycJ7oLt06g0G9dhJKknPawXCqQg/WMyD+ldCEZfo7F1kavenPdIT/SGQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.2.tgz", - "integrity": "sha512-LSm98WTb1QIhyS83+Po0KTpZNdd2XpVpI9ua5rLWqKWbKeNRFwOsjeiuwBaRNc+O32s9oC2ZMefETxHBV6VNkQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.2.tgz", - "integrity": "sha512-8VxnNEyeUbiGflTKcuVc5JEPTqXfsx2O6ABwUbfS1Hp26lYPRPC7pKQK5Dxa0MBejGc50jy7YZae3EGQUQ8EkQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.2.tgz", - "integrity": "sha512-4bzMS2dNxOJoFIiHId4w+tqQzdnsch71JJV1qZnbnErSFWcR9lRgpSqWnTTFtv6XM+MvltRzSXC5wQ7AEBY6Hg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.2.tgz", - "integrity": "sha512-PaylahvMHhH8YMfJPMKEqi64qA0Su+d4FNfHKvlKes/2dUe4QxgbwXT9oLVgy8iJdcFMrO7By4R8fS8S0p8aVQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.2.tgz", - "integrity": "sha512-RlIVp0RwJrdtasDF1vTFueLYZ8WuFzxoQ1OoRFZOTyJHCGCNgh7xJIC34gd7B7+RT0CzLBB4LcM5n0LS+hIoww==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.2.tgz", - "integrity": "sha512-Fdwrq2roFnO5oetIiUQQueZ3+5soCxBSJswg3MvYaXDomj47BN6oAWMZgLrFh1oVrtWrxSDLCJBenYdbm2s+qQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.2.tgz", - "integrity": "sha512-vxptskw8JfCDD9QqpRO0XnsM1osuWeRjPaXX1TwdveLogYsbdFtcuiuK/4FxGiNMUr1ojtnCS2rMPbY8puc5NA==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.2.tgz", - "integrity": "sha512-I8+LzYK5iSNpspS9eCV9sW67Rj8FgMHimGri4mKiGAmN0pNfx+hFX146rYtzGtewuxKtTsPywWteHx+hPRLDsw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.2.tgz", - "integrity": "sha512-120HgMe9elidWUvM2E6mMf0csrGwx8sYDqUIJugyMy1oHm+/nT08bTAVXuwYG/rkMIqsEO9AlMxuYnwR6En/3Q==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.2.tgz", - "integrity": "sha512-Q3xcf9Uyfra9UuCFxoLixVvdigo0daZaKJ97TL2KNA4bxRUPK18wwGUk3AxvgDQZpRmg82w9PnkaNYo7a+24ow==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.2.tgz", - "integrity": "sha512-TW7O49tPsrq+N1sW8mb3m24j/iDGa4xzAZH4wHWwoIzgtZAYPKC0hpIhufRRG/LA30bdMChO9pjJZ5mtcybtBQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.2.tgz", - "integrity": "sha512-Rym6ViMNmi1E2QuQMWy0AFAfdY0wGwZD73BnzlsQBX5hZBuy/L+Speh7ucUZ16gwsrMM9v86icZUDrSN/lNBKg==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.2.tgz", - "integrity": "sha512-ZrLbhr0vX5Em/P1faMnHucjVVWPS+m3tktAtz93WkMZLmbRJevhiW1y4CbulBd2z0MEdXZ6emDa1zFHq5O5bSA==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expect": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.2.tgz", - "integrity": "sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "ansi-styles": "^5.0.0", - "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-regex-util": "^27.4.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "husky": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", - "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", - "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.3.tgz", - "integrity": "sha512-jwsfVABBzuN3Atm+6h6vIEpTs9+VApODLt4dk2qv1WMOpb1weI1IIZfuwpMiWZ62qvWj78MvdvMHIYdUfqrFaA==", - "dev": true, - "requires": { - "@jest/core": "^27.4.3", - "import-local": "^3.0.2", - "jest-cli": "^27.4.3" - } - }, - "jest-changed-files": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", - "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "execa": "^5.0.0", - "throat": "^6.0.1" - } - }, - "jest-circus": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.2.tgz", - "integrity": "sha512-2ePUSru1BGMyzxsMvRfu+tNb+PW60rUyMLJBfw1Nrh5zC8RoTPfF+zbE0JToU31a6ZVe4nnrNKWYRzlghAbL0A==", - "dev": true, - "requires": { - "@jest/environment": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.4.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - } - }, - "jest-cli": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.3.tgz", - "integrity": "sha512-zZSJBXNC/i8UnJPwcKWsqnhGgIF3uoTYP7th32Zej7KNQJdxzOMj+wCfy2Ox3kU7nXErJ36DtYyXDhfiqaiDRw==", - "dev": true, - "requires": { - "@jest/core": "^27.4.3", - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.4.3", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "dependencies": { - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "jest-config": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.3.tgz", - "integrity": "sha512-DQ10HTSqYtC2pO7s9j2jw+li4xUnm2wLYWH2o7K1ftB8NyvToHsXoLlXxtsGh3AW9gUQR6KY/4B7G+T/NswJBw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.4.2", - "@jest/types": "^27.4.2", - "babel-jest": "^27.4.2", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.2", - "jest-environment-jsdom": "^27.4.3", - "jest-environment-node": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.2", - "jest-runner": "^27.4.3", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "micromatch": "^4.0.4", - "pretty-format": "^27.4.2", - "slash": "^3.0.0" - } - }, - "jest-diff": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.2.tgz", - "integrity": "sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.4.0", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" - } - }, - "jest-docblock": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", - "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.2.tgz", - "integrity": "sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.2" - } - }, - "jest-environment-jsdom": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.3.tgz", - "integrity": "sha512-x1AUVz3G14LpEJs7KIFUaTINT2n0unOUmvdAby3s/sldUpJJetOJifHo1O/EUQC5fNBowggwJbVulko18y6OWw==", - "dev": true, - "requires": { - "@jest/environment": "^27.4.2", - "@jest/fake-timers": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.2", - "jest-util": "^27.4.2", - "jsdom": "^16.6.0" - } - }, - "jest-environment-node": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.2.tgz", - "integrity": "sha512-nzTZ5nJ+FabuZPH2YVci7SZIHpvtNRHPt8+vipLkCnAgXGjVzHm7XJWdnNqXbAkExIgiKeVEkVMNZOZE/LeiIg==", - "dev": true, - "requires": { - "@jest/environment": "^27.4.2", - "@jest/fake-timers": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.2", - "jest-util": "^27.4.2" - } - }, - "jest-get-type": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", - "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", - "dev": true - }, - "jest-haste-map": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.2.tgz", - "integrity": "sha512-foiyAEePORUN2eeJnOtcM1y8qW0ShEd9kTjWVL4sVaMcuCJM6gtHegvYPBRT0mpI/bs4ueThM90+Eoj2ncoNsA==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.4.0", - "jest-serializer": "^27.4.0", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.2", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "dependencies": { - "jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-jasmine2": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.2.tgz", - "integrity": "sha512-VO/fyAJSH9u0THjbteFiL8qc93ufU+yW+bdieDc8tzTCWwlWzO53UHS5nFK1qmE8izb5Smkn+XHlVt6/l06MKQ==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.4.2", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.4.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-runtime": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.2", - "throat": "^6.0.1" - } - }, - "jest-leak-detector": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz", - "integrity": "sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==", - "dev": true, - "requires": { - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" - } - }, - "jest-matcher-utils": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz", - "integrity": "sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.4.2", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.2" - } - }, - "jest-message-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.2.tgz", - "integrity": "sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.4.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.4.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.0" - } - } - } - }, - "jest-mock": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.2.tgz", - "integrity": "sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", - "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", - "dev": true - }, - "jest-resolve": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.2.tgz", - "integrity": "sha512-d/zqPjxCzMqHlOdRTg8cTpO9jY+1/T74KazT8Ws/LwmwxV5sRMWOkiLjmzUCDj/5IqA5XHNK4Hkmlq9Kdpb9Sg==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.2.tgz", - "integrity": "sha512-hb++cTpqvOWfU49MCP/JQkxmnrhKoAVqXWFjgYXswRSVGk8Q6bDTSvhbCeYXDtXaymY0y7WrrSIlKogClcKJuw==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.2" - } - }, - "jest-runner": { - "version": "27.4.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.3.tgz", - "integrity": "sha512-JgR6Om/j22Fd6ZUUIGTWNcCtuZVYbNrecb4k89W4UyFJoRtHpo2zMKWkmFFFJoqwWGrfrcPLnVBIgkJiTV3cyA==", - "dev": true, - "requires": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.2", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.3", - "jest-environment-node": "^27.4.2", - "jest-haste-map": "^27.4.2", - "jest-leak-detector": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.2", - "jest-runtime": "^27.4.2", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.2", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "dependencies": { - "jest-worker": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz", - "integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-runtime": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.2.tgz", - "integrity": "sha512-eqPgcBaUNaw6j8T5M+dnfAEh6MIrh2YmtskCr9sl50QYpD22Sg+QqHw3J3nmaLzVMbBtOMHFFxLF0Qx8MsZVFQ==", - "dev": true, - "requires": { - "@jest/console": "^27.4.2", - "@jest/environment": "^27.4.2", - "@jest/globals": "^27.4.2", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.2", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-mock": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.2", - "jest-snapshot": "^27.4.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "jest-serializer": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", - "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-snapshot": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.2.tgz", - "integrity": "sha512-DI7lJlNIu6WSQ+esqhnJzEzU70+dV+cNjoF1c+j5FagWEd3KtOyZvVliAH0RWNQ6KSnAAnKSU0qxJ8UXOOhuUQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/parser": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.4.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.2", - "jest-matcher-utils": "^27.4.2", - "jest-message-util": "^27.4.2", - "jest-resolve": "^27.4.2", - "jest-util": "^27.4.2", - "natural-compare": "^1.4.0", - "pretty-format": "^27.4.2", - "semver": "^7.3.2" - } - }, - "jest-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", - "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.2.tgz", - "integrity": "sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "leven": "^3.1.0", - "pretty-format": "^27.4.2" - }, - "dependencies": { - "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.2.tgz", - "integrity": "sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==", - "dev": true, - "requires": { - "@jest/test-result": "^27.4.2", - "@jest/types": "^27.4.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.4.2", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "lint-staged": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz", - "integrity": "sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw==", - "dev": true, - "requires": { - "chalk": "^4.1.1", - "cli-truncate": "^2.1.0", - "commander": "^7.2.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "dedent": "^0.7.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "listr2": "^3.8.2", - "log-symbols": "^4.1.0", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "^3.3.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - } - } - }, - "listr2": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.11.1.tgz", - "integrity": "sha512-ZXQvQfmH9iWLlb4n3hh31yicXDxlzB0pE7MM1zu6kgbVL4ivEsO4H8IPh4E682sC8RjnYO9anose+zT52rrpyg==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^1.2.2", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rxjs": "^6.6.7", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "dev": true - }, - "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "dev": true, - "requires": { - "mime-db": "1.49.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-network-drive": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/path-is-network-drive/-/path-is-network-drive-1.0.20.tgz", - "integrity": "sha512-p5wCWlRB4+ggzxWshqHH9aF3kAuVu295NaENXmVhThbZPJQBeJdxZTP6CIoUR+kWHDUW56S9YcaO1gXnc/BOxw==", - "dev": true, - "requires": { - "tslib": "^2" - } - }, - "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 - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-strip-sep": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.17.tgz", - "integrity": "sha512-+2zIC2fNgdilgV7pTrktY6oOxxZUo9x5zJYfTzxsGze5kSGDDwhA5/0WlBn+sUyv/WuuyYn3OfM+Ue5nhdQUgA==", - "dev": true, - "requires": { - "tslib": "^2" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.0.tgz", - "integrity": "sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-format": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.2.tgz", - "integrity": "sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==", - "dev": true, - "requires": { - "@jest/types": "^27.4.2", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "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==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.56.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz", - "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-sourcemaps": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", - "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.9", - "source-map-resolve": "^0.6.0" - } - }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - } - }, - "rollup-plugin-typescript2": { - "version": "0.31.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz", - "integrity": "sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^4.1.2", - "@yarn-tool/resolve-package": "^1.0.40", - "find-cache-dir": "^3.3.2", - "fs-extra": "^10.0.0", - "resolve": "^1.20.0", - "tslib": "^2.3.1" - }, - "dependencies": { - "@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "dev": true, - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - } - } - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "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, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shx": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", - "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", - "dev": true, - "requires": { - "minimist": "^1.2.3", - "shelljs": "^0.8.5" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } - } - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "terser": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", - "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "ts-jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.0.tgz", - "integrity": "sha512-ZouWlP03JMtzfNHg0ZeDrxAESYGmVhWyHtIl2/01kBbXaMbTr4Vhv6/GeMxUed6GFg/4ycMo+yU6Eo9gI16xTQ==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "esbuild": "~0.14.0", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - } - }, - "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", - "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", - "dev": true - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, - "upath2": { - "version": "3.1.19", - "resolved": "https://registry.npmjs.org/upath2/-/upath2-3.1.19.tgz", - "integrity": "sha512-d23dQLi8nDWSRTIQwXtaYqMrHuca0As53fNiTLLFDmsGBbepsZepISaB2H1x45bDFN/n3Qw9bydvyZEacTrEWQ==", - "dev": true, - "requires": { - "@types/node": "*", - "path-is-network-drive": "^1.0.20", - "path-strip-sep": "^1.0.17", - "tslib": "^2" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "v8-to-istanbul": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", - "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true, - "requires": {} - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - }, - "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 - } } } diff --git a/package.json b/package.json index e5f7e1e..f87bdb0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "@serverlessworkflow/sdk-typescript", - "version": "4.0.0", - "schemaVersion": "0.8", + "name": "@serverless-workflow/sdk", + "version": "1.0.0-alpha2.0", + "schemaVersion": "1.0.0-alpha2", "description": "Typescript SDK for Serverless Workflow Specification", "main": "umd/index.umd.min.js", "browser": "umd/index.umd.min.js", @@ -20,7 +20,7 @@ "tools:generate-merged_json": "npx ts-node --project ./tools/tsconfig.json ./tools/generate-merged_json.ts", "tools:generate-definitions": "npx ts-node --project ./tools/tsconfig.json ./tools/generate-definitions.ts", "tools:generate-builders": "npx ts-node --project ./tools/tsconfig.json ./tools/generate-builders.ts", - "update-code-base": "npm run tools:download-schemas && tools:generate-merged_json && npm run tools:generate-definitions && npm run tools:generate-builders && npm run format && npm run test", + "update-code-base": "npm run tools:download-schemas && npm run tools:generate-definitions && npm run tools:generate-builders && npm run format && npm run test", "format": "npx prettier --write \"**/*.ts\"", "lint": "npx eslint . --ext .ts && npx prettier --check \"**/*.ts\"", "pretest": "npx rimraf out-tsc", @@ -34,45 +34,45 @@ "prepublish": "husky install" }, "dependencies": { - "ajv": "^8.1.0", + "ajv": "^8.17.1", "js-yaml": "^4.1.0" }, "devDependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0.7", - "@dtsgenerator/replace-namespace": "^1.4.1", - "@rollup/plugin-commonjs": "^19.0.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^13.0.0", - "@types/jest": "^27.0.3", - "@types/js-yaml": "^4.0.1", - "@types/node-fetch": "^2.5.10", - "@types/rimraf": "^3.0.0", - "@types/yargs": "^16.0.1", - "@typescript-eslint/eslint-plugin": "^4.23.0", - "@typescript-eslint/parser": "^4.23.0", - "dtsgenerator": "^3.10.0", - "eslint": "^7.26.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^3.4.0", - "husky": "6.0.0", - "jest": "^27.4.3", - "lint-staged": "11.0.0", - "node-fetch": "^2.6.1", - "prettier": "^2.3.0", - "rimraf": "^3.0.2", - "rollup": "^2.47.0", + "@apidevtools/json-schema-ref-parser": "^11.6.4", + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@types/jest": "^29.5.12", + "@types/js-yaml": "^4.0.9", + "@types/node-fetch": "^2.6.11", + "@types/rimraf": "^4.0.5", + "@types/yargs": "^17.0.32", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "husky": "^9.0.11", + "jest": "^29.7.0", + "json-schema-to-typescript": "^14.1.0", + "lint-staged": "^15.2.7", + "node-fetch": "^3.3.2", + "prettier": "^3.3.3", + "rimraf": "^6.0.1", + "rollup": "^2.79.1", "rollup-plugin-sourcemaps": "^0.6.3", "rollup-plugin-terser": "^7.0.2", - "rollup-plugin-typescript2": "^0.31.0", + "rollup-plugin-typescript2": "^0.36.0", "shx": "^0.3.4", - "ts-jest": "^27.1.0", - "ts-node": "^9.1.1", - "typescript": "^4.2.4", - "yargs": "^17.0.1" + "ts-jest": "^29.2.2", + "ts-morph": "^23.0.0", + "ts-node": "^10.9.2", + "typescript": "^5.5.3", + "yargs": "^17.7.2" }, "repository": { "type": "git", - "url": "https://github.com/serverlessworkflow/sdk-typescript.git" + "url": "https://github.com/serverless-workflow/sdk.git" }, "author": { "name": "Serverless Workflow Contributors", @@ -80,11 +80,11 @@ }, "license": "http://www.apache.org/licenses/LICENSE-2.0.txt", "bugs": { - "url": "https://github.com/serverlessworkflow/sdk-typescript/issues" + "url": "https://github.com/serverless-workflow/sdk/issues" }, "homepage": "https://serverlessworkflow.io", "engines": { - "node": ">=15.0", - "npm": ">=7.0.0" + "node": ">=20.0", + "npm": ">=10.0.0" } } diff --git a/src/index.ts b/src/index.ts index bacbdc6..24aa012 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,6 +13,3 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -export * from './serverless-workflow-sdk'; -export * from './lib/diagram'; diff --git a/src/lib/builder.ts b/src/lib/builder.ts deleted file mode 100644 index 5034729..0000000 --- a/src/lib/builder.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Represents a builder proxy - */ -export type Builder = { - build: () => T; -} & { - [k in T extends T ? keyof T : never]-?: (arg: T[k]) => Builder; -}; - -/** - * A factory for builders that proxy properties assignations and validate against schema on build - * @param {Function} buildingFn The function used to validate and produce the object on build() - * @returns {Builder} A builder proxy - */ -export function builder(buildingFn?: (data: Partial) => () => T): Builder { - const data: Partial = {}; - const defaultBuildingFn = - (data: Partial): (() => T) => - () => - data as T; - const proxy = new Proxy({} as Builder, { - get: (_, prop) => { - if (prop === 'build') { - return (buildingFn || defaultBuildingFn)(data); - } - return (value: unknown): Builder => { - (data as any)[prop.toString()] = value; - return proxy; - }; - }, - set: () => { - return false; - }, - }); - return proxy; -} diff --git a/src/lib/builders/action-builder.ts b/src/lib/builders/action-builder.ts deleted file mode 100644 index 9a9b52a..0000000 --- a/src/lib/builders/action-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Action} data The underlying object - * @returns {Specification.Action} The validated underlying object - */ -function actionBuildingFn(data: Specification.Action): () => Specification.Action { - return () => { - const model = new Specification.Action(data); - - validate('Action', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Action` - * @returns {Specification.Action} A builder for `Specification.Action` - */ -export function actionBuilder(): Builder { - return builder(actionBuildingFn); -} diff --git a/src/lib/builders/actiondatafilter-builder.ts b/src/lib/builders/actiondatafilter-builder.ts deleted file mode 100644 index cd2278b..0000000 --- a/src/lib/builders/actiondatafilter-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Actiondatafilter} data The underlying object - * @returns {Specification.Actiondatafilter} The validated underlying object - */ -function actiondatafilterBuildingFn(data: Specification.Actiondatafilter): () => Specification.Actiondatafilter { - return () => { - const model = new Specification.Actiondatafilter(data); - - validate('Actiondatafilter', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Actiondatafilter` - * @returns {Specification.Actiondatafilter} A builder for `Specification.Actiondatafilter` - */ -export function actiondatafilterBuilder(): Builder { - return builder(actiondatafilterBuildingFn); -} diff --git a/src/lib/builders/authdef-builder.ts b/src/lib/builders/authdef-builder.ts deleted file mode 100644 index 4cbd711..0000000 --- a/src/lib/builders/authdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Authdef} data The underlying object - * @returns {Specification.Authdef} The validated underlying object - */ -function authdefBuildingFn(data: Specification.Authdef): () => Specification.Authdef { - return () => { - const model = new Specification.Authdef(data); - - validate('Authdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Authdef` - * @returns {Specification.Authdef} A builder for `Specification.Authdef` - */ -export function authdefBuilder(): Builder { - return builder(authdefBuildingFn); -} diff --git a/src/lib/builders/basicpropsdef-builder.ts b/src/lib/builders/basicpropsdef-builder.ts deleted file mode 100644 index 49c359c..0000000 --- a/src/lib/builders/basicpropsdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Basicpropsdef} data The underlying object - * @returns {Specification.Basicpropsdef} The validated underlying object - */ -function basicpropsdefBuildingFn(data: Specification.Basicpropsdef): () => Specification.Basicpropsdef { - return () => { - const model = new Specification.Basicpropsdef(data); - - validate('Basicpropsdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Basicpropsdef` - * @returns {Specification.Basicpropsdef} A builder for `Specification.Basicpropsdef` - */ -export function basicpropsdefBuilder(): Builder { - return builder(basicpropsdefBuildingFn); -} diff --git a/src/lib/builders/bearerpropsdef-builder.ts b/src/lib/builders/bearerpropsdef-builder.ts deleted file mode 100644 index 6c372fd..0000000 --- a/src/lib/builders/bearerpropsdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Bearerpropsdef} data The underlying object - * @returns {Specification.Bearerpropsdef} The validated underlying object - */ -function bearerpropsdefBuildingFn(data: Specification.Bearerpropsdef): () => Specification.Bearerpropsdef { - return () => { - const model = new Specification.Bearerpropsdef(data); - - validate('Bearerpropsdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Bearerpropsdef` - * @returns {Specification.Bearerpropsdef} A builder for `Specification.Bearerpropsdef` - */ -export function bearerpropsdefBuilder(): Builder { - return builder(bearerpropsdefBuildingFn); -} diff --git a/src/lib/builders/branch-builder.ts b/src/lib/builders/branch-builder.ts deleted file mode 100644 index 50bd435..0000000 --- a/src/lib/builders/branch-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Branch} data The underlying object - * @returns {Specification.Branch} The validated underlying object - */ -function branchBuildingFn(data: Specification.Branch): () => Specification.Branch { - return () => { - const model = new Specification.Branch(data); - - validate('Branch', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Branch` - * @returns {Specification.Branch} A builder for `Specification.Branch` - */ -export function branchBuilder(): Builder { - return builder(branchBuildingFn); -} diff --git a/src/lib/builders/callbackstate-builder.ts b/src/lib/builders/callbackstate-builder.ts deleted file mode 100644 index b89a299..0000000 --- a/src/lib/builders/callbackstate-builder.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; -import { setEndValueIfNoTransition } from '../definitions/utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Callbackstate} data The underlying object - * @returns {Specification.Callbackstate} The validated underlying object - */ -function callbackstateBuildingFn(data: Specification.Callbackstate): () => Specification.Callbackstate { - return () => { - const model = new Specification.Callbackstate(data); - - setEndValueIfNoTransition(model); - - validate('Callbackstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Callbackstate` - * @returns {Specification.Callbackstate} A builder for `Specification.Callbackstate` - */ -export function callbackstateBuilder(): Builder { - return builder(callbackstateBuildingFn); -} diff --git a/src/lib/builders/continueasdef-builder.ts b/src/lib/builders/continueasdef-builder.ts deleted file mode 100644 index db6f417..0000000 --- a/src/lib/builders/continueasdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Continueasdef} data The underlying object - * @returns {Specification.Continueasdef} The validated underlying object - */ -function continueasdefBuildingFn(data: Specification.Continueasdef): () => Specification.Continueasdef { - return () => { - const model = new Specification.Continueasdef(data); - - validate('Continueasdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Continueasdef` - * @returns {Specification.Continueasdef} A builder for `Specification.Continueasdef` - */ -export function continueasdefBuilder(): Builder { - return builder(continueasdefBuildingFn); -} diff --git a/src/lib/builders/correlation-def-builder.ts b/src/lib/builders/correlation-def-builder.ts deleted file mode 100644 index 048ddf3..0000000 --- a/src/lib/builders/correlation-def-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.CorrelationDef} data The underlying object - * @returns {Specification.CorrelationDef} The validated underlying object - */ -function correlationDefBuildingFn(data: Specification.CorrelationDef): () => Specification.CorrelationDef { - return () => { - const model = new Specification.CorrelationDef(data); - - validate('CorrelationDef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.CorrelationDef` - * @returns {Specification.CorrelationDef} A builder for `Specification.CorrelationDef` - */ -export function correlationDefBuilder(): Builder { - return builder(correlationDefBuildingFn); -} diff --git a/src/lib/builders/crondef-builder.ts b/src/lib/builders/crondef-builder.ts deleted file mode 100644 index f8172fa..0000000 --- a/src/lib/builders/crondef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Crondef} data The underlying object - * @returns {Specification.Crondef} The validated underlying object - */ -function crondefBuildingFn(data: Specification.Crondef): () => Specification.Crondef { - return () => { - const model = new Specification.Crondef(data); - - validate('Crondef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Crondef` - * @returns {Specification.Crondef} A builder for `Specification.Crondef` - */ -export function crondefBuilder(): Builder { - return builder(crondefBuildingFn); -} diff --git a/src/lib/builders/databasedswitchstate-builder.ts b/src/lib/builders/databasedswitchstate-builder.ts deleted file mode 100644 index eabbce3..0000000 --- a/src/lib/builders/databasedswitchstate-builder.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Databasedswitchstate} data The underlying object - * @returns {Specification.Databasedswitchstate} The validated underlying object - */ -function databasedswitchstateBuildingFn( - data: Specification.Databasedswitchstate -): () => Specification.Databasedswitchstate { - return () => { - const model = new Specification.Databasedswitchstate(data); - - validate('Databasedswitchstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Databasedswitchstate` - * @returns {Specification.Databasedswitchstate} A builder for `Specification.Databasedswitchstate` - */ -export function databasedswitchstateBuilder(): Builder { - return builder(databasedswitchstateBuildingFn); -} diff --git a/src/lib/builders/defaultconditiondef-builder.ts b/src/lib/builders/defaultconditiondef-builder.ts deleted file mode 100644 index 0fda1ac..0000000 --- a/src/lib/builders/defaultconditiondef-builder.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Defaultconditiondef} data The underlying object - * @returns {Specification.Defaultconditiondef} The validated underlying object - */ -function defaultconditiondefBuildingFn( - data: Specification.Defaultconditiondef -): () => Specification.Defaultconditiondef { - return () => { - const model = new Specification.Defaultconditiondef(data); - - validate('Defaultconditiondef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Defaultconditiondef` - * @returns {Specification.Defaultconditiondef} A builder for `Specification.Defaultconditiondef` - */ -export function defaultconditiondefBuilder(): Builder { - return builder(defaultconditiondefBuildingFn); -} diff --git a/src/lib/builders/end-builder.ts b/src/lib/builders/end-builder.ts deleted file mode 100644 index 067766a..0000000 --- a/src/lib/builders/end-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.End} data The underlying object - * @returns {Specification.End} The validated underlying object - */ -function endBuildingFn(data: Specification.End): () => Specification.End { - return () => { - const model = new Specification.End(data); - - validate('End', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.End` - * @returns {Specification.End} A builder for `Specification.End` - */ -export function endBuilder(): Builder { - return builder(endBuildingFn); -} diff --git a/src/lib/builders/enddatacondition-builder.ts b/src/lib/builders/enddatacondition-builder.ts deleted file mode 100644 index 8f5e44e..0000000 --- a/src/lib/builders/enddatacondition-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Enddatacondition} data The underlying object - * @returns {Specification.Enddatacondition} The validated underlying object - */ -function enddataconditionBuildingFn(data: Specification.Enddatacondition): () => Specification.Enddatacondition { - return () => { - const model = new Specification.Enddatacondition(data); - - validate('Enddatacondition', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Enddatacondition` - * @returns {Specification.Enddatacondition} A builder for `Specification.Enddatacondition` - */ -export function enddataconditionBuilder(): Builder { - return builder(enddataconditionBuildingFn); -} diff --git a/src/lib/builders/endeventcondition-builder.ts b/src/lib/builders/endeventcondition-builder.ts deleted file mode 100644 index b6792bb..0000000 --- a/src/lib/builders/endeventcondition-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Endeventcondition} data The underlying object - * @returns {Specification.Endeventcondition} The validated underlying object - */ -function endeventconditionBuildingFn(data: Specification.Endeventcondition): () => Specification.Endeventcondition { - return () => { - const model = new Specification.Endeventcondition(data); - - validate('Endeventcondition', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Endeventcondition` - * @returns {Specification.Endeventcondition} A builder for `Specification.Endeventcondition` - */ -export function endeventconditionBuilder(): Builder { - return builder(endeventconditionBuildingFn); -} diff --git a/src/lib/builders/error-builder.ts b/src/lib/builders/error-builder.ts deleted file mode 100644 index 2400aef..0000000 --- a/src/lib/builders/error-builder.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; -import { setEndValueIfNoTransition } from '../definitions/utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Error} data The underlying object - * @returns {Specification.Error} The validated underlying object - */ -function errorBuildingFn(data: Specification.Error): () => Specification.Error { - return () => { - const model = new Specification.Error(data); - - setEndValueIfNoTransition(model); - - validate('Error', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Error` - * @returns {Specification.Error} A builder for `Specification.Error` - */ -export function errorBuilder(): Builder { - return builder(errorBuildingFn); -} diff --git a/src/lib/builders/errordef-builder.ts b/src/lib/builders/errordef-builder.ts deleted file mode 100644 index 461aee0..0000000 --- a/src/lib/builders/errordef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Errordef} data The underlying object - * @returns {Specification.Errordef} The validated underlying object - */ -function errordefBuildingFn(data: Specification.Errordef): () => Specification.Errordef { - return () => { - const model = new Specification.Errordef(data); - - validate('Errordef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Errordef` - * @returns {Specification.Errordef} A builder for `Specification.Errordef` - */ -export function errordefBuilder(): Builder { - return builder(errordefBuildingFn); -} diff --git a/src/lib/builders/eventbasedswitchstate-builder.ts b/src/lib/builders/eventbasedswitchstate-builder.ts deleted file mode 100644 index 26c0754..0000000 --- a/src/lib/builders/eventbasedswitchstate-builder.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Eventbasedswitchstate} data The underlying object - * @returns {Specification.Eventbasedswitchstate} The validated underlying object - */ -function eventbasedswitchstateBuildingFn( - data: Specification.Eventbasedswitchstate -): () => Specification.Eventbasedswitchstate { - return () => { - const model = new Specification.Eventbasedswitchstate(data); - - validate('Eventbasedswitchstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Eventbasedswitchstate` - * @returns {Specification.Eventbasedswitchstate} A builder for `Specification.Eventbasedswitchstate` - */ -export function eventbasedswitchstateBuilder(): Builder { - return builder(eventbasedswitchstateBuildingFn); -} diff --git a/src/lib/builders/eventdatafilter-builder.ts b/src/lib/builders/eventdatafilter-builder.ts deleted file mode 100644 index d86487e..0000000 --- a/src/lib/builders/eventdatafilter-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Eventdatafilter} data The underlying object - * @returns {Specification.Eventdatafilter} The validated underlying object - */ -function eventdatafilterBuildingFn(data: Specification.Eventdatafilter): () => Specification.Eventdatafilter { - return () => { - const model = new Specification.Eventdatafilter(data); - - validate('Eventdatafilter', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Eventdatafilter` - * @returns {Specification.Eventdatafilter} A builder for `Specification.Eventdatafilter` - */ -export function eventdatafilterBuilder(): Builder { - return builder(eventdatafilterBuildingFn); -} diff --git a/src/lib/builders/eventdef-builder.ts b/src/lib/builders/eventdef-builder.ts deleted file mode 100644 index 6e75103..0000000 --- a/src/lib/builders/eventdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Eventdef} data The underlying object - * @returns {Specification.Eventdef} The validated underlying object - */ -function eventdefBuildingFn(data: Specification.Eventdef): () => Specification.Eventdef { - return () => { - const model = new Specification.Eventdef(data); - - validate('Eventdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Eventdef` - * @returns {Specification.Eventdef} A builder for `Specification.Eventdef` - */ -export function eventdefBuilder(): Builder { - return builder(eventdefBuildingFn); -} diff --git a/src/lib/builders/eventref-builder.ts b/src/lib/builders/eventref-builder.ts deleted file mode 100644 index 58685a6..0000000 --- a/src/lib/builders/eventref-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Eventref} data The underlying object - * @returns {Specification.Eventref} The validated underlying object - */ -function eventrefBuildingFn(data: Specification.Eventref): () => Specification.Eventref { - return () => { - const model = new Specification.Eventref(data); - - validate('Eventref', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Eventref` - * @returns {Specification.Eventref} A builder for `Specification.Eventref` - */ -export function eventrefBuilder(): Builder { - return builder(eventrefBuildingFn); -} diff --git a/src/lib/builders/eventstate-builder.ts b/src/lib/builders/eventstate-builder.ts deleted file mode 100644 index 3ebea78..0000000 --- a/src/lib/builders/eventstate-builder.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; -import { setEndValueIfNoTransition } from '../definitions/utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Eventstate} data The underlying object - * @returns {Specification.Eventstate} The validated underlying object - */ -function eventstateBuildingFn(data: Specification.Eventstate): () => Specification.Eventstate { - return () => { - const model = new Specification.Eventstate(data); - - setEndValueIfNoTransition(model); - - validate('Eventstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Eventstate` - * @returns {Specification.Eventstate} A builder for `Specification.Eventstate` - */ -export function eventstateBuilder(): Builder { - return builder(eventstateBuildingFn); -} diff --git a/src/lib/builders/extension-builder.ts b/src/lib/builders/extension-builder.ts deleted file mode 100644 index bd90a3e..0000000 --- a/src/lib/builders/extension-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Extension} data The underlying object - * @returns {Specification.Extension} The validated underlying object - */ -function extensionBuildingFn(data: Specification.Extension): () => Specification.Extension { - return () => { - const model = new Specification.Extension(data); - - validate('Extension', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Extension` - * @returns {Specification.Extension} A builder for `Specification.Extension` - */ -export function extensionBuilder(): Builder { - return builder(extensionBuildingFn); -} diff --git a/src/lib/builders/foreachstate-builder.ts b/src/lib/builders/foreachstate-builder.ts deleted file mode 100644 index 5a36731..0000000 --- a/src/lib/builders/foreachstate-builder.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; -import { setEndValueIfNoTransition } from '../definitions/utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Foreachstate} data The underlying object - * @returns {Specification.Foreachstate} The validated underlying object - */ -function foreachstateBuildingFn(data: Specification.Foreachstate): () => Specification.Foreachstate { - return () => { - const model = new Specification.Foreachstate(data); - - setEndValueIfNoTransition(model); - - validate('Foreachstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Foreachstate` - * @returns {Specification.Foreachstate} A builder for `Specification.Foreachstate` - */ -export function foreachstateBuilder(): Builder { - return builder(foreachstateBuildingFn); -} diff --git a/src/lib/builders/function-builder.ts b/src/lib/builders/function-builder.ts deleted file mode 100644 index 8f0bc90..0000000 --- a/src/lib/builders/function-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Function} data The underlying object - * @returns {Specification.Function} The validated underlying object - */ -function functionBuildingFn(data: Specification.Function): () => Specification.Function { - return () => { - const model = new Specification.Function(data); - - validate('Function', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Function` - * @returns {Specification.Function} A builder for `Specification.Function` - */ -export function functionBuilder(): Builder { - return builder(functionBuildingFn); -} diff --git a/src/lib/builders/functionref-builder.ts b/src/lib/builders/functionref-builder.ts deleted file mode 100644 index 65256eb..0000000 --- a/src/lib/builders/functionref-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Functionref} data The underlying object - * @returns {Specification.Functionref} The validated underlying object - */ -function functionrefBuildingFn(data: Specification.Functionref): () => Specification.Functionref { - return () => { - const model = new Specification.Functionref(data); - - validate('Functionref', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Functionref` - * @returns {Specification.Functionref} A builder for `Specification.Functionref` - */ -export function functionrefBuilder(): Builder { - return builder(functionrefBuildingFn); -} diff --git a/src/lib/builders/index.ts b/src/lib/builders/index.ts deleted file mode 100644 index 737e880..0000000 --- a/src/lib/builders/index.ts +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export * from './workflow-builder'; -export * from './action-builder'; -export * from './actiondatafilter-builder'; -export * from './authdef-builder'; -export * from './basicpropsdef-builder'; -export * from './bearerpropsdef-builder'; -export * from './branch-builder'; -export * from './callbackstate-builder'; -export * from './continueasdef-builder'; -export * from './correlation-def-builder'; -export * from './crondef-builder'; -export * from './databasedswitchstate-builder'; -export * from './defaultconditiondef-builder'; -export * from './end-builder'; -export * from './enddatacondition-builder'; -export * from './endeventcondition-builder'; -export * from './error-builder'; -export * from './errordef-builder'; -export * from './eventbasedswitchstate-builder'; -export * from './eventdatafilter-builder'; -export * from './eventdef-builder'; -export * from './eventref-builder'; -export * from './eventstate-builder'; -export * from './extension-builder'; -export * from './foreachstate-builder'; -export * from './function-builder'; -export * from './functionref-builder'; -export * from './injectstate-builder'; -export * from './metadata-builder'; -export * from './oauth2propsdef-builder'; -export * from './onevents-builder'; -export * from './operationstate-builder'; -export * from './parallelstate-builder'; -export * from './produceeventdef-builder'; -export * from './retrydef-builder'; -export * from './schedule-builder'; -export * from './sleep-builder'; -export * from './sleepstate-builder'; -export * from './startdef-builder'; -export * from './statedatafilter-builder'; -export * from './subflowref-builder'; -export * from './timeouts-builder'; -export * from './transition-builder'; -export * from './transitiondatacondition-builder'; -export * from './transitioneventcondition-builder'; -export * from './workflow-exec-timeout-builder'; diff --git a/src/lib/builders/injectstate-builder.ts b/src/lib/builders/injectstate-builder.ts deleted file mode 100644 index 03ea25d..0000000 --- a/src/lib/builders/injectstate-builder.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; -import { setEndValueIfNoTransition } from '../definitions/utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Injectstate} data The underlying object - * @returns {Specification.Injectstate} The validated underlying object - */ -function injectstateBuildingFn(data: Specification.Injectstate): () => Specification.Injectstate { - return () => { - const model = new Specification.Injectstate(data); - - setEndValueIfNoTransition(model); - - validate('Injectstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Injectstate` - * @returns {Specification.Injectstate} A builder for `Specification.Injectstate` - */ -export function injectstateBuilder(): Builder { - return builder(injectstateBuildingFn); -} diff --git a/src/lib/builders/metadata-builder.ts b/src/lib/builders/metadata-builder.ts deleted file mode 100644 index acc9db1..0000000 --- a/src/lib/builders/metadata-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Metadata} data The underlying object - * @returns {Specification.Metadata} The validated underlying object - */ -function metadataBuildingFn(data: Specification.Metadata): () => Specification.Metadata { - return () => { - const model = new Specification.Metadata(data); - - validate('Metadata', model); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Metadata` - * @returns {Specification.Metadata} A builder for `Specification.Metadata` - */ -export function metadataBuilder(): Builder { - return builder(metadataBuildingFn); -} diff --git a/src/lib/builders/oauth2propsdef-builder.ts b/src/lib/builders/oauth2propsdef-builder.ts deleted file mode 100644 index f078e3a..0000000 --- a/src/lib/builders/oauth2propsdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Oauth2propsdef} data The underlying object - * @returns {Specification.Oauth2propsdef} The validated underlying object - */ -function oauth2propsdefBuildingFn(data: Specification.Oauth2propsdef): () => Specification.Oauth2propsdef { - return () => { - const model = new Specification.Oauth2propsdef(data); - - validate('Oauth2propsdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Oauth2propsdef` - * @returns {Specification.Oauth2propsdef} A builder for `Specification.Oauth2propsdef` - */ -export function oauth2propsdefBuilder(): Builder { - return builder(oauth2propsdefBuildingFn); -} diff --git a/src/lib/builders/onevents-builder.ts b/src/lib/builders/onevents-builder.ts deleted file mode 100644 index 72bd58e..0000000 --- a/src/lib/builders/onevents-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Onevents} data The underlying object - * @returns {Specification.Onevents} The validated underlying object - */ -function oneventsBuildingFn(data: Specification.Onevents): () => Specification.Onevents { - return () => { - const model = new Specification.Onevents(data); - - validate('Onevents', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Onevents` - * @returns {Specification.Onevents} A builder for `Specification.Onevents` - */ -export function oneventsBuilder(): Builder { - return builder(oneventsBuildingFn); -} diff --git a/src/lib/builders/operationstate-builder.ts b/src/lib/builders/operationstate-builder.ts deleted file mode 100644 index 47ceb83..0000000 --- a/src/lib/builders/operationstate-builder.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; -import { setEndValueIfNoTransition } from '../definitions/utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Operationstate} data The underlying object - * @returns {Specification.Operationstate} The validated underlying object - */ -function operationstateBuildingFn(data: Specification.Operationstate): () => Specification.Operationstate { - return () => { - const model = new Specification.Operationstate(data); - - setEndValueIfNoTransition(model); - - validate('Operationstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Operationstate` - * @returns {Specification.Operationstate} A builder for `Specification.Operationstate` - */ -export function operationstateBuilder(): Builder { - return builder(operationstateBuildingFn); -} diff --git a/src/lib/builders/parallelstate-builder.ts b/src/lib/builders/parallelstate-builder.ts deleted file mode 100644 index 010ef07..0000000 --- a/src/lib/builders/parallelstate-builder.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; -import { setEndValueIfNoTransition } from '../definitions/utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Parallelstate} data The underlying object - * @returns {Specification.Parallelstate} The validated underlying object - */ -function parallelstateBuildingFn(data: Specification.Parallelstate): () => Specification.Parallelstate { - return () => { - const model = new Specification.Parallelstate(data); - - setEndValueIfNoTransition(model); - - validate('Parallelstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Parallelstate` - * @returns {Specification.Parallelstate} A builder for `Specification.Parallelstate` - */ -export function parallelstateBuilder(): Builder { - return builder(parallelstateBuildingFn); -} diff --git a/src/lib/builders/produceeventdef-builder.ts b/src/lib/builders/produceeventdef-builder.ts deleted file mode 100644 index 5212cf7..0000000 --- a/src/lib/builders/produceeventdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Produceeventdef} data The underlying object - * @returns {Specification.Produceeventdef} The validated underlying object - */ -function produceeventdefBuildingFn(data: Specification.Produceeventdef): () => Specification.Produceeventdef { - return () => { - const model = new Specification.Produceeventdef(data); - - validate('Produceeventdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Produceeventdef` - * @returns {Specification.Produceeventdef} A builder for `Specification.Produceeventdef` - */ -export function produceeventdefBuilder(): Builder { - return builder(produceeventdefBuildingFn); -} diff --git a/src/lib/builders/retrydef-builder.ts b/src/lib/builders/retrydef-builder.ts deleted file mode 100644 index c7ed653..0000000 --- a/src/lib/builders/retrydef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Retrydef} data The underlying object - * @returns {Specification.Retrydef} The validated underlying object - */ -function retrydefBuildingFn(data: Specification.Retrydef): () => Specification.Retrydef { - return () => { - const model = new Specification.Retrydef(data); - - validate('Retrydef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Retrydef` - * @returns {Specification.Retrydef} A builder for `Specification.Retrydef` - */ -export function retrydefBuilder(): Builder { - return builder(retrydefBuildingFn); -} diff --git a/src/lib/builders/schedule-builder.ts b/src/lib/builders/schedule-builder.ts deleted file mode 100644 index dbf2655..0000000 --- a/src/lib/builders/schedule-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Schedule} data The underlying object - * @returns {Specification.Schedule} The validated underlying object - */ -function scheduleBuildingFn(data: Specification.Schedule): () => Specification.Schedule { - return () => { - const model = new Specification.Schedule(data); - - validate('Schedule', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Schedule` - * @returns {Specification.Schedule} A builder for `Specification.Schedule` - */ -export function scheduleBuilder(): Builder { - return builder(scheduleBuildingFn); -} diff --git a/src/lib/builders/sleep-builder.ts b/src/lib/builders/sleep-builder.ts deleted file mode 100644 index d2d8e0b..0000000 --- a/src/lib/builders/sleep-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Sleep} data The underlying object - * @returns {Specification.Sleep} The validated underlying object - */ -function sleepBuildingFn(data: Specification.Sleep): () => Specification.Sleep { - return () => { - const model = new Specification.Sleep(data); - - validate('Sleep', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Sleep` - * @returns {Specification.Sleep} A builder for `Specification.Sleep` - */ -export function sleepBuilder(): Builder { - return builder(sleepBuildingFn); -} diff --git a/src/lib/builders/sleepstate-builder.ts b/src/lib/builders/sleepstate-builder.ts deleted file mode 100644 index 210ec33..0000000 --- a/src/lib/builders/sleepstate-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Sleepstate} data The underlying object - * @returns {Specification.Sleepstate} The validated underlying object - */ -function sleepstateBuildingFn(data: Specification.Sleepstate): () => Specification.Sleepstate { - return () => { - const model = new Specification.Sleepstate(data); - - validate('Sleepstate', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Sleepstate` - * @returns {Specification.Sleepstate} A builder for `Specification.Sleepstate` - */ -export function sleepstateBuilder(): Builder { - return builder(sleepstateBuildingFn); -} diff --git a/src/lib/builders/startdef-builder.ts b/src/lib/builders/startdef-builder.ts deleted file mode 100644 index bc6fb7f..0000000 --- a/src/lib/builders/startdef-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Startdef} data The underlying object - * @returns {Specification.Startdef} The validated underlying object - */ -function startdefBuildingFn(data: Specification.Startdef): () => Specification.Startdef { - return () => { - const model = new Specification.Startdef(data); - - validate('Startdef', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Startdef` - * @returns {Specification.Startdef} A builder for `Specification.Startdef` - */ -export function startdefBuilder(): Builder { - return builder(startdefBuildingFn); -} diff --git a/src/lib/builders/statedatafilter-builder.ts b/src/lib/builders/statedatafilter-builder.ts deleted file mode 100644 index 69d0aa1..0000000 --- a/src/lib/builders/statedatafilter-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Statedatafilter} data The underlying object - * @returns {Specification.Statedatafilter} The validated underlying object - */ -function statedatafilterBuildingFn(data: Specification.Statedatafilter): () => Specification.Statedatafilter { - return () => { - const model = new Specification.Statedatafilter(data); - - validate('Statedatafilter', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Statedatafilter` - * @returns {Specification.Statedatafilter} A builder for `Specification.Statedatafilter` - */ -export function statedatafilterBuilder(): Builder { - return builder(statedatafilterBuildingFn); -} diff --git a/src/lib/builders/subflowref-builder.ts b/src/lib/builders/subflowref-builder.ts deleted file mode 100644 index 3011aa7..0000000 --- a/src/lib/builders/subflowref-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Subflowref} data The underlying object - * @returns {Specification.Subflowref} The validated underlying object - */ -function subflowrefBuildingFn(data: Specification.Subflowref): () => Specification.Subflowref { - return () => { - const model = new Specification.Subflowref(data); - - validate('Subflowref', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Subflowref` - * @returns {Specification.Subflowref} A builder for `Specification.Subflowref` - */ -export function subflowrefBuilder(): Builder { - return builder(subflowrefBuildingFn); -} diff --git a/src/lib/builders/timeouts-builder.ts b/src/lib/builders/timeouts-builder.ts deleted file mode 100644 index 413964e..0000000 --- a/src/lib/builders/timeouts-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Timeouts} data The underlying object - * @returns {Specification.Timeouts} The validated underlying object - */ -function timeoutsBuildingFn(data: Specification.Timeouts): () => Specification.Timeouts { - return () => { - const model = new Specification.Timeouts(data); - - validate('Timeouts', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Timeouts` - * @returns {Specification.Timeouts} A builder for `Specification.Timeouts` - */ -export function timeoutsBuilder(): Builder { - return builder(timeoutsBuildingFn); -} diff --git a/src/lib/builders/transition-builder.ts b/src/lib/builders/transition-builder.ts deleted file mode 100644 index e10b988..0000000 --- a/src/lib/builders/transition-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Transition} data The underlying object - * @returns {Specification.Transition} The validated underlying object - */ -function transitionBuildingFn(data: Specification.Transition): () => Specification.Transition { - return () => { - const model = new Specification.Transition(data); - - validate('Transition', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Transition` - * @returns {Specification.Transition} A builder for `Specification.Transition` - */ -export function transitionBuilder(): Builder { - return builder(transitionBuildingFn); -} diff --git a/src/lib/builders/transitiondatacondition-builder.ts b/src/lib/builders/transitiondatacondition-builder.ts deleted file mode 100644 index 4abfae7..0000000 --- a/src/lib/builders/transitiondatacondition-builder.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Transitiondatacondition} data The underlying object - * @returns {Specification.Transitiondatacondition} The validated underlying object - */ -function transitiondataconditionBuildingFn( - data: Specification.Transitiondatacondition -): () => Specification.Transitiondatacondition { - return () => { - const model = new Specification.Transitiondatacondition(data); - - validate('Transitiondatacondition', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Transitiondatacondition` - * @returns {Specification.Transitiondatacondition} A builder for `Specification.Transitiondatacondition` - */ -export function transitiondataconditionBuilder(): Builder { - return builder(transitiondataconditionBuildingFn); -} diff --git a/src/lib/builders/transitioneventcondition-builder.ts b/src/lib/builders/transitioneventcondition-builder.ts deleted file mode 100644 index 161a92b..0000000 --- a/src/lib/builders/transitioneventcondition-builder.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Transitioneventcondition} data The underlying object - * @returns {Specification.Transitioneventcondition} The validated underlying object - */ -function transitioneventconditionBuildingFn( - data: Specification.Transitioneventcondition -): () => Specification.Transitioneventcondition { - return () => { - const model = new Specification.Transitioneventcondition(data); - - validate('Transitioneventcondition', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Transitioneventcondition` - * @returns {Specification.Transitioneventcondition} A builder for `Specification.Transitioneventcondition` - */ -export function transitioneventconditionBuilder(): Builder { - return builder(transitioneventconditionBuildingFn); -} diff --git a/src/lib/builders/workflow-builder.ts b/src/lib/builders/workflow-builder.ts deleted file mode 100644 index 2177a30..0000000 --- a/src/lib/builders/workflow-builder.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.Workflow} data The underlying object - * @returns {Specification.Workflow} The validated underlying object - */ -function workflowBuildingFn(data: Specification.Workflow): () => Specification.Workflow { - return () => { - const model = new Specification.Workflow(data); - - validate('Workflow', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.Workflow` - * @returns {Specification.Workflow} A builder for `Specification.Workflow` - */ -export function workflowBuilder(): Builder { - return builder(workflowBuildingFn); -} diff --git a/src/lib/builders/workflow-exec-timeout-builder.ts b/src/lib/builders/workflow-exec-timeout-builder.ts deleted file mode 100644 index 766e9da..0000000 --- a/src/lib/builders/workflow-exec-timeout-builder.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Builder, builder } from '../builder'; -import { Specification } from '../definitions'; -import { validate } from '../utils'; - -/** - * The internal function used by the builder proxy to validate and return its underlying object - * @param {Specification.WorkflowExecTimeout} data The underlying object - * @returns {Specification.WorkflowExecTimeout} The validated underlying object - */ -function workflowExecTimeoutBuildingFn( - data: Specification.WorkflowExecTimeout -): () => Specification.WorkflowExecTimeout { - return () => { - const model = new Specification.WorkflowExecTimeout(data); - - validate('WorkflowExecTimeout', model.normalize()); - return model; - }; -} - -/** - * A factory to create a builder proxy for the type `Specification.WorkflowExecTimeout` - * @returns {Specification.WorkflowExecTimeout} A builder for `Specification.WorkflowExecTimeout` - */ -export function workflowExecTimeoutBuilder(): Builder { - return builder(workflowExecTimeoutBuildingFn); -} diff --git a/src/lib/builders/README.md b/src/lib/definitions/README.md similarity index 100% rename from src/lib/builders/README.md rename to src/lib/definitions/README.md diff --git a/src/lib/definitions/action.ts b/src/lib/definitions/action.ts deleted file mode 100644 index d587d86..0000000 --- a/src/lib/definitions/action.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Actiondatafilter } from './actiondatafilter'; -import { Eventref } from './eventref'; -import { Functionref } from './functionref'; -import { - cleanSourceModelProperty, - normalizeEventRef, - normalizeFunctionRef, - normalizeSubFlowRef, - overwriteActionDataFilter, - overwriteEventRef, - overwriteFunctionRef, - overwriteSleep, - overwriteSubFlowRef, -} from './utils'; -import { Subflowref } from './subflowref'; -import { Sleep } from './sleep'; - -export class Action { - sourceModel?: Action; - /** - * Unique action definition name - */ - name?: string; - functionRef?: string | Functionref; - eventRef?: /* Event References */ Eventref; - subFlowRef?: string | Subflowref; - sleep?: Sleep; - /** - * References a defined workflow retry definition. If not defined the default retry policy is assumed - */ - retryRef?: string; - /** - * List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` - */ - nonRetryableErrors?: [string, ...string[]]; - /** - * List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` - */ - retryableErrors?: [string, ...string[]]; - actionDataFilter?: Actiondatafilter; - /** - * Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded - */ - condition?: string; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - - overwriteFunctionRef(this); - overwriteEventRef(this); - overwriteSubFlowRef(this); - overwriteSleep(this); - overwriteActionDataFilter(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Action} without deleted properties. - */ - normalize = (): Action => { - const clone = new Action(this); - - normalizeSubFlowRef(clone); - normalizeEventRef(clone); - normalizeFunctionRef(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/actiondatafilter.ts b/src/lib/definitions/actiondatafilter.ts deleted file mode 100644 index 6500aca..0000000 --- a/src/lib/definitions/actiondatafilter.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Actiondatafilter { - /** - * Workflow expression that selects state data that the state action can use - */ - fromStateData?: string; - /** - * If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true. - */ - useResults?: boolean; - /** - * Workflow expression that filters the actions data results - */ - results?: string; - /** - * Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element - */ - toStateData?: string; - - constructor(model: any) { - Object.assign(this, model); - } - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Actiondatafilter} without deleted properties. - */ - normalize = (): Actiondatafilter => { - const clone = new Actiondatafilter(this); - return clone; - }; -} diff --git a/src/lib/definitions/authdef.ts b/src/lib/definitions/authdef.ts deleted file mode 100644 index 0d65cf1..0000000 --- a/src/lib/definitions/authdef.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { cleanSourceModelProperty, normalizeScheme, overwriteProperties } from './utils'; -import { Properties } from './types'; - -export class Authdef { - sourceModel?: Authdef; - /** - * Unique auth definition name - */ - name: string; - /** - * Defines the auth type - */ - scheme?: 'basic' | 'bearer' | 'oauth2'; - properties: string | Properties; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { scheme: 'basic' }; - Object.assign(this, defaultModel, model); - - overwriteProperties(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Authdef} without deleted properties. - */ - normalize = (): Authdef => { - const clone = new Authdef(this); - - normalizeScheme(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/basicpropsdef.ts b/src/lib/definitions/basicpropsdef.ts deleted file mode 100644 index d51920c..0000000 --- a/src/lib/definitions/basicpropsdef.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Metadata } from './metadata'; -import { overwriteMetadata } from './utils'; - -export class Basicpropsdef { - /** - * String or a workflow expression. Contains the user name - */ - username: string; - /** - * String or a workflow expression. Contains the user password - */ - password: string; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - Object.assign(this, model); - - overwriteMetadata(this); - } - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Basicpropsdef} without deleted properties. - */ - normalize = (): Basicpropsdef => { - const clone = new Basicpropsdef(this); - return clone; - }; -} diff --git a/src/lib/definitions/bearerpropsdef.ts b/src/lib/definitions/bearerpropsdef.ts deleted file mode 100644 index 9c444d7..0000000 --- a/src/lib/definitions/bearerpropsdef.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Metadata } from './metadata'; -import { overwriteMetadata } from './utils'; - -export class Bearerpropsdef { - /** - * String or a workflow expression. Contains the token - */ - token: string; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - Object.assign(this, model); - overwriteMetadata(this); - } - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Bearerpropsdef} without deleted properties. - */ - normalize = (): Bearerpropsdef => { - const clone = new Bearerpropsdef(this); - return clone; - }; -} diff --git a/src/lib/definitions/branch.ts b/src/lib/definitions/branch.ts deleted file mode 100644 index 9a82edd..0000000 --- a/src/lib/definitions/branch.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Action } from './action'; -import { cleanSourceModelProperty, normalizeActions, overwriteActions, overwritePropertyAsPlainType } from './utils'; -import { ActionExecTimeout, BranchExecTimeout } from './types'; - -export class Branch /* Branch Definition */ { - sourceModel?: Branch; - /** - * Branch name - */ - name: string; - /** - * State specific timeouts - */ - timeouts?: { - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - branchExecTimeout?: /* Branch execution timeout duration (ISO 8601 duration format) */ BranchExecTimeout; - }; - /** - * Actions to be executed in this branch - */ - actions: Action[]; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - overwriteActions(this); - overwritePropertyAsPlainType('timeouts', this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Branch} without deleted properties. - */ - normalize = (): Branch => { - const clone = new Branch(this); - normalizeActions(clone); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/callbackstate.ts b/src/lib/definitions/callbackstate.ts deleted file mode 100644 index 49e1d8d..0000000 --- a/src/lib/definitions/callbackstate.ts +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Action } from './action'; -import { End } from './end'; -import { Error } from './error'; -import { Eventdatafilter } from './eventdatafilter'; -import { Metadata } from './metadata'; -import { Statedatafilter } from './statedatafilter'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeAction, - normalizeEnd, - normalizeOnErrors, - normalizeTransition, - normalizeUsedForCompensation, - overwriteAction, - overwriteEnd, - overwriteEventDataFilter, - overwriteMetadata, - overwriteOnErrors, - overwritePropertyAsPlainType, - overwriteStateDataFilter, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; -import { ActionExecTimeout, EventTimeout, StateExecTimeout } from './types'; - -export class Callbackstate { - sourceModel?: Callbackstate; - /** - * Unique state id - */ - id?: string; - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'callback'; - /** - * Defines the action to be executed - */ - action?: Action; - /** - * References an unique callback event name in the defined workflow events - */ - eventRef?: string; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; - /** - * Event data filter - */ - eventDataFilter?: Eventdatafilter; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after all the actions have been performed - */ - transition?: string | Transition; - /** - * State end definition - */ - end?: boolean | End; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - type: 'callback', - usedForCompensation: false, - }; - Object.assign(this, defaultModel, model); - - overwriteAction(this); - overwritePropertyAsPlainType('timeouts', this); - overwriteEventDataFilter(this); - overwriteStateDataFilter(this); - overwriteOnErrors(this); - overwriteTransition(this); - overwriteEnd(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Callbackstate} without deleted properties. - */ - normalize = (): Callbackstate => { - const clone = new Callbackstate(this); - - normalizeAction(clone); - normalizeOnErrors(clone); - normalizeTransition(clone); - normalizeEnd(clone); - normalizeUsedForCompensation(clone, this.sourceModel); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/continueasdef.ts b/src/lib/definitions/continueasdef.ts deleted file mode 100644 index ff5208c..0000000 --- a/src/lib/definitions/continueasdef.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { WorkflowExecTimeout } from './workflowExecTimeout'; -import { - cleanSourceModelProperty, - normalizeWorkflowExecTimeout, - overwritePropertyAsPlainType, - overwriteWorkflowExecTimeout, -} from './utils'; - -export class Continueasdef { - sourceModel?: Continueasdef; - /** - * Unique id of the workflow to continue execution as - */ - workflowId: string; - /** - * Version of the workflow to continue execution as - */ - version?: string; // ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - /** - * If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution - */ - data?: - | string - | { - [key: string]: any; - }; - /** - * Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow - */ - workflowExecTimeout?: WorkflowExecTimeout; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - overwriteWorkflowExecTimeout(this); - overwritePropertyAsPlainType('data', this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Exectimeout} without deleted properties. - */ - normalize = (): Continueasdef => { - const clone = new Continueasdef(this); - normalizeWorkflowExecTimeout(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/correlationDef.ts b/src/lib/definitions/correlationDef.ts deleted file mode 100644 index 824f52e..0000000 --- a/src/lib/definitions/correlationDef.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class CorrelationDef { - /** - * CloudEvent Extension Context Attribute name - */ - contextAttributeName: string; - /** - * CloudEvent Extension Context Attribute value - */ - contextAttributeValue?: string; - - constructor(model: any) { - Object.assign(this, model); - } - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.CorrelationDef} without deleted properties. - */ - normalize = (): CorrelationDef => { - const clone = new CorrelationDef(this); - return clone; - }; -} diff --git a/src/lib/definitions/crondef.ts b/src/lib/definitions/crondef.ts deleted file mode 100644 index a7aefb4..0000000 --- a/src/lib/definitions/crondef.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Crondef { - /** - * Repeating interval (cron expression) describing when the workflow instance should be created - */ - expression: string; - /** - * Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid - */ - validUntil?: string; - - constructor(model: any) { - Object.assign(this, model); - } - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Crondef} without deleted properties. - */ - normalize = (): Crondef => { - const clone = new Crondef(this); - return clone; - }; -} diff --git a/src/lib/definitions/databasedswitchstate.ts b/src/lib/definitions/databasedswitchstate.ts deleted file mode 100644 index 013b369..0000000 --- a/src/lib/definitions/databasedswitchstate.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Defaultconditiondef } from './defaultconditiondef'; -import { Error } from './error'; -import { Metadata } from './metadata'; -import { Statedatafilter } from './statedatafilter'; -import { - cleanSourceModelProperty, - normalizeDataConditions, - normalizeDefaultCondition, - normalizeOnErrors, - normalizeUsedForCompensation, - overwriteDataConditions, - overwriteDefaultCondition, - overwriteMetadata, - overwriteOnErrors, - overwriteStateDataFilter, - overwritePropertyAsPlainType, -} from './utils'; -import { Datacondition, StateExecTimeout } from './types'; - -export class Databasedswitchstate { - sourceModel?: Databasedswitchstate; - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'switch'; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - }; - /** - * Defines conditions evaluated against state data - */ - dataConditions: Datacondition[]; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition - */ - defaultCondition: /* DefaultCondition definition. Can be either a transition or end definition */ Defaultconditiondef; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { id: undefined, name: undefined, type: 'switch', usedForCompensation: false }; - Object.assign(this, defaultModel, model); - - overwriteStateDataFilter(this); - overwritePropertyAsPlainType('timeouts', this); - overwriteDataConditions(this); - overwriteOnErrors(this); - overwriteDefaultCondition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Databasedswitch} without deleted properties. - */ - normalize = (): Databasedswitchstate => { - const clone = new Databasedswitchstate(this); - - normalizeDataConditions(clone); - normalizeOnErrors(clone); - normalizeDefaultCondition(clone); - normalizeUsedForCompensation(clone, this.sourceModel); - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/defaultconditiondef.ts b/src/lib/definitions/defaultconditiondef.ts deleted file mode 100644 index d95fecd..0000000 --- a/src/lib/definitions/defaultconditiondef.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { End } from './end'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeEnd, - normalizeTransition, - overwriteEnd, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; - -export class Defaultconditiondef /* DefaultCondition definition. Can be either a transition or end definition */ { - sourceModel?: Defaultconditiondef; - /** - * The optional name of the default condition, used solely for display purposes - */ - name?: string; - transition: string | Transition; - end?: boolean | End; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - - overwriteTransition(this); - overwriteEnd(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Defaultdef} without deleted properties. - */ - normalize = (): Defaultconditiondef => { - const clone = new Defaultconditiondef(this); - - normalizeEnd(clone); - normalizeTransition(clone); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/end.ts b/src/lib/definitions/end.ts deleted file mode 100644 index 1339dc3..0000000 --- a/src/lib/definitions/end.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Produceeventdef } from './produceeventdef'; -import { - cleanSourceModelProperty, - normalizeCompensate, - normalizeContinueAs, - normalizeTerminate, - overwriteContinueAs, - overwriteProduceEvents, -} from './utils'; -import { Continueasdef } from './continueasdef'; - -export class End { - sourceModel?: End; - /** - * If true, completes all execution flows in the given workflow instance - */ - terminate?: boolean; - /** - * Defines events that should be produced - */ - produceEvents?: /* Produce an event and set its data */ Produceeventdef[]; - /** - * If set to true, triggers workflow compensation. Default is false - */ - compensate?: boolean; - continueAs?: string | Continueasdef; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - compensate: false, - terminate: false, - }; - Object.assign(this, defaultModel, model); - - overwriteProduceEvents(this); - overwriteContinueAs(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.End} without deleted properties. - */ - normalize = (): End => { - const clone = new End(this); - - normalizeCompensate(clone, this.sourceModel); - normalizeTerminate(clone, this.sourceModel); - normalizeContinueAs(clone); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/enddatacondition.ts b/src/lib/definitions/enddatacondition.ts deleted file mode 100644 index ce49f4d..0000000 --- a/src/lib/definitions/enddatacondition.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { End } from './end'; -import { Metadata } from './metadata'; -import { cleanSourceModelProperty, normalizeEnd, overwriteEnd, overwriteMetadata } from './utils'; - -export class Enddatacondition { - sourceModel?: Enddatacondition; - /** - * Data condition name - */ - name?: string; - /** - * Workflow expression evaluated against state data. Must evaluate to true or false - */ - condition: string; - /** - * Workflow end definition - */ - end: boolean | End; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - - overwriteEnd(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Enddatacondition} without deleted properties. - */ - normalize = (): Enddatacondition => { - const clone = new Enddatacondition(this); - - normalizeEnd(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/endeventcondition.ts b/src/lib/definitions/endeventcondition.ts deleted file mode 100644 index 9c98e01..0000000 --- a/src/lib/definitions/endeventcondition.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { End } from './end'; -import { Eventdatafilter } from './eventdatafilter'; -import { Metadata } from './metadata'; -import { - cleanSourceModelProperty, - normalizeEnd, - overwriteEnd, - overwriteEventDataFilter, - overwriteMetadata, -} from './utils'; - -export class Endeventcondition { - sourceModel?: Endeventcondition; - /** - * Event condition name - */ - name?: string; - /** - * References an unique event name in the defined workflow events - */ - eventRef: string; - /** - * Explicit transition to end - */ - end: boolean | End; - /** - * Event data filter definition - */ - eventDataFilter?: Eventdatafilter; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - - overwriteEnd(this); - overwriteEventDataFilter(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Endeventcondition} without deleted properties. - */ - normalize = (): Endeventcondition => { - const clone = new Endeventcondition(this); - - normalizeEnd(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/error.ts b/src/lib/definitions/error.ts deleted file mode 100644 index 76e3863..0000000 --- a/src/lib/definitions/error.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { End } from './end'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeEnd, - normalizeTransition, - overwriteEnd, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; - -export class Error { - sourceModel?: Error; - /** - * Reference to a unique workflow error definition. Used of errorRefs is not used - */ - errorRef: string; - /** - * References one or more workflow error definitions. Used if errorRef is not used - */ - errorRefs?: [string, ...string[]]; - transition: string | Transition; - end?: boolean | End; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - - overwriteTransition(this); - overwriteEnd(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Error} without deleted properties. - */ - normalize = (): Error => { - const clone = new Error(this); - - normalizeEnd(clone); - normalizeTransition(clone); - - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/errordef.ts b/src/lib/definitions/errordef.ts deleted file mode 100644 index 78aa011..0000000 --- a/src/lib/definitions/errordef.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Errordef { - /** - * Domain-specific error name - */ - name: string; - /** - * Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*' - */ - code?: string; - /** - * Error description - */ - description?: string; - - constructor(model: any) { - Object.assign(this, model); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Errordef} without deleted properties. - */ - normalize = (): Errordef => { - const clone = new Errordef(this); - return clone; - }; -} diff --git a/src/lib/definitions/eventbasedswitchstate.ts b/src/lib/definitions/eventbasedswitchstate.ts deleted file mode 100644 index 089935c..0000000 --- a/src/lib/definitions/eventbasedswitchstate.ts +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Defaultconditiondef } from './defaultconditiondef'; -import { Error } from './error'; -import { Metadata } from './metadata'; -import { Statedatafilter } from './statedatafilter'; -import { - cleanSourceModelProperty, - normalizeDefaultCondition, - normalizeEventConditions, - normalizeOnErrors, - normalizeUsedForCompensation, - overwriteDefaultCondition, - overwriteEventConditions, - overwriteMetadata, - overwriteOnErrors, - overwriteStateDataFilter, - overwritePropertyAsPlainType, -} from './utils'; -import { Eventcondition, EventTimeout, StateExecTimeout } from './types'; - -export class Eventbasedswitchstate { - sourceModel?: Eventbasedswitchstate; - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'switch'; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; - /** - * Defines conditions evaluated against events - */ - eventConditions: Eventcondition[]; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition - */ - defaultCondition: /* DefaultCondition definition. Can be either a transition or end definition */ Defaultconditiondef; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { id: undefined, name: undefined, type: 'switch', usedForCompensation: false }; - Object.assign(this, defaultModel, model); - - overwriteStateDataFilter(this); - overwritePropertyAsPlainType('timeouts', this); - overwriteEventConditions(this); - overwriteOnErrors(this); - overwriteDefaultCondition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Eventbasedswitch} without deleted properties. - */ - normalize = (): Eventbasedswitchstate => { - const clone = new Eventbasedswitchstate(this); - - normalizeEventConditions(clone); - normalizeOnErrors(clone); - normalizeDefaultCondition(clone); - normalizeUsedForCompensation(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/eventdatafilter.ts b/src/lib/definitions/eventdatafilter.ts deleted file mode 100644 index 9a46282..0000000 --- a/src/lib/definitions/eventdatafilter.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Eventdatafilter { - /** - * If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true. - */ - useData?: boolean; - /** - * Workflow expression that filters the received event payload (default: '${ . }') - */ - data?: string; - /** - * Workflow expression that selects a state data element to which the filtered event should be added/merged into. If not specified, denotes, the top-level state data element. - */ - toStateData?: string; - - constructor(model: any) { - Object.assign(this, model); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Eventdatafilter} without deleted properties. - */ - normalize = (): Eventdatafilter => { - const clone = new Eventdatafilter(this); - return clone; - }; -} diff --git a/src/lib/definitions/eventdef.ts b/src/lib/definitions/eventdef.ts deleted file mode 100644 index 603acbc..0000000 --- a/src/lib/definitions/eventdef.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Metadata } from './metadata'; -import { - cleanSourceModelProperty, - normalizeDataOnly, - normalizeKind, - overwriteCorrelation, - overwriteMetadata, -} from './utils'; -import { CorrelationDefs } from './types'; - -export class Eventdef { - sourceModel?: Eventdef; - /** - * Unique event name - */ - name?: string; - /** - * CloudEvent source - */ - source?: string; - /** - * CloudEvent type - */ - type?: string; - /** - * Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed' - */ - kind?: 'consumed' | 'produced'; - /** - * CloudEvent correlation definitions - */ - correlation?: CorrelationDefs; - /** - * If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible - */ - dataOnly?: boolean; - /** - * Metadata information - */ - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - kind: 'consumed', - dataOnly: true, - }; - Object.assign(this, defaultModel, model); - - overwriteCorrelation(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Eventdef} without deleted properties. - */ - normalize = (): Eventdef => { - const clone = new Eventdef(this); - - normalizeKind(clone, this.sourceModel); - normalizeDataOnly(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/eventref.ts b/src/lib/definitions/eventref.ts deleted file mode 100644 index 02dc0bd..0000000 --- a/src/lib/definitions/eventref.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { cleanSourceModelProperty, overwritePropertyAsPlainType } from './utils'; - -export class Eventref { - sourceModel?: Eventref; - /** - * Reference to the unique name of a 'produced' event definition - */ - produceEventRef: string; - /** - * Reference to the unique name of a 'consumed' event definition - */ - consumeEventRef?: string; - /** - * Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it should default to the actionExecutionTimeout - */ - consumeEventTimeout?: string; - /** - * If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'produceEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'produceEventRef'. - */ - data?: - | string - | { - [key: string]: any; - }; - /** - * Add additional extension context attributes to the produced event - */ - contextAttributes?: { - [name: string]: string; - }; - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - overwritePropertyAsPlainType('data', this); - overwritePropertyAsPlainType('contextAttributes', this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Eventref} without deleted properties. - */ - normalize = (): Eventref => { - const clone = new Eventref(this); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/eventstate.ts b/src/lib/definitions/eventstate.ts deleted file mode 100644 index 836cd4f..0000000 --- a/src/lib/definitions/eventstate.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { End } from './end'; -import { Error } from './error'; -import { Metadata } from './metadata'; -import { Onevents } from './onevents'; -import { Statedatafilter } from './statedatafilter'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeEnd, - normalizeExclusive, - normalizeOnErrors, - normalizeOnEvents, - normalizeTransition, - overwriteEnd, - overwriteMetadata, - overwriteOnErrors, - overwriteOnEvents, - overwriteStateDataFilter, - overwritePropertyAsPlainType, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; -import { ActionExecTimeout, EventTimeout, StateExecTimeout } from './types'; - -export class Eventstate /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ { - sourceModel?: Eventstate; - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'event'; - /** - * If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed - */ - exclusive?: boolean; - /** - * Define the events to be consumed and optional actions to be performed - */ - onEvents: Onevents[]; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; - stateDataFilter?: Statedatafilter; - /** - * States error handling definitions - */ - onErrors?: Error[]; - transition?: string | Transition; - end: boolean | End; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - type: 'event', - exclusive: true, - }; - Object.assign(this, defaultModel, model); - - overwriteOnEvents(this); - overwritePropertyAsPlainType('timeouts', this); - overwriteStateDataFilter(this); - overwriteOnErrors(this); - overwriteTransition(this); - overwriteEnd(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Eventstate} without deleted properties. - */ - normalize = (): Eventstate => { - const clone = new Eventstate(this); - - normalizeExclusive(clone, this.sourceModel); - normalizeOnEvents(clone); - normalizeOnErrors(clone); - normalizeTransition(clone); - normalizeEnd(clone); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/extension.ts b/src/lib/definitions/extension.ts deleted file mode 100644 index 40166a2..0000000 --- a/src/lib/definitions/extension.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Extension { - /** - * Unique extension id - */ - extensionId: string; - /** - * URI to a resource containing this workflow extension definitions (json or yaml) - */ - resource: string; - - constructor(model: any) { - Object.assign(this, model); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Extension} without deleted properties. - */ - normalize = (): Extension => { - const clone = new Extension(this); - return clone; - }; -} diff --git a/src/lib/definitions/foreachstate.ts b/src/lib/definitions/foreachstate.ts deleted file mode 100644 index d9e2857..0000000 --- a/src/lib/definitions/foreachstate.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Action } from './action'; -import { End } from './end'; -import { Error } from './error'; -import { Metadata } from './metadata'; -import { Statedatafilter } from './statedatafilter'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeActions, - normalizeEnd, - normalizeMode, - normalizeOnErrors, - normalizeTransition, - normalizeUsedForCompensation, - overwriteActions, - overwriteEnd, - overwriteMetadata, - overwriteOnErrors, - overwriteStateDataFilter, - overwritePropertyAsPlainType, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; -import { ActionExecTimeout, StateExecTimeout } from './types'; - -export class Foreachstate { - sourceModel?: Foreachstate; - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'foreach'; - /** - * State end definition - */ - end?: boolean | End; - /** - * Workflow expression selecting an array element of the states data - */ - inputCollection?: string; - /** - * Workflow expression specifying an array element of the states data to add the results of each iteration - */ - outputCollection?: string; - /** - * Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array - */ - iterationParam?: string; - /** - * Specifies how many iterations may run in parallel at the same time. Used if 'mode' property is set to 'parallel' (default) - */ - batchSize?: number | string; - /** - * Actions to be executed for each of the elements of inputCollection - */ - actions?: Action[]; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - }; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after state has completed - */ - transition?: string | Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - /** - * Specifies how iterations are to be performed (sequentially or in parallel) - */ - mode?: 'sequential' | 'parallel'; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - type: 'foreach', - usedForCompensation: false, - mode: 'parallel', - }; - Object.assign(this, defaultModel, model); - - overwriteEnd(this); - overwriteActions(this); - overwritePropertyAsPlainType('timeouts', this); - overwriteStateDataFilter(this); - overwriteOnErrors(this); - overwriteTransition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Foreachstate} without deleted properties. - */ - normalize = (): Foreachstate => { - const clone = new Foreachstate(this); - - normalizeEnd(clone); - normalizeActions(clone); - normalizeOnErrors(clone); - normalizeTransition(clone); - normalizeUsedForCompensation(clone, this.sourceModel); - normalizeMode(clone, this.sourceModel); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/function.ts b/src/lib/definitions/function.ts deleted file mode 100644 index bdb7ed9..0000000 --- a/src/lib/definitions/function.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { cleanSourceModelProperty, normalizeType, overwriteMetadata, overwritePropertyAsPlainType } from './utils'; - -import { Metadata } from './metadata'; - -export class Function { - sourceModel?: Function; - /** - * Unique function name - */ - name: string; - /** - * If type is `rest`, #. If type is `asyncapi`, #. If type is `rpc`, ##. If type is `graphql`, ##. If type is `odata`, #. If type is `expression`, defines the workflow expression. - */ - operation: string; - /** - * Defines the function type. Is either `rest`, `asyncapi, `rpc`, `graphql`, `odata`, `expression`, or `custom`. Default is `rest` - */ - type?: 'rest' | 'asyncapi' | 'rpc' | 'graphql' | 'odata' | 'expression' | 'custom'; - authRef?: - | string - | { - /** - * References an auth definition to be used to access the resource defined in the operation parameter - */ - resource: string; - /** - * References an auth definition to be used to invoke the operation - */ - invocation?: string; - }; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { type: 'rest' }; - Object.assign(this, defaultModel, model); - overwritePropertyAsPlainType('authRef', this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Function} without deleted properties. - */ - - normalize = (): Function => { - const clone = new Function(this); - - normalizeType(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/functionref.ts b/src/lib/definitions/functionref.ts deleted file mode 100644 index b969bce..0000000 --- a/src/lib/definitions/functionref.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { cleanSourceModelProperty, normalizeInvoke, overwritePropertyAsPlainType } from './utils'; - -export class Functionref { - sourceModel?: Functionref; - /** - * Name of the referenced function - */ - refName: string; - /** - * Function arguments/inputs - */ - arguments?: { - [key: string]: any; - }; - /** - * Only used if function type is 'graphql'. A string containing a valid GraphQL selection set - */ - selectionSet?: string; - /** - * Specifies if the function should be invoked sync or async - */ - invoke?: 'sync' | 'async'; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - overwritePropertyAsPlainType('arguments', this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Functionref} without deleted properties. - */ - normalize = (): Functionref => { - const clone = new Functionref(this); - - normalizeInvoke(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/index.ts b/src/lib/definitions/index.ts index eae5388..ed0f6e7 100644 --- a/src/lib/definitions/index.ts +++ b/src/lib/definitions/index.ts @@ -13,4 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export * as Specification from './specification'; diff --git a/src/lib/definitions/injectstate.ts b/src/lib/definitions/injectstate.ts deleted file mode 100644 index e25c657..0000000 --- a/src/lib/definitions/injectstate.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { End } from './end'; -import { Metadata } from './metadata'; -import { Statedatafilter } from './statedatafilter'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeEnd, - normalizeTransition, - normalizeUsedForCompensation, - overwriteEnd, - overwriteMetadata, - overwriteStateDataFilter, - overwritePropertyAsPlainType, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; - -export class Injectstate { - sourceModel?: Injectstate; - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'inject'; - /** - * State end definition - */ - end?: boolean | End; - /** - * JSON object which can be set as states data input and can be manipulated via filters - */ - data?: { - [key: string]: any; - }; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * Next transition of the workflow after injection has completed - */ - transition?: string | Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - type: 'inject', - usedForCompensation: false, - }; - Object.assign(this, defaultModel, model); - - overwriteEnd(this); - overwritePropertyAsPlainType('data', this); - overwriteStateDataFilter(this); - overwriteTransition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Injectstate} without deleted properties. - */ - normalize = (): Injectstate => { - const clone = new Injectstate(this); - - normalizeEnd(clone); - normalizeTransition(clone); - normalizeUsedForCompensation(clone, this.sourceModel); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/metadata.ts b/src/lib/definitions/metadata.ts deleted file mode 100644 index 9e191da..0000000 --- a/src/lib/definitions/metadata.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Metadata { - constructor(model: any) { - Object.assign(this, model); - } - - [name: string]: string; -} diff --git a/src/lib/definitions/oauth2propsdef.ts b/src/lib/definitions/oauth2propsdef.ts deleted file mode 100644 index 3d2b994..0000000 --- a/src/lib/definitions/oauth2propsdef.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Metadata } from './metadata'; -import { overwriteMetadata } from './utils'; - -export class Oauth2propsdef { - /** - * String or a workflow expression. Contains the authority information - */ - authority?: string; - /** - * Defines the grant type - */ - grantType: 'password' | 'clientCredentials' | 'tokenExchange'; - /** - * String or a workflow expression. Contains the client identifier - */ - clientId: string; - /** - * Workflow secret or a workflow expression. Contains the client secret - */ - clientSecret?: string; - /** - * Array containing strings or workflow expressions. Contains the OAuth2 scopes - */ - scopes?: [string, ...string[]]; - /** - * String or a workflow expression. Contains the user name. Used only if grantType is 'resourceOwner' - */ - username?: string; - /** - * String or a workflow expression. Contains the user password. Used only if grantType is 'resourceOwner' - */ - password?: string; - /** - * Array containing strings or workflow expressions. Contains the OAuth2 audiences - */ - audiences?: [string, ...string[]]; - /** - * String or a workflow expression. Contains the subject token - */ - subjectToken?: string; - /** - * String or a workflow expression. Contains the requested subject - */ - requestedSubject?: string; - /** - * String or a workflow expression. Contains the requested issuer - */ - requestedIssuer?: string; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - Object.assign(this, model); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Oauth2propsdef} without deleted properties. - */ - normalize = (): Oauth2propsdef => { - const clone = new Oauth2propsdef(this); - return clone; - }; -} diff --git a/src/lib/definitions/onevents.ts b/src/lib/definitions/onevents.ts deleted file mode 100644 index fc30353..0000000 --- a/src/lib/definitions/onevents.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Action } from './action'; -import { Eventdatafilter } from './eventdatafilter'; -import { - cleanSourceModelProperty, - normalizeActionMode, - normalizeActions, - overwriteActions, - overwriteEventDataFilter, -} from './utils'; - -export class Onevents { - sourceModel?: Onevents; - /** - * References one or more unique event names in the defined workflow events - */ - eventRefs: [string, ...string[]]; - /** - * Specifies how actions are to be performed (in sequence or in parallel) - */ - actionMode?: 'sequential' | 'parallel'; - /** - * Actions to be performed if expression matches - */ - actions?: Action[]; - /** - * Event data filter - */ - eventDataFilter?: Eventdatafilter; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { actionMode: 'sequential' }; - Object.assign(this, defaultModel, model); - - overwriteActions(this); - overwriteEventDataFilter(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Onevents} without deleted properties. - */ - normalize = (): Onevents => { - const clone = new Onevents(this); - - normalizeActionMode(clone, this.sourceModel); - normalizeActions(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/operationstate.ts b/src/lib/definitions/operationstate.ts deleted file mode 100644 index 3de32e5..0000000 --- a/src/lib/definitions/operationstate.ts +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Action } from './action'; -import { End } from './end'; -import { Error } from './error'; -import { Metadata } from './metadata'; -import { Statedatafilter } from './statedatafilter'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeActionMode, - normalizeActions, - normalizeEnd, - normalizeOnErrors, - normalizeTransition, - normalizeUsedForCompensation, - overwriteActions, - overwriteEnd, - overwriteMetadata, - overwriteOnErrors, - overwriteStateDataFilter, - overwritePropertyAsPlainType, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; -import { ActionExecTimeout, StateExecTimeout } from './types'; - -export class Operationstate { - sourceModel?: Operationstate; - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'operation'; - /** - * State end definition - */ - end?: boolean | End; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * Specifies whether actions are performed in sequence or in parallel - */ - actionMode?: 'sequential' | 'parallel'; - /** - * Actions to be performed - */ - actions?: Action[]; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - }; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after all the actions have been performed - */ - transition?: string | Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - type: 'operation', - actionMode: 'sequential', - usedForCompensation: false, - }; - Object.assign(this, defaultModel, model); - - overwriteEnd(this); - overwriteStateDataFilter(this); - overwriteActions(this); - overwritePropertyAsPlainType('timeouts', this); - overwriteOnErrors(this); - overwriteTransition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Operationstate} without deleted properties. - */ - normalize = (): Operationstate => { - const clone = new Operationstate(this); - - normalizeEnd(clone); - - normalizeActionMode(clone, this.sourceModel); - - normalizeActions(clone); - normalizeOnErrors(clone); - normalizeTransition(clone); - normalizeUsedForCompensation(clone, this.sourceModel); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/parallelstate.ts b/src/lib/definitions/parallelstate.ts deleted file mode 100644 index 2a3d6d5..0000000 --- a/src/lib/definitions/parallelstate.ts +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Branch } from './branch'; -import { End } from './end'; -import { Error } from './error'; -import { Metadata } from './metadata'; -import { Statedatafilter } from './statedatafilter'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeBranches, - normalizeCompletionType, - normalizeEnd, - normalizeOnErrors, - normalizeTransition, - normalizeUsedForCompensation, - overwriteBranches, - overwriteEnd, - overwriteMetadata, - overwriteOnErrors, - overwriteStateDataFilter, - overwritePropertyAsPlainType, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; -import { BranchExecTimeout, StateExecTimeout } from './types'; - -export class Parallelstate { - sourceModel?: Parallelstate; - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'parallel'; - /** - * State end definition - */ - end?: boolean | End; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - branchExecTimeout?: /* Branch execution timeout duration (ISO 8601 duration format) */ BranchExecTimeout; - }; - /** - * Branch Definitions - */ - branches?: /* Branch Definition */ Branch[]; - /** - * Option types on how to complete branch execution. - */ - completionType?: 'allOf' | 'atLeast'; - /** - * Used when completionType is set to 'atLeast' to specify the minimum number of branches that must complete before the state will transition. - */ - numCompleted?: number | string; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after all branches have completed execution - */ - transition?: string | Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - type: 'parallel', - completionType: 'allOf', - usedForCompensation: false, - }; - Object.assign(this, defaultModel, model); - - overwriteEnd(this); - overwriteStateDataFilter(this); - overwritePropertyAsPlainType('timeouts', this); - overwriteBranches(this); - overwriteOnErrors(this); - overwriteTransition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Parallelstate} without deleted properties. - */ - normalize = (): Parallelstate => { - const clone = new Parallelstate(this); - - normalizeEnd(clone); - normalizeBranches(clone); - normalizeCompletionType(clone, this.sourceModel); - normalizeOnErrors(clone); - normalizeTransition(clone); - normalizeUsedForCompensation(clone, this.sourceModel); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/produceeventdef.ts b/src/lib/definitions/produceeventdef.ts deleted file mode 100644 index 3750cb0..0000000 --- a/src/lib/definitions/produceeventdef.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { overwritePropertyAsPlainType } from './utils'; - -export class Produceeventdef { - /** - * References a name of a defined event - */ - eventRef: string; - /** - * If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event. - */ - data?: - | string - | { - [key: string]: any; - }; - /** - * Add additional event extension context attributes - */ - contextAttributes?: { - [name: string]: string; - }; - - constructor(model: any) { - Object.assign(this, model); - overwritePropertyAsPlainType('data', this); - overwritePropertyAsPlainType('contextAttributes', this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Produceeventdef} without deleted properties. - */ - normalize = (): Produceeventdef => { - const clone = new Produceeventdef(this); - return clone; - }; -} diff --git a/src/lib/definitions/retrydef.ts b/src/lib/definitions/retrydef.ts deleted file mode 100644 index a85313f..0000000 --- a/src/lib/definitions/retrydef.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Retrydef { - /** - * Unique retry strategy name - */ - name: string; - /** - * Time delay between retry attempts (ISO 8601 duration format) - */ - delay?: string; - /** - * Maximum time delay between retry attempts (ISO 8601 duration format) - */ - maxDelay?: string; - /** - * Static value by which the delay increases during each attempt (ISO 8601 time format) - */ - increment?: string; - /** - * Numeric value, if specified the delay between retries is multiplied by this value. - */ - multiplier?: number | string; - /** - * Maximum number of retry attempts. - */ - maxAttempts: number | string; - /** - * If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format) - */ - jitter?: number | string; - - constructor(model: any) { - Object.assign(this, model); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Retrydef} without deleted properties. - */ - normalize = (): Retrydef => { - const clone = new Retrydef(this); - return clone; - }; -} diff --git a/src/lib/definitions/schedule.ts b/src/lib/definitions/schedule.ts deleted file mode 100644 index c3f7506..0000000 --- a/src/lib/definitions/schedule.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Crondef } from './crondef'; -import { overwriteCron } from './utils'; - -export class Schedule { - /** - * Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. - */ - interval?: string; - cron?: string | Crondef; - /** - * Timezone name used to evaluate the interval & cron-expression. (default: UTC) - */ - timezone?: string; - - constructor(model: any) { - Object.assign(this, model); - - overwriteCron(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Schedule} without deleted properties. - */ - normalize = (): Schedule => { - const clone = new Schedule(this); - return clone; - }; -} diff --git a/src/lib/definitions/sleep.ts b/src/lib/definitions/sleep.ts deleted file mode 100644 index cfbd4a3..0000000 --- a/src/lib/definitions/sleep.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Sleep { - /** - * Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - before: string; - /** - * Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - after?: string; - - constructor(model: any) { - Object.assign(this, model); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Sleep} without deleted properties. - */ - normalize = (): Sleep => { - const clone = new Sleep(this); - return clone; - }; -} diff --git a/src/lib/definitions/sleepstate.ts b/src/lib/definitions/sleepstate.ts deleted file mode 100644 index 58843ce..0000000 --- a/src/lib/definitions/sleepstate.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { End } from './end'; -import { Metadata } from './metadata'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeEnd, - normalizeTransition, - overwriteEnd, - overwriteMetadata, - overwriteTransition, - setEndValueIfNoTransition, -} from './utils'; - -export class Sleepstate { - sourceModel?: Sleepstate; - /** - * State name - */ - name?: string; - /** - * State type - */ - type: 'sleep'; - end?: End; - /** - * Duration (ISO 8601 duration format) to sleep - */ - duration?: string; - - transition?: string | Transition; - - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - type: 'sleep', - }; - Object.assign(this, defaultModel, model); - - overwriteEnd(this); - overwriteTransition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Delaystate} without deleted properties. - */ - normalize = (): Sleepstate => { - const clone = new Sleepstate(this); - - normalizeEnd(clone); - normalizeTransition(clone); - setEndValueIfNoTransition(clone); - - cleanSourceModelProperty(clone); - - return clone; - }; -} diff --git a/src/lib/definitions/specification.ts b/src/lib/definitions/specification.ts index 436473b..2bf3163 100644 --- a/src/lib/definitions/specification.ts +++ b/src/lib/definitions/specification.ts @@ -14,51 +14,1093 @@ * limitations under the License. */ -export * from './workflow'; -export * from './action'; -export * from './actiondatafilter'; -export * from './authdef'; -export * from './basicpropsdef'; -export * from './bearerpropsdef'; -export * from './branch'; -export * from './callbackstate'; -export * from './continueasdef'; -export * from './correlationDef'; -export * from './crondef'; -export * from './databasedswitchstate'; -export * from './defaultconditiondef'; -export * from './end'; -export * from './enddatacondition'; -export * from './endeventcondition'; -export * from './error'; -export * from './errordef'; -export * from './eventbasedswitchstate'; -export * from './eventdatafilter'; -export * from './eventdef'; -export * from './eventref'; -export * from './eventstate'; -export * from './extension'; -export * from './foreachstate'; -export * from './function'; -export * from './functionref'; -export * from './injectstate'; -export * from './metadata'; -export * from './oauth2propsdef'; -export * from './onevents'; -export * from './operationstate'; -export * from './parallelstate'; -export * from './produceeventdef'; -export * from './retrydef'; -export * from './schedule'; -export * from './sleep'; -export * from './sleepstate'; -export * from './startdef'; -export * from './statedatafilter'; -export * from './subflowref'; -export * from './timeouts'; -export * from './transition'; -export * from './transitiondatacondition'; -export * from './transitioneventcondition'; -export * from './workflow'; -export * from './workflowExecTimeout'; -export * from './types'; +/***************************************************************************************** + * + * /!\ This file is computer generated. Any manual modification can and will be lost. /!\ + * + *****************************************************************************************/ + +/** + * The schema used to describe and validate the input of the workflow or task. + */ +export type Schema = { + /** + * The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`. + */ + format?: string; + [k: string]: unknown; +} & ( + | { + /** + * The schema's inline definition. + */ + document: { + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + /** + * The schema's external resource. + */ + resource: + | string + | { + /** + * The endpoint's URI. + */ + uri: string; + /** + * The authentication policy to use. + */ + authentication?: AuthenticationPolicy | string; + /** + * The external resource's name, if any. + */ + name?: string; + [k: string]: unknown; + }; + [k: string]: unknown; + } +); +/** + * Defines an authentication policy. + * + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "authenticationPolicy". + */ +export type AuthenticationPolicy = + | { + basic: { + /** + * The username to use. + */ + username: string; + /** + * The password to use. + */ + password: string; + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + bearer: { + /** + * The bearer token to use. + */ + token: string; + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + oauth2: { + /** + * The URI that references the OAuth2 authority to use. + */ + authority: string; + /** + * The grant type to use. + */ + grant: string; + client: { + /** + * The client id to use. + */ + id: string; + /** + * The client secret to use, if any. + */ + secret?: string; + [k: string]: unknown; + }; + /** + * The scopes, if any, to request the token for. + */ + scopes?: string[]; + /** + * The audiences, if any, to request the token for. + */ + audiences?: string[]; + /** + * The username to use. Used only if the grant type is Password. + */ + username?: string; + /** + * The password to use. Used only if the grant type is Password. + */ + password?: string; + subject?: Oauth2Token; + actor?: Oauth2Token; + [k: string]: unknown; + }; + [k: string]: unknown; + }; +/** + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "task". + */ +export type Task = + | CallTask + | DoTask + | ForkTask + | EmitTask + | ForTask + | ListenTask + | RaiseTask + | RunTask + | SetTask + | SwitchTask + | TryTask + | WaitTask; +/** + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "callTask". + */ +export type CallTask = CallAsyncAPI | CallGRPC | CallHTTP | CallOpenAPI | CallFunction; +/** + * Defines the event(s) to listen to. + */ +export type EventConsumptionStrategy = + | { + /** + * A list containing all the events that must be consumed. + */ + all: EventFilter[]; + [k: string]: unknown; + } + | { + /** + * A list containing any of the events to consume. + */ + any: EventFilter[]; + [k: string]: unknown; + } + | { + one: EventFilter; + [k: string]: unknown; + }; +/** + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "externalResource". + */ +export type ExternalResource = + | string + | { + /** + * The endpoint's URI. + */ + uri: string; + /** + * The authentication policy to use. + */ + authentication?: AuthenticationPolicy | string; + /** + * The external resource's name, if any. + */ + name?: string; + [k: string]: unknown; + }; +/** + * The task(s) to execute before the extended task, if any. + */ +export type TaskList = { + [k: string]: Task; +}[]; +/** + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "flowDirective". + */ +export type FlowDirective = ('continue' | 'exit' | 'end') | string; + +/** + * Serverless Workflow DSL - Workflow Schema + */ +export interface Workflow { + /** + * Documents the workflow + */ + document: { + /** + * The version of the DSL used by the workflow. + */ + dsl: string; + /** + * The workflow's namespace. + */ + namespace: string; + /** + * The workflow's name. + */ + name: string; + /** + * The workflow's semantic version. + */ + version: string; + /** + * The workflow's title. + */ + title?: string; + /** + * The workflow's Markdown summary. + */ + summary?: string; + /** + * A key/value mapping of the workflow's tags, if any. + */ + tags?: { + [k: string]: unknown; + }; + [k: string]: unknown; + }; + input?: Input; + /** + * Defines the workflow's reusable components. + */ + use?: { + /** + * The workflow's reusable authentication policies. + */ + authentications?: { + [k: string]: AuthenticationPolicy; + }; + /** + * The workflow's reusable errors. + */ + errors?: { + [k: string]: Error; + }; + /** + * The workflow's extensions. + */ + extensions?: { + [k: string]: Extension; + }[]; + /** + * The workflow's reusable functions. + */ + functions?: { + [k: string]: Task; + }; + /** + * The workflow's reusable retry policies. + */ + retries?: { + [k: string]: RetryPolicy; + }; + /** + * The workflow's secrets. + */ + secrets?: string[]; + [k: string]: unknown; + }; + do: TaskList; + timeout?: Timeout; + output?: Output; + /** + * Schedules the workflow + */ + schedule?: { + every?: Duration; + /** + * Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight." + */ + cron?: string; + after?: Duration; + on?: EventConsumptionStrategy; + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * Configures the workflow's input. + */ +export interface Input { + schema?: Schema; + /** + * A runtime expression, if any, used to mutate and/or filter the input of the workflow or task. + */ + from?: string; + [k: string]: unknown; +} +/** + * The security token that represents the identity of the party on behalf of whom the request is being made. + */ +export interface Oauth2Token { + /** + * The security token to use to use. + */ + token: string; + /** + * The type of the security token to use to use. + */ + type: string; + [k: string]: unknown; +} + +/** + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "error". + */ +export interface Error { + /** + * A URI reference that identifies the error type. + */ + type: string; + /** + * The status code generated by the origin for this occurrence of the error. + */ + status: number; + /** + * A JSON Pointer used to reference the component the error originates from. + */ + instance: string; + /** + * A short, human-readable summary of the error. + */ + title?: string; + /** + * A human-readable explanation specific to this occurrence of the error. + */ + detail?: string; + [k: string]: unknown; +} +/** + * The definition of a an extension. + * + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "extension". + */ +export interface Extension { + /** + * The type of task to extend. + */ + extend: + | 'call' + | 'composite' + | 'emit' + | 'for' + | 'listen' + | 'raise' + | 'run' + | 'set' + | 'switch' + | 'try' + | 'wait' + | 'all'; + /** + * A runtime expression, if any, used to determine whether or not the extension should apply in the specified context. + */ + when?: string; + before?: TaskList; + after?: TaskList; + [k: string]: unknown; +} +export interface CallAsyncAPI { + call: 'asyncapi'; + /** + * Defines the AsyncAPI call to perform. + */ + with: { + /** + * The document that defines the AsyncAPI operation to call. + */ + document: + | string + | { + /** + * The endpoint's URI. + */ + uri: string; + /** + * The authentication policy to use. + */ + authentication?: AuthenticationPolicy | string; + /** + * The external resource's name, if any. + */ + name?: string; + [k: string]: unknown; + }; + /** + * A reference to the AsyncAPI operation to call. + */ + operationRef: string; + /** + * A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel. + */ + server?: string; + /** + * The name of the message to use. If not set, defaults to the first message defined by the operation. + */ + message?: string; + /** + * The name of the binding to use. If not set, defaults to the first binding defined by the operation. + */ + binding?: string; + /** + * The payload to call the AsyncAPI operation with, if any. + */ + payload?: { + [k: string]: unknown; + }; + /** + * The authentication policy, if any, to use when calling the AsyncAPI operation. + */ + authentication?: AuthenticationPolicy | string; + }; + [k: string]: unknown; +} +export interface CallGRPC { + call: 'grpc'; + /** + * Defines the GRPC call to perform. + */ + with: { + /** + * The proto resource that describes the GRPC service to call. + */ + proto: + | string + | { + /** + * The endpoint's URI. + */ + uri: string; + /** + * The authentication policy to use. + */ + authentication?: AuthenticationPolicy | string; + /** + * The external resource's name, if any. + */ + name?: string; + [k: string]: unknown; + }; + service: { + /** + * The name of the GRPC service to call. + */ + name: string; + /** + * The hostname of the GRPC service to call. + */ + host: string; + /** + * The port number of the GRPC service to call. + */ + port?: number; + /** + * The endpoint's authentication policy, if any. + */ + authentication?: AuthenticationPolicy | string; + [k: string]: unknown; + }; + /** + * The name of the method to call on the defined GRPC service. + */ + method: string; + /** + * The arguments, if any, to call the method with. + */ + arguments?: { + [k: string]: unknown; + }; + }; + [k: string]: unknown; +} +export interface CallHTTP { + call: 'http'; + /** + * Defines the HTTP call to perform. + */ + with: { + /** + * The HTTP method of the HTTP request to perform. + */ + method: string; + /** + * The HTTP endpoint to send the request to. + */ + endpoint: Endpoint | string; + /** + * A name/value mapping of the headers, if any, of the HTTP request to perform. + */ + headers?: { + [k: string]: unknown; + }; + /** + * The body, if any, of the HTTP request to perform. + */ + body?: { + [k: string]: unknown; + }; + /** + * The http call output format. Defaults to 'content'. + */ + output?: 'raw' | 'content' | 'response'; + }; + [k: string]: unknown; +} +/** + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "endpoint". + */ +export interface Endpoint { + /** + * The endpoint's URI. + */ + uri: string; + /** + * The authentication policy to use. + */ + authentication?: AuthenticationPolicy | string; + [k: string]: unknown; +} +export interface CallOpenAPI { + call: 'openapi'; + /** + * Defines the OpenAPI call to perform. + */ + with: { + /** + * The document that defines the OpenAPI operation to call. + */ + document: + | string + | { + /** + * The endpoint's URI. + */ + uri: string; + /** + * The authentication policy to use. + */ + authentication?: AuthenticationPolicy | string; + /** + * The external resource's name, if any. + */ + name?: string; + [k: string]: unknown; + }; + /** + * The id of the OpenAPI operation to call. + */ + operationId: string; + /** + * A name/value mapping of the parameters of the OpenAPI operation to call. + */ + parameters?: { + [k: string]: unknown; + }; + /** + * The authentication policy, if any, to use when calling the OpenAPI operation. + */ + authentication?: AuthenticationPolicy | string; + /** + * The http call output format. Defaults to 'content'. + */ + output?: 'raw' | 'content' | 'response'; + }; + [k: string]: unknown; +} +export interface CallFunction { + /** + * The name of the function to call. + */ + call: string; + /** + * A name/value mapping of the parameters, if any, to call the function with. + */ + with?: { + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * Allows to execute a list of tasks in sequence + */ +export interface DoTask { + do: TaskList; + [k: string]: unknown; +} +/** + * Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output. + */ +export interface ForkTask { + fork: { + branches: TaskList; + /** + * Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output. + */ + compete?: boolean; + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services. + */ +export interface EmitTask { + emit: { + event: { + /** + * The event's unique identifier + */ + id?: string; + /** + * Identifies the context in which an event happened + */ + source: string; + /** + * This attribute contains a value describing the type of event related to the originating occurrence. + */ + type: string; + time?: string; + subject?: string; + /** + * Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format. + */ + datacontenttype?: string; + dataschema?: string; + [k: string]: unknown; + }; + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets. + */ +export interface ForTask { + for: { + /** + * The name of the variable used to store the current item being enumerated. + */ + each?: string; + /** + * A runtime expression used to get the collection to enumerate. + */ + in: string; + /** + * The name of the variable used to store the index of the current item being enumerated. + */ + at?: string; + [k: string]: unknown; + }; + /** + * A runtime expression that represents the condition, if any, that must be met for the iteration to continue. + */ + while?: string; + do: TaskList; + [k: string]: unknown; +} +/** + * Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems. + */ +export interface ListenTask { + listen: { + to: EventConsumptionStrategy; + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes. + * + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "eventFilter". + */ +export interface EventFilter { + /** + * An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes. + */ + with: { + /** + * The event's unique identifier + */ + id?: string; + /** + * Identifies the context in which an event happened + */ + source?: string; + /** + * This attribute contains a value describing the type of event related to the originating occurrence. + */ + type?: string; + time?: string; + subject?: string; + /** + * Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format. + */ + datacontenttype?: string; + dataschema?: string; + [k: string]: unknown; + }; + /** + * A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics. + */ + correlate?: { + [k: string]: { + /** + * A runtime expression used to extract the correlation value from the filtered event. + */ + from: string; + /** + * A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation. + */ + expect?: string; + [k: string]: unknown; + }; + }; + [k: string]: unknown; +} + +/** + * Intentionally triggers and propagates errors. + */ +export interface RaiseTask { + raise: { + error: Error; + [k: string]: unknown; + }; + [k: string]: unknown; +} + +/** + * Provides the capability to execute external containers, shell commands, scripts, or workflows. + */ +export interface RunTask { + run: + | { + container: { + /** + * The name of the container image to run. + */ + image: string; + /** + * The command, if any, to execute on the container + */ + command?: string; + /** + * The container's port mappings, if any. + */ + ports?: { + [k: string]: unknown; + }; + /** + * The container's volume mappings, if any. + */ + volumes?: { + [k: string]: unknown; + }; + /** + * A key/value mapping of the environment variables, if any, to use when running the configured process. + */ + environment?: { + [k: string]: unknown; + }; + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + script: + | { + code: string; + [k: string]: unknown; + } + | { + source: ExternalResource; + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + shell: { + /** + * The shell command to run. + */ + command: string; + /** + * A list of the arguments of the shell command to run. + */ + arguments?: { + [k: string]: unknown; + }; + /** + * A key/value mapping of the environment variables, if any, to use when running the configured process. + */ + environment?: { + [k: string]: unknown; + }; + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + workflow: { + /** + * The namespace the workflow to run belongs to. + */ + namespace: string; + /** + * The name of the workflow to run. + */ + name: string; + /** + * The version of the workflow to run. Defaults to latest + */ + version: string; + /** + * The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified. + */ + input?: { + [k: string]: unknown; + }; + [k: string]: unknown; + }; + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * A task used to set data + */ +export interface SetTask { + /** + * The data to set + */ + set: { + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria + */ +export interface SwitchTask { + /** + * @minItems 1 + */ + switch: [ + { + [k: string]: { + /** + * The case's name. + */ + name?: string; + /** + * A runtime expression used to determine whether or not the case matches. + */ + when?: string; + /** + * The flow directive to execute when the case matches. + */ + then?: ('continue' | 'exit' | 'end') | string; + [k: string]: unknown; + }; + }, + ...{ + [k: string]: { + /** + * The case's name. + */ + name?: string; + /** + * A runtime expression used to determine whether or not the case matches. + */ + when?: string; + /** + * The flow directive to execute when the case matches. + */ + then?: ('continue' | 'exit' | 'end') | string; + [k: string]: unknown; + }; + }[], + ]; + [k: string]: unknown; +} +/** + * Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones. + */ +export interface TryTask { + try: TaskList; + catch: { + errors?: { + [k: string]: unknown; + }; + /** + * The name of the runtime expression variable to save the error as. Defaults to 'error'. + */ + as?: string; + /** + * A runtime expression used to determine whether or not to catch the filtered error + */ + when?: string; + /** + * A runtime expression used to determine whether or not to catch the filtered error + */ + exceptWhen?: string; + retry?: RetryPolicy; + do?: TaskList; + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * The retry policy to use, if any, when catching errors. + */ +export interface RetryPolicy { + /** + * A runtime expression, if any, used to determine whether or not to retry running the task, in a given context. + */ + when?: string; + /** + * A runtime expression used to determine whether or not to retry running the task, in a given context. + */ + exceptWhen?: string; + delay?: Duration; + /** + * The retry duration backoff. + */ + backoff?: + | { + /** + * The definition of the constant backoff to use, if any. + */ + constant: { + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + /** + * The definition of the exponential backoff to use, if any. + */ + exponential: { + [k: string]: unknown; + }; + [k: string]: unknown; + } + | { + /** + * The definition of the linear backoff to use, if any. + */ + linear: { + [k: string]: unknown; + }; + [k: string]: unknown; + }; + /** + * The retry limit, if any + */ + limit?: { + attempt?: { + /** + * The maximum amount of retry attempts, if any. + */ + count?: number; + duration?: Duration; + [k: string]: unknown; + }; + duration?: Duration; + [k: string]: unknown; + }; + /** + * The parameters, if any, that control the randomness or variability of the delay between retry attempts. + */ + jitter?: { + from: Duration; + to: Duration; + [k: string]: unknown; + }; + [k: string]: unknown; +} +/** + * The duration to wait between retry attempts. + */ +export interface Duration { + /** + * Number of days, if any. + */ + days?: number; + /** + * Number of days, if any. + */ + hours?: number; + /** + * Number of minutes, if any. + */ + minutes?: number; + /** + * Number of seconds, if any. + */ + seconds?: number; + /** + * Number of milliseconds, if any. + */ + milliseconds?: number; + [k: string]: unknown; +} + +/** + * Allows workflows to pause or delay their execution for a specified period of time. + */ +export interface WaitTask { + wait: Duration; + [k: string]: unknown; +} + +/** + * The workflow's timeout configuration, if any. + */ +export interface Timeout { + after: Duration; + [k: string]: unknown; +} + +/** + * Configures the workflow's output. + */ +export interface Output { + schema?: Schema; + /** + * A runtime expression, if any, used to mutate and/or filter the output of the workflow or task. + */ + as?: string; + [k: string]: unknown; +} + +/** + * This interface was referenced by `Workflow`'s JSON-Schema + * via the `definition` "taskBase". + */ +export interface TaskBase { + /** + * A runtime expression, if any, used to determine whether or not the task should be run. + */ + if?: string; + input?: Input; + output?: Output; + export?: Export; + timeout?: Timeout; + /** + * The flow directive to be performed upon completion of the task. + */ + then?: ('continue' | 'exit' | 'end') | string; + [k: string]: unknown; +} + +/** + * Export task output to context. + */ +export interface Export { + schema?: Schema; + /** + * A runtime expression, if any, used to export the output data to the context. + */ + as?: string; + [k: string]: unknown; +} diff --git a/src/lib/definitions/startdef.ts b/src/lib/definitions/startdef.ts deleted file mode 100644 index e53c520..0000000 --- a/src/lib/definitions/startdef.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Schedule } from './schedule'; -import { overwriteSchedule } from './utils'; - -export class Startdef { - /** - * Name of the starting workflow state - */ - stateName?: string; - /** - * Define the time/repeating intervals or cron at which workflow instances should be automatically started. - */ - schedule: string | Schedule; - - constructor(model: any) { - Object.assign(this, model); - - overwriteSchedule(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Startdef} without deleted properties. - */ - normalize = (): Startdef => { - const clone = new Startdef(this); - return clone; - }; -} diff --git a/src/lib/definitions/statedatafilter.ts b/src/lib/definitions/statedatafilter.ts deleted file mode 100644 index e7487ab..0000000 --- a/src/lib/definitions/statedatafilter.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class Statedatafilter { - /** - * Workflow expression to filter the state data input - */ - input?: string; - /** - * Workflow expression that filters the state data output - */ - output?: string; - - constructor(model: any) { - Object.assign(this, model); - } - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Statedatafilter} without deleted properties. - */ - normalize = (): Statedatafilter => { - const clone = new Statedatafilter(this); - return clone; - }; -} diff --git a/src/lib/definitions/subflowref.ts b/src/lib/definitions/subflowref.ts deleted file mode 100644 index 9cc3445..0000000 --- a/src/lib/definitions/subflowref.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { cleanSourceModelProperty, normalizeInvoke, normalizeOnParentComplete } from './utils'; - -export class Subflowref { - sourceModel?: Subflowref; - /** - * Unique id of the sub-workflow to be invoked - */ - workflowId: string; - /** - * Version of the sub-workflow to be invoked - */ - version?: string; // ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - /** - * If invoke is 'async', specifies how subflow execution should behave when parent workflow completes. Default is 'terminate' - */ - onParentComplete?: 'continue' | 'terminate'; - /** - * Specifies if the subflow should be invoked sync or async - */ - invoke?: 'sync' | 'async'; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Subflowref} without deleted properties. - */ - normalize = (): Subflowref => { - const clone = new Subflowref(this); - - normalizeInvoke(clone, this.sourceModel); - normalizeOnParentComplete(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/timeouts.ts b/src/lib/definitions/timeouts.ts deleted file mode 100644 index d6c5490..0000000 --- a/src/lib/definitions/timeouts.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { WorkflowExecTimeout } from './workflowExecTimeout'; -import { ActionExecTimeout, BranchExecTimeout, EventTimeout, StateExecTimeout } from './types'; -import { cleanSourceModelProperty, normalizeWorkflowExecTimeout, overwriteWorkflowExecTimeout } from './utils'; - -export class Timeouts { - sourceModel?: Timeouts; - workflowExecTimeout?: WorkflowExecTimeout; - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - branchExecTimeout?: /* Branch execution timeout duration (ISO 8601 duration format) */ BranchExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - overwriteWorkflowExecTimeout(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Exectimeout} without deleted properties. - */ - normalize = (): Timeouts => { - const clone = new Timeouts(this); - normalizeWorkflowExecTimeout(clone); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/transition.ts b/src/lib/definitions/transition.ts deleted file mode 100644 index 4477f61..0000000 --- a/src/lib/definitions/transition.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Produceeventdef } from './produceeventdef'; -import { cleanSourceModelProperty, normalizeCompensate, overwriteProduceEvents } from './utils'; - -export class Transition { - sourceModel?: Transition; - /** - * Name of state to transition to - */ - nextState: string; - /** - * Array of events to be produced before the transition happens - */ - produceEvents?: /* Produce an event and set its data */ Produceeventdef[]; - /** - * If set to true, triggers workflow compensation when before this transition is taken. Default is false - */ - compensate?: boolean; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - compensate: false, - }; - Object.assign(this, defaultModel, model); - - overwriteProduceEvents(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Transition} without deleted properties. - */ - normalize = (): Transition => { - const clone = new Transition(this); - - normalizeCompensate(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/transitiondatacondition.ts b/src/lib/definitions/transitiondatacondition.ts deleted file mode 100644 index 65dda3b..0000000 --- a/src/lib/definitions/transitiondatacondition.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Metadata } from './metadata'; -import { Transition } from './transition'; -import { cleanSourceModelProperty, normalizeTransition, overwriteMetadata, overwriteTransition } from './utils'; - -export class Transitiondatacondition { - sourceModel?: Transitiondatacondition; - /** - * Data condition name - */ - name?: string; - /** - * Workflow expression evaluated against state data. Must evaluate to true or false - */ - condition: string; - /** - * Workflow transition if condition is evaluated to true - */ - transition: string | Transition; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - - overwriteTransition(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Transitiondatacondition} without deleted properties. - */ - normalize = (): Transitiondatacondition => { - const clone = new Transitiondatacondition(this); - - normalizeTransition(clone); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/transitioneventcondition.ts b/src/lib/definitions/transitioneventcondition.ts deleted file mode 100644 index 7fe0bd8..0000000 --- a/src/lib/definitions/transitioneventcondition.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Eventdatafilter } from './eventdatafilter'; -import { Metadata } from './metadata'; -import { Transition } from './transition'; -import { - cleanSourceModelProperty, - normalizeTransition, - overwriteEventDataFilter, - overwriteMetadata, - overwriteTransition, -} from './utils'; - -export class Transitioneventcondition { - sourceModel?: Transitioneventcondition; - /** - * Event condition name - */ - name?: string; - /** - * References an unique event name in the defined workflow events - */ - eventRef: string; - /** - * Next transition of the workflow if there is valid matches - */ - transition: string | Transition; - /** - * Event data filter definition - */ - eventDataFilter?: Eventdatafilter; - metadata?: /* Metadata information */ Metadata; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - Object.assign(this, model); - - overwriteTransition(this); - overwriteEventDataFilter(this); - overwriteMetadata(this); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Transitioneventcondition} without deleted properties. - */ - normalize = (): Transitioneventcondition => { - const clone = new Transitioneventcondition(this); - - normalizeTransition(clone); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/types.ts b/src/lib/definitions/types.ts deleted file mode 100644 index 87254a2..0000000 --- a/src/lib/definitions/types.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { CorrelationDef } from './correlationDef'; -import { Transitiondatacondition } from './transitiondatacondition'; -import { Enddatacondition } from './enddatacondition'; -import { Retrydef } from './retrydef'; -import { Function } from './function'; -import { Databasedswitchstate } from './databasedswitchstate'; -import { Eventbasedswitchstate } from './eventbasedswitchstate'; -import { Transitioneventcondition } from './transitioneventcondition'; -import { Endeventcondition } from './endeventcondition'; -import { Eventstate } from './eventstate'; -import { Operationstate } from './operationstate'; -import { Parallelstate } from './parallelstate'; -import { Injectstate } from './injectstate'; -import { Foreachstate } from './foreachstate'; -import { Callbackstate } from './callbackstate'; -import { Eventdef } from './eventdef'; -import { Sleepstate } from './sleepstate'; -import { Authdef } from './authdef'; -import { Errordef } from './errordef'; -import { Specification } from './index'; -import { Extension } from './extension'; - -export type CorrelationDefs = [ - /* CloudEvent correlation definition */ CorrelationDef, - .../* CloudEvent correlation definition */ CorrelationDef[] -]; - -export type Datacondition /* Switch state data based condition */ = - | Transitiondatacondition - | /* Switch state data based condition */ Enddatacondition; - -export type Retries = string /* uri */ | [Retrydef, ...Retrydef[]]; - -export type Functions = string /* uri */ | [Function, ...Function[]]; - -export type Switchstate /* Permits transitions to other states based on data conditions */ = - | Databasedswitchstate - | /* Permits transitions to other states based on events */ Eventbasedswitchstate; - -export type Eventcondition /* Switch state data event condition */ = - | Transitioneventcondition - | /* Switch state data event condition */ Endeventcondition; - -export type States = [ - ( - | /* Causes the workflow execution to sleep for a specified duration */ Sleepstate - | /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ Eventstate - | /* Defines actions be performed. Does not wait for incoming events */ Operationstate - | /* Consists of a number of states that are executed in parallel */ Parallelstate - | Switchstate - | /* Inject static data into state data. Does not perform any actions */ Injectstate - | /* Execute a set of defined actions or workflows for each element of a data array */ Foreachstate - | /* This state performs an action, then waits for the callback event that denotes completion of the action */ Callbackstate - ), - ...( - | /* Causes the workflow execution to sleep for a specified duration */ Sleepstate - | /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ Eventstate - | /* Defines actions be performed. Does not wait for incoming events */ Operationstate - | /* Consists of a number of states that are executed in parallel */ Parallelstate - | Switchstate - | /* Inject static data into state data. Does not perform any actions */ Injectstate - | /* Execute a set of defined actions or workflows for each element of a data array */ Foreachstate - | /* This state performs an action, then waits for the callback event that denotes completion of the action */ Callbackstate - )[] -]; - -/** - * Branch execution timeout duration (ISO 8601 duration format) - */ -export type BranchExecTimeout = string; - -/** - * Action execution timeout duration (ISO 8601 duration format) - */ -export type ActionExecTimeout = string; - -/** - * Timeout duration to wait for consuming defined events (ISO 8601 duration format) - */ -export type EventTimeout = string; - -export type Secrets = string /* uri */ | [string, ...string[]]; - -export type Events = string /* uri */ | [Eventdef, ...Eventdef[]]; - -export type Auth = string /* uri */ | [Authdef, ...Authdef[]]; - -export type Errors = string /* uri */ | [Errordef, ...Errordef[]]; - -export type Properties = Specification.Basicpropsdef | Specification.Bearerpropsdef | Specification.Oauth2propsdef; - -export type Extensions = string /* uri */ | [Extension, ...Extension[]]; - -/** - * Workflow state execution timeout duration (ISO 8601 duration format) - */ -export type StateExecTimeout = string; diff --git a/src/lib/definitions/utils.ts b/src/lib/definitions/utils.ts deleted file mode 100644 index 47684c0..0000000 --- a/src/lib/definitions/utils.ts +++ /dev/null @@ -1,846 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Specification } from './index'; -import { isObject } from '../utils'; - -/** - * Modify the provided object, set the value to 'schedule' property as an instance of Specification.Schedule class, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteSchedule(object: { schedule: string | Specification.Schedule }): void { - if (isObject(object.schedule)) { - object.schedule = new Specification.Schedule(object.schedule); - } -} - -/** - * Modify the provided object, set the value to 'start' property as an instance of Specification.Startdef class, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteStart(object: { start?: string | Specification.Startdef }): void { - if (isObject(object.start)) { - object.start = new Specification.Startdef(object.start); - } -} - -/** - * Modify the provided object, set the value to 'end' property as an instance of Specification.End class, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteEnd(object: { end?: boolean | Specification.End }): void { - if (isObject(object.end)) { - object.end = new Specification.End(object.end); - } -} - -/** - * Modify the provided object, set the value to 'cron' property as an instance of Specification.Crondef class, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteCron(object: { cron?: string | Specification.Crondef }): void { - if (isObject(object.cron)) { - object.cron = new Specification.Crondef(object.cron); - } -} - -/** - * Modify the provided object, set the value to 'transition' property as an instance of Specification.Transition class, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteTransition(object: { transition?: string | Specification.Transition }): void { - if (isObject(object.transition)) { - object.transition = new Specification.Transition(object.transition); - } -} - -/** - * Modify the provided object, set the value to 'defaultCondition' property as an instance of Specification.Defaultconditiondef class - * @param object to set/overwrite the property - */ -export function overwriteDefaultCondition(object: { defaultCondition?: Specification.Defaultconditiondef }): void { - object.defaultCondition = object.defaultCondition && new Specification.Defaultconditiondef(object.defaultCondition); -} - -/** - * Modify the provided object, set the value to 'eventConditions' property as an instance of Specification.Eventcondition[] class - * Throws an error if provided value is neither a Transitioneventcondition nor a Endeventcondition - * @param object to set/overwrite the property - */ -export function overwriteEventConditions(object: { eventConditions: Specification.Eventcondition[] }): void { - if (Array.isArray(object.eventConditions)) { - object.eventConditions = object.eventConditions.map((eventCondition: any) => { - if (eventCondition.transition) { - return new Specification.Transitioneventcondition(eventCondition); - } - - if (eventCondition.end) { - return new Specification.Endeventcondition(eventCondition); - } - - throw new Error( - `Provided value is neither Transitioneventcondition nor Endeventcondition \n data= ${eventCondition} ` - ); - }); - } -} - -/** - * Modify the provided object, set the value to 'dataConditions' property as an instance of Specification.Datacondition[] class - * Throws an error if provided value is neither a Transitiondatacondition nor a Enddatacondition - * @param object to set/overwrite the property - */ -export function overwriteDataConditions(object: { dataConditions: Specification.Datacondition[] }): void { - if (Array.isArray(object.dataConditions)) { - object.dataConditions = object.dataConditions.map((dataCondition: any) => { - if (dataCondition.transition) { - return new Specification.Transitiondatacondition(dataCondition); - } - - if (dataCondition.end) { - return new Specification.Enddatacondition(dataCondition); - } - - throw new Error( - `Provided value is neither Transitiondatacondition nor Enddatacondition \n data= ${dataCondition} ` - ); - }); - } -} - -/** - * Modify the provided object, set the value to 'actions' property as an instance of Specification.Action[] class - * @param object to set/overwrite the property - */ -export function overwriteActions(object: { actions?: Specification.Action[] }): void { - if (Array.isArray(object.actions)) { - object.actions = object.actions.map((v) => new Specification.Action(v)); - } -} - -/** - * Modify the provided object, set the value to 'onEvents' property as an instance of Specification.Onevents[] class - * @param object to set/overwrite the property - */ -export function overwriteOnEvents(object: { onEvents: Specification.Onevents[] }): void { - object.onEvents = object.onEvents.map((event) => new Specification.Onevents(event)); -} - -/** - * Modify the provided object, set the value to 'stateDataFilter' property as an instance of Specification.Statedatafilter class - * @param object to set/overwrite the property - */ -export function overwriteStateDataFilter(object: { stateDataFilter?: Specification.Statedatafilter }): void { - object.stateDataFilter = object.stateDataFilter && new Specification.Statedatafilter(object.stateDataFilter); -} - -/** - * Modify the provided object, set the value to 'metadata' property as an instance of Specification.Metadata class - * @param object to set/overwrite the property - */ -export function overwriteMetadata(object: { metadata?: Specification.Metadata }): void { - object.metadata = object.metadata && new Specification.Metadata(object.metadata); -} - -/** - * Modify the provided object, set the value to 'retries' property as an instance of Specification.Retries class - * @param object to set/overwrite the property - */ -export function overwriteRetries(object: { retries?: Specification.Retries }) { - if (Array.isArray(object.retries)) { - object.retries = (object.retries as Specification.Retrydef[]).map( - (f) => new Specification.Retrydef(f) - ) as Specification.Retries; - } -} - -/** - * Modify the provided object, set the value to 'events' property as an instance of Specification.Events class - * @param object to set/overwrite the property - */ -export function overwriteEvents(object: { events?: Specification.Events }) { - if (Array.isArray(object.events)) { - object.events = (object.events as Specification.Eventdef[]).map( - (f) => new Specification.Eventdef(f) - ) as Specification.Events; - } -} - -/** - * Modify the provided object, set the value to 'errors' property as an instance of Specification.Errors class - * @param object to set/overwrite the property - */ -export function overwriteErrors(object: { errors?: Specification.Errors }) { - if (Array.isArray(object.errors)) { - object.errors = (object.errors as Specification.Errordef[]).map( - (f) => new Specification.Errordef(f) - ) as Specification.Errors; - } -} - -/** - * Modify the provided object, set the value to 'extensions' property as an instance of Specification.Auth class - * @param object to set/overwrite the property - */ -export function overwriteExtensions(object: { extensions?: Specification.Extensions }) { - if (Array.isArray(object.extensions)) { - object.extensions = (object.extensions as Specification.Extension[]).map( - (f) => new Specification.Extension(f) - ) as Specification.Extensions; - } -} - -/** - * Modify the provided object, set the value to 'auth' property as an instance of Specification.Auth class - * @param object to set/overwrite the property - */ -export function overwriteAuth(object: { auth?: Specification.Auth }) { - if (Array.isArray(object.auth)) { - object.auth = (object.auth as Specification.Authdef[]).map( - (f) => new Specification.Authdef(f) - ) as Specification.Auth; - } -} - -/** - * Modify the provided object, set the value to 'functions' property as an instance of Specification.Functions class - * @param object to set/overwrite the property - */ -export function overwriteFunctions(object: { functions?: Specification.Functions }) { - if (Array.isArray(object.functions)) { - object.functions = (object.functions as Specification.Function[]).map( - (f) => new Specification.Function(f) - ) as Specification.Functions; - } -} - -/** - * Modify the provided object, set the value to 'states' property as an instance of Specification.States class - * Throws an error if the value of the property type is not handler - * @param object to set/overwrite the property - */ -export function overwriteStates(object: { states: Specification.States }) { - object.states = - object.states && - ((object.states as Specification.States).map((v) => { - switch (v.type) { - case 'sleep': - return new Specification.Sleepstate(v); - case 'event': - return new Specification.Eventstate(v); - case 'operation': - return new Specification.Operationstate(v); - case 'parallel': - return new Specification.Parallelstate(v); - case 'switch': - const switchState: any = v; - if (switchState.dataConditions) { - return new Specification.Databasedswitchstate(v); - } - if (switchState.eventConditions) { - return new Specification.Eventbasedswitchstate(v); - } - throw new Error(`Unexpected switch type; \n state value= ${JSON.stringify(v, null, 4)}`); - case 'inject': - return new Specification.Injectstate(v); - case 'foreach': - return new Specification.Foreachstate(v); - case 'callback': - return new Specification.Callbackstate(v); - default: - throw new Error(`Unexpected type= ${v.type}; \n state value= ${JSON.stringify(v, null, 4)}`); - } - }) as Specification.States); -} - -/** - * Modify the provided object, set the value to 'properties' property as an instance of Specification.Properties class, if the provided value is an object - * Throws an error if the value of the property type is not handler - * @param object to set/overwrite the property - */ -export function overwriteProperties(object: { properties: string | Specification.Properties }) { - if (isObject(object.properties)) { - const properties: any = object.properties; - - if (properties.username && properties.password) { - object.properties = new Specification.Basicpropsdef(object.properties); - } - - if (properties.token) { - object.properties = new Specification.Bearerpropsdef(object.properties); - } - - if (properties.grantType) { - object.properties = new Specification.Oauth2propsdef(object.properties); - } - } -} - -/** - * Modify the provided object, set the value to 'correlation' property as an instance of Specification.CorrelationDefs class - * @param object to set/overwrite the property - */ -export function overwriteCorrelation(object: { correlation?: Specification.CorrelationDefs }): void { - if (Array.isArray(object.correlation)) { - object.correlation = object.correlation.map( - (correlation) => new Specification.CorrelationDef(correlation) - ) as Specification.CorrelationDefs; - } -} - -/** - * Modify the provided object, set the value to 'action' property as an instance of Specification.Action class - * @param object to set/overwrite the property - */ -export function overwriteAction(object: { action?: Specification.Action }): void { - object.action = object.action && new Specification.Action(object.action); -} - -/** - * Modify the provided object, set the value to 'workflowExecTimeout' property as an instance of Specification.WorkflowExecTimeout class - * @param object to set/overwrite the property - */ -export function overwriteWorkflowExecTimeout(object: { - workflowExecTimeout?: Specification.WorkflowExecTimeout; -}): void { - object.workflowExecTimeout = - object.workflowExecTimeout && new Specification.WorkflowExecTimeout(object.workflowExecTimeout); -} - -/** - * Modify the provided object, set the value to 'eventDataFilter' property as an instance of Specification.Eventdatafilter class - * @param object to set/overwrite the property - */ -export function overwriteEventDataFilter(object: { eventDataFilter?: Specification.Eventdatafilter }): void { - object.eventDataFilter = object.eventDataFilter && new Specification.Eventdatafilter(object.eventDataFilter); -} - -/** - * Modify the provided object, set the value to 'onErrors' property as an instance of Specification.Error[] class - * @param object to set/overwrite the property - */ -export function overwriteOnErrors(object: { onErrors?: Specification.Error[] }): void { - if (Array.isArray(object.onErrors)) { - object.onErrors = object.onErrors.map((error) => new Specification.Error(error)); - } -} - -/** - * Modify the provided object, set the value to 'branches' property as an instance of Specification.Branch[] class - * @param object to set/overwrite the property - */ -export function overwriteBranches(object: { branches?: Specification.Branch[] }): void { - if (Array.isArray(object.branches)) { - object.branches = object.branches.map((v) => new Specification.Branch(v)); - } -} - -/** - * Modify the provided object, set the value to 'produceEvents' property as an instance of Specification.Produceeventdef[] class - * @param object to set/overwrite the property - */ -export function overwriteProduceEvents(object: { produceEvents?: Specification.Produceeventdef[] }): void { - if (Array.isArray(object.produceEvents)) { - object.produceEvents = object.produceEvents.map((produceEvent) => new Specification.Produceeventdef(produceEvent)); - } -} - -/** - * Modify the provided object, set the value to 'functionRef' property as an instance of Specification.Functionref class, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteFunctionRef(object: { functionRef?: string | Specification.Functionref }): void { - if (isObject(object.functionRef)) { - object.functionRef = new Specification.Functionref(object.functionRef); - } -} - -/** - * Modify the provided object, set the value to 'continueAs' property as an instance of Specification. Continueasdef, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteContinueAs(object: { continueAs?: string | Specification.Continueasdef }): void { - if (isObject(object.continueAs)) { - object.continueAs = new Specification.Continueasdef(object.continueAs); - } -} - -/** - * Modify the provided object, set the value to 'subFlowRef' property as an instance of Specification.Subflowref class, if the provided value is an object - * @param object to set/overwrite the property - */ -export function overwriteSubFlowRef(object: { subFlowRef?: string | Specification.Subflowref }): void { - if (isObject(object.subFlowRef)) { - object.subFlowRef = new Specification.Subflowref(object.subFlowRef); - } -} - -/** - * Modify the provided object, set the value to 'eventRef' property as an instance of Specification.Eventref class - * @param object to set/overwrite the property - */ -export function overwriteEventRef(object: { eventRef?: Specification.Eventref }): void { - object.eventRef = object.eventRef && new Specification.Eventref(object.eventRef); -} - -/** - * Modify the provided object, set the value to 'sleep' property as an instance of Specification.Sleep class - * @param object to set/overwrite the property - */ -export function overwriteSleep(object: { sleep?: Specification.Sleep }): void { - object.sleep = object.sleep && new Specification.Sleep(object.sleep); -} - -/** - * Modify the provided object, set the value to 'actionDataFilter' property as an instance of Specification.Actiondatafilter class - * @param object to set/overwrite the property - */ -export function overwriteActionDataFilter(object: { actionDataFilter?: Specification.Actiondatafilter }): void { - object.actionDataFilter = object.actionDataFilter && new Specification.Actiondatafilter(object.actionDataFilter); -} - -/** - * Set end to true if neither nor transition properties are defined - * @param object to modify - */ -export function setEndValueIfNoTransition(object: { - transition?: string | Specification.Transition; - end?: boolean | Specification.End; -}): void { - if (!object.end && !object.transition) { - object.end = true; - } -} - -/** - * Modify the provided object by normalizing the 'end' property. - * @param object to be modified - */ -export function normalizeEnd(object: { end?: boolean | Specification.End }) { - if (isObject(object.end)) { - object.end = (object.end as Specification.End).normalize(); - } -} - -/** - * Modify the provided object, deep cloning the value of the provided property - * @param property to be cloned - * @param object to set/overwrite the property - */ -export function overwritePropertyAsPlainType(property: string, object: any): void { - if (isObject(object[property])) { - Object.assign(object, { [property]: JSON.parse(JSON.stringify(object[property])) }); - } -} - -/** - * Modify the provided object, set the value to 'timeouts' property as an instance of Specification.Timeouts class - * @param object to set/overwrite the property - */ -export function overwriteTimeouts(object: { timeouts?: string | Specification.Timeouts }): void { - if (isObject(object.timeouts)) { - object.timeouts = object.timeouts && new Specification.Timeouts(object.timeouts); - } -} - -/** - * Modify the provided object by normalizing the 'subFlowRef' property. - * @param object to be modified - */ -export function normalizeSubFlowRef(object: { subFlowRef?: string | Specification.Subflowref }) { - if (isObject(object.subFlowRef)) { - object.subFlowRef = (object.subFlowRef as Specification.Subflowref).normalize(); - } -} - -/** - * Modify the provided object by normalizing the 'continueAs' property. - * @param object to be modified - */ -export function normalizeContinueAs(object: { continueAs?: string | Specification.Continueasdef }) { - if (isObject(object.continueAs)) { - object.continueAs = (object.continueAs as Specification.Continueasdef).normalize(); - } -} - -/** - * Modify the provided object by normalizing the 'defaultCondition' property. - * @param object to be modified - */ -export function normalizeDefaultCondition(object: { defaultCondition?: Specification.Defaultconditiondef }) { - object.defaultCondition = object.defaultCondition && object.defaultCondition.normalize(); -} - -/** - * Modify the provided object by normalizing the 'workflowExecTimeout' property. - * @param object to be modified - */ -export function normalizeWorkflowExecTimeout(object: { workflowExecTimeout?: Specification.WorkflowExecTimeout }) { - object.workflowExecTimeout = object.workflowExecTimeout && object.workflowExecTimeout.normalize(); -} - -/** - * Modify the provided object by normalizing the 'onEvents' property. - * @param object to be modified - */ -export function normalizeOnEvents(object: { onEvents: Specification.Onevents[] }) { - object.onEvents = object.onEvents && object.onEvents.map((onEvent) => onEvent.normalize()); -} - -/** - * Modify the provided object by normalizing the 'onErrors' property. - * @param object to be modified - */ -export function normalizeOnErrors(object: { onErrors?: Specification.Error[] }): void { - if (Array.isArray(object.onErrors)) { - object.onErrors = object.onErrors.map((error) => error.normalize()); - } -} - -/** - * Modify the provided object by normalizing the 'branches' property. - * @param object to be modified - */ -export function normalizeBranches(object: { branches?: Specification.Branch[] }): void { - if (Array.isArray(object.branches)) { - object.branches = object.branches.map((branch) => branch.normalize()); - } -} - -/** - * Modify the provided object by normalizing the 'actions' property. - * @param object to be modified - */ -export function normalizeActions(object: { actions?: Specification.Action[] }): void { - if (Array.isArray(object.actions)) { - object.actions = object.actions.map((action) => action.normalize()); - } -} - -/** - * Modify the provided object by normalizing the 'action' property. - * @param object to be modified - */ -export function normalizeAction(object: { action?: Specification.Action }): void { - object.action = object.action && object.action.normalize(); -} - -/** - * Modify the provided object by normalizing the 'dataConditions' property. - * @param object to be modified - */ -export function normalizeDataConditions(object: { dataConditions?: Specification.Datacondition[] }): void { - if (Array.isArray(object.dataConditions)) { - object.dataConditions = object.dataConditions.map((dc) => dc.normalize()); - } -} - -/** - * Modify the provided object by normalizing the 'eventConditions' property. - * @param object to be modified - */ -export function normalizeEventConditions(object: { eventConditions?: Specification.Eventcondition[] }): void { - if (Array.isArray(object.eventConditions)) { - object.eventConditions = object.eventConditions.map((event) => event.normalize()); - } -} - -/** - * Modify the provided object by normalizing the 'transition' property if property type is Specification.Transition. - * @param object to be modified - */ -export function normalizeTransition(object: { transition?: string | Specification.Transition }) { - if (isObject(object.transition)) { - object.transition = (object.transition as Specification.Transition).normalize(); - } -} - -/** - * Modify the provided object by normalizing the 'states' property. - * @param object to be modified - */ -export function normalizeStates(object: { states: Specification.States }) { - object.states = object.states.map((state) => { - return state.normalize(); - }) as Specification.States; -} - -/** - * Modify the provided object by normalizing the 'extensions' property. - * @param object to be modified - */ -export function normalizeExtensions(object: { extensions?: Specification.Extensions }) { - if (Array.isArray(object.extensions)) { - object.extensions = object.extensions.map((extension) => { - return extension.normalize(); - }) as Specification.Extensions; - } -} - -/** - * Modify the provided object by normalizing the 'auth' property. - * @param object to be modified - */ -export function normalizeAuth(object: { auth?: Specification.Auth }) { - if (Array.isArray(object.auth)) { - object.auth = object.auth.map((auth) => { - return auth.normalize(); - }) as Specification.Auth; - } -} - -/** - * Modify the provided object by normalizing the 'functions' property. - * @param object to be modified - */ -export function normalizeFunctions(object: { functions?: Specification.Functions }) { - if (Array.isArray(object.functions)) { - object.functions = (object.functions as Specification.Function[]).map((f) => - f.normalize() - ) as Specification.Functions; - } -} - -/** - * Modify the provided object by normalizing the 'events' property. - * @param object to be modified - */ -export function normalizeEvents(object: { events?: Specification.Events }) { - if (Array.isArray(object.events)) { - object.events = (object.events as Specification.Eventdef[]).map((event) => - event.normalize() - ) as Specification.Events; - } -} - -/** - * Modify the provided object by normalizing the 'timeouts' property. - * @param object to be modified - */ -export function normalizeTimeouts(object: { timeouts?: string | Specification.Timeouts }) { - if (isObject(object.timeouts)) { - object.timeouts = object.timeouts && object.timeouts.normalize(); - } -} - -/** - * Modify the provided object by normalizing the 'eventRef' property. - * @param object to be modified - */ -export function normalizeEventRef(object: { eventRef?: Specification.Eventref }) { - if (isObject(object.eventRef)) { - object.eventRef = object.eventRef && object.eventRef.normalize(); - } -} - -/** - * Modify the provided object by normalizing the 'functionRef' property. - * @param object to be modified - */ -export function normalizeFunctionRef(object: { functionRef?: string | Specification.Functionref }) { - if (isObject(object.functionRef)) { - object.functionRef = object.functionRef && object.functionRef.normalize(); - } -} - -/** - * Modify the provided object by normalizing the 'actionMode' property. - * @param target to be modified - * @param source - */ -export function normalizeActionMode(target: { actionMode?: string }, source?: { actionMode?: string }) { - if (!source?.actionMode) { - delete target.actionMode; - } -} - -/** - * Modify the provided object by normalizing the 'completionType' property. - * @param object to be modified - * @param source - */ -export function normalizeCompletionType(object: { completionType?: string }, source?: { completionType?: string }) { - if (!source?.completionType) { - delete object.completionType; - } -} - -/** - * Modify the provided object by normalizing the 'usedForCompensation' property. - * @param object to be modified - * @param source - */ -export function normalizeUsedForCompensation( - object: { usedForCompensation?: boolean }, - source?: { usedForCompensation?: boolean } -) { - if (source?.usedForCompensation === undefined) { - delete object.usedForCompensation; - } -} - -/** - * Modify the provided object by normalizing the 'mode' property. - * @param object to be modified - * @param source - */ -export function normalizeMode(object: { mode?: string }, source?: { mode?: string }) { - if (!source?.mode) { - delete object.mode; - } -} - -/** - * Modify the provided object by normalizing the 'compensate' property. - * @param object to be modified - * @param source - */ -export function normalizeCompensate(object: { compensate?: boolean }, source?: { compensate?: boolean }) { - if (source?.compensate === undefined) { - delete object.compensate; - } -} - -/** - * Modify the provided object by normalizing the 'scheme' property. - * @param object to be modified - * @param source - */ -export function normalizeScheme(object: { scheme?: string }, source?: { scheme?: string }) { - if (!source?.scheme) { - delete object.scheme; - } -} - -/** - * Modify the provided object by normalizing the 'terminate' property. - * @param object to be modified - * @param source - */ -export function normalizeTerminate(object: { terminate?: boolean }, source?: { terminate?: boolean }) { - if (source?.terminate === undefined) { - delete object.terminate; - } -} - -/** - * Modify the provided object by normalizing the 'exclusive' property. - * @param object to be modified - * @param source - */ -export function normalizeExclusive(object: { exclusive?: boolean }, source?: { exclusive?: boolean }) { - if (source?.exclusive === undefined) { - delete object.exclusive; - } -} - -/** - * Modify the provided object by normalizing the 'keepActive' property. - * @param object to be modified - * @param source - */ -export function normalizeKeepActive(object: { keepActive?: boolean }, source?: { keepActive?: boolean }) { - if (source?.keepActive === undefined) { - delete object.keepActive; - } -} - -/** - * Modify the provided object by normalizing the 'expressionLang' property. - * @param object to be modified - * @param source - */ -export function normalizeExpressionLang(object: { expressionLang?: string }, source?: { expressionLang?: string }) { - if (!source?.expressionLang) { - delete object.expressionLang; - } -} - -/** - * Modify the provided object by normalizing the 'interrupt' property. - * @param object to be modified - * @param source - */ -export function normalizeInterrupt(object: { interrupt?: boolean }, source?: { interrupt?: boolean }) { - if (source?.interrupt === undefined) { - delete object.interrupt; - } -} - -/** - * Modify the provided object by normalizing the 'type' property. - * @param object to be modified - * @param source - */ -export function normalizeType(object: { type?: string }, source?: { type?: string }) { - if (!source?.type) { - delete object.type; - } -} - -/** - * Modify the provided object by normalizing the 'invoke' property. - * @param object to be modified - * @param source - */ -export function normalizeInvoke(object: { invoke?: string }, source?: { invoke?: string }) { - if (!source?.invoke) { - delete object.invoke; - } -} - -/** - * Modify the provided object by normalizing the 'onParentComplete' property. - * @param object to be modified - * @param source - */ -export function normalizeOnParentComplete( - object: { onParentComplete?: 'continue' | 'terminate' }, - source?: { onParentComplete?: 'continue' | 'terminate' } -) { - if (!source?.onParentComplete) { - delete object.onParentComplete; - } -} - -/** - * Modify the provided object by normalizing the 'kind' property. - * @param object to be modified - * @param source - */ -export function normalizeKind(object: { kind?: string }, source?: { kind?: string }) { - if (!source?.kind) { - delete object.kind; - } -} - -/** - * Modify the provided object by normalizing the 'dataOnly' property. - * @param object to be modified - * @param source - */ -export function normalizeDataOnly(object: { dataOnly?: boolean }, source?: { dataOnly?: boolean }) { - if (source?.dataOnly === undefined) { - delete object.dataOnly; - } -} - -/** - * Modify the provided object by deleting the 'source' property - * @param object - */ -export function cleanSourceModelProperty(object?: { sourceModel?: any }): void { - delete object?.sourceModel; -} diff --git a/src/lib/definitions/workflow.ts b/src/lib/definitions/workflow.ts deleted file mode 100644 index 39c0a2c..0000000 --- a/src/lib/definitions/workflow.ts +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Metadata } from './metadata'; -import { Startdef } from './startdef'; -import { Timeouts } from './timeouts'; -import * as yaml from 'js-yaml'; - -import { Specification } from '.'; - -import { validate } from '../utils'; -import { - cleanSourceModelProperty, - normalizeAuth, - normalizeEvents, - normalizeExpressionLang, - normalizeExtensions, - normalizeFunctions, - normalizeKeepActive, - normalizeStates, - normalizeTimeouts, - overwriteAuth, - overwriteErrors, - overwriteEvents, - overwriteExtensions, - overwriteFunctions, - overwriteMetadata, - overwritePropertyAsPlainType, - overwriteRetries, - overwriteStart, - overwriteStates, - overwriteTimeouts, -} from './utils'; -import { Auth, Errors, Events, Extensions, Functions, Retries, Secrets, States } from './types'; - -export class Workflow { - sourceModel?: Workflow; - /** - * Workflow unique identifier - */ - id: string; - /** - * Domain-specific workflow identifier - */ - key?: string; - /** - * Workflow name - */ - name?: string; - /** - * Workflow description - */ - description?: string; - /** - * Workflow version - */ - version?: string; // ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - /** - * List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities - */ - annotations?: [string, ...string[]]; - dataInputSchema?: - | string - | { - schema: any; - /** - * Determines if workflow execution should continue if there are validation errors - */ - failOnValidationErrors?: boolean; - }; - secrets?: Secrets; - constants?: - | string /* uri */ - | { - [key: string]: any; - }; - start?: string | Startdef; - /** - * Serverless Workflow schema version - */ - specVersion: string; - /** - * Identifies the expression language used for workflow expressions. Default is 'jq' - */ - expressionLang?: string; - timeouts?: string /* uri */ | Timeouts; - errors?: Errors; - /** - * If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout' - */ - keepActive?: boolean; - metadata?: /* Metadata information */ Metadata; - events?: Events; - functions?: Functions; - /** - * If set to true, actions should automatically be retried on unchecked errors. Default is false - */ - autoRetries?: boolean; - retries?: Retries; - auth?: Auth; - extensions?: Extensions; - /** - * State definitions - */ - states: States; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { - id: undefined, - name: undefined, - version: undefined, - description: undefined, - specVersion: undefined, - start: undefined, - states: undefined, - functions: undefined, - events: undefined, - retries: undefined, - timeouts: undefined, - expressionLang: 'jq', - keepActive: true, - }; - - Object.assign(this, defaultModel, model); - - overwritePropertyAsPlainType('dataInputSchema', this); - overwritePropertyAsPlainType('constants', this); - overwriteStart(this); - overwriteTimeouts(this); - overwriteErrors(this); - overwriteMetadata(this); - overwriteEvents(this); - overwriteFunctions(this); - overwriteRetries(this); - overwriteExtensions(this); - overwriteAuth(this); - overwriteStates(this); - } - - /** - * Parses the provided string as Workflow - * @param {string} data The JSON or YAML workflow to parse - * @returns {Workflow} The parse Workflow - */ - static fromSource(value: string): Specification.Workflow { - try { - const model = yaml.load(value); - return new Workflow(model); - } catch (ex) { - throw new Error('Format not supported'); - } - } - - /** - * Stringifies the provided workflow to the JSON format - * @param {Workflow} workflow The workflow to strigify - * @returns {string} The workflow as JSON - */ - static toJson(workflow: Workflow): string { - validate('Workflow', workflow.normalize()); - return JSON.stringify(workflow.normalize()); - } - - /** - * Stringifies the provided workflow to the YAML format - * @param {Workflow} workflow The workflow to strigify - * @returns {string} The workflow as YAML - */ - static toYaml(workflow: Workflow): string { - validate('Workflow', workflow.normalize()); - return yaml.dump(JSON.parse(JSON.stringify(workflow.normalize()))); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.Workflow} without deleted properties. - */ - normalize = (): Workflow => { - const clone = new Workflow(this); - - normalizeExpressionLang(clone, this.sourceModel); - normalizeTimeouts(clone); - normalizeKeepActive(clone, this.sourceModel); - normalizeEvents(clone); - normalizeFunctions(clone); - normalizeAuth(clone); - normalizeExtensions(clone); - normalizeStates(clone); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/definitions/workflowExecTimeout.ts b/src/lib/definitions/workflowExecTimeout.ts deleted file mode 100644 index 37ead5f..0000000 --- a/src/lib/definitions/workflowExecTimeout.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { cleanSourceModelProperty, normalizeInterrupt } from './utils'; - -export class WorkflowExecTimeout { - sourceModel?: WorkflowExecTimeout; - /** - * Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited' - */ - duration: string; - /** - * If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted. - */ - interrupt?: boolean; - /** - * Name of a workflow state to be executed before workflow instance is terminated - */ - runBefore?: string; - - constructor(model: any) { - this.sourceModel = Object.assign({}, model); - - const defaultModel = { interrupt: true }; - Object.assign(this, defaultModel, model); - } - - /** - * Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state. - * @returns {Specification.WorkflowExecTimeout} without deleted properties. - */ - - normalize = (): WorkflowExecTimeout => { - const clone = new WorkflowExecTimeout(this); - - normalizeInterrupt(clone, this.sourceModel); - - cleanSourceModelProperty(clone); - return clone; - }; -} diff --git a/src/lib/diagram/index.ts b/src/lib/diagram/index.ts deleted file mode 100644 index 54a1ca6..0000000 --- a/src/lib/diagram/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export * from './mermaidDiagram'; diff --git a/src/lib/diagram/mermaidDiagram.ts b/src/lib/diagram/mermaidDiagram.ts deleted file mode 100644 index a8ef7ea..0000000 --- a/src/lib/diagram/mermaidDiagram.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Specification } from '../definitions'; -import { MermaidState } from './mermaidState'; - -export class MermaidDiagram { - constructor(private workflow: Specification.Workflow) {} - - sourceCode() { - const mermaidStateDiagramVersion = 'stateDiagram-v2'; - return ( - mermaidStateDiagramVersion + - '\n' + - this.workflow.states - .map((state, index) => { - const isFirstState = index === 0; - return new MermaidState(state, isFirstState).sourceCode(); - }) - .join('\n\n') - ); - } -} diff --git a/src/lib/diagram/mermaidState.ts b/src/lib/diagram/mermaidState.ts deleted file mode 100644 index cf23e98..0000000 --- a/src/lib/diagram/mermaidState.ts +++ /dev/null @@ -1,392 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Specification } from '../definitions'; -import { humanCase, isObject, pascalCase } from '../utils'; - -export class MermaidState { - constructor( - private state: { - name?: string; - type?: string; - transition?: string | Specification.Transition; - end?: boolean | Specification.End; - compensatedBy?: string; - onErrors?: Specification.Error[]; - usedForCompensation?: boolean; - }, - private isFirstState: boolean = false - ) {} - - sourceCode() { - const stateDefinition = this.definitions(); - const stateTransitions = this.transitions(); - - const stateDescription = stateTransitions.reduce((p, c) => { - return p + '\n' + c; - }, stateDefinition); - - return stateDescription; - } - - private definitions(): string { - return ( - this.definitionName() + - '\n' + - this.definitionType() + - (this.definitionDetails() !== undefined ? '\n' + this.definitionDetails() : '') - ); - } - - private transitions(): string[] { - const transitions: string[] = []; - - transitions.push(...this.startTransition()); - transitions.push(...this.dataConditionsTransitions()); - transitions.push(...this.eventConditionsTransition()); - transitions.push(...this.errorTransitions()); - transitions.push(...this.naturalTransition(this.stateKeyDiagram(this.state.name), this.state.transition)); - transitions.push(...this.compensatedByTransition()); - transitions.push(...this.endTransition()); - - return transitions; - } - - private stateKeyDiagram(name: string | undefined) { - return pascalCase(name || ''); - } - - private startTransition() { - const transitions: string[] = []; - if (this.isFirstState) { - const stateName = this.stateKeyDiagram(this.state.name); - transitions.push(this.transitionDescription('[*]', stateName)); - } - return transitions; - } - - private dataConditionsTransitions() { - const transitions: string[] = []; - - const dataBasedSwitchState = this.state as Specification.Databasedswitchstate; - if (dataBasedSwitchState.dataConditions) { - const stateName = this.state.name; - dataBasedSwitchState.dataConditions.forEach((dataCondition) => { - const transitionDataCondition = dataCondition as Specification.Transitiondatacondition; - - transitions.push( - ...this.naturalTransition(stateName, transitionDataCondition.transition, transitionDataCondition.condition) - ); - - const endDataCondition = dataCondition as Specification.Enddatacondition; - if (endDataCondition.end) { - transitions.push(this.transitionDescription(stateName, '[*]', transitionDataCondition.condition)); - } - }); - - transitions.push(...this.defaultConditionTransition(dataBasedSwitchState)); - } - return transitions; - } - - private eventConditionsTransition() { - const transitions: string[] = []; - - const eventBasedSwitchState = this.state as Specification.Eventbasedswitchstate; - if (eventBasedSwitchState.eventConditions) { - const stateName = this.state.name; - eventBasedSwitchState.eventConditions.forEach((eventCondition) => { - const transitionEventCondition = eventCondition as Specification.Transitioneventcondition; - - transitions.push( - ...this.naturalTransition(stateName, transitionEventCondition.transition, transitionEventCondition.eventRef) - ); - - const endEventCondition = eventCondition as Specification.Endeventcondition; - if (endEventCondition.end) { - transitions.push(this.transitionDescription(stateName, '[*]')); - } - }); - - transitions.push(...this.defaultConditionTransition(eventBasedSwitchState)); - } - return transitions; - } - - private defaultConditionTransition(state: { defaultCondition?: Specification.Defaultconditiondef }) { - const transitions: string[] = []; - - if (state.defaultCondition) { - transitions.push(...this.naturalTransition(this.state.name, state.defaultCondition.transition, 'default')); - } - return transitions; - } - - private endTransition() { - const transitions: string[] = []; - - if (this.state.end) { - const stateName = this.state.name; - let transitionLabel = undefined; - - if (isObject(this.state.end)) { - const end = this.state.end as Specification.End; - - if (end.produceEvents) { - transitionLabel = 'Produced event = [' + end.produceEvents!.map((pe) => pe.eventRef).join(',') + ']'; - } - } - - transitions.push(this.transitionDescription(stateName, '[*]', transitionLabel)); - } - return transitions; - } - - private naturalTransition( - source?: string, - target?: string | Specification.Transition, - label: string | undefined = undefined - ) { - const transitions: string[] = []; - - if (target) { - let descTransition = ''; - if (isObject(target)) { - descTransition = (target as Specification.Transition).nextState; - } else if (typeof target === 'string') { - descTransition = target; - } - transitions.push(this.transitionDescription(source, descTransition, label ? label : undefined)); - } - return transitions; - } - - private errorTransitions() { - const transitions: string[] = []; - - if (this.state.onErrors) { - this.state.onErrors.forEach((error) => { - transitions.push( - ...this.naturalTransition(this.stateKeyDiagram(this.state.name), error.transition, error.errorRef) - ); - }); - } - return transitions; - } - - private compensatedByTransition() { - const transitions: string[] = []; - - if (this.state.compensatedBy) { - transitions.push(...this.naturalTransition(this.state.name, this.state.compensatedBy, 'compensated by')); - } - return transitions; - } - - private definitionDetails() { - let definition: string | undefined; - - switch (this.state.type) { - case 'sleep': - definition = this.sleepStateDetails(); - break; - case 'event': - // NOTHING - break; - case 'operation': - definition = this.operationStateDetails(); - break; - case 'parallel': - definition = this.parallelStateDetails(); - break; - case 'switch': - const switchState: any = this.state; - if (switchState.dataConditions) { - definition = this.dataBasedSwitchStateDetails(); - break; - } - if (switchState.eventConditions) { - definition = this.eventBasedSwitchStateDetails(); - break; - } - throw new Error(`Unexpected switch type; \n state value= ${JSON.stringify(this.state, null, 4)}`); - case 'inject': - // NOTHING - break; - case 'foreach': - definition = this.foreachStateDetails(); - break; - case 'callback': - definition = this.callbackStateDetails(); - break; - default: - throw new Error(`Unexpected type= ${this.state.type}; \n state value= ${JSON.stringify(this.state, null, 4)}`); - } - - if (this.state.usedForCompensation) { - definition = definition ? definition : ''; - definition = this.stateDescription(this.stateKeyDiagram(this.state.name), 'usedForCompensation\n') + definition; - } - - return definition ? definition : undefined; - } - - private definitionType() { - const type = this.state.type; - return this.stateDescription( - this.stateKeyDiagram(this.state.name), - 'type', - type!.charAt(0).toUpperCase() + type!.slice(1) + ' State' - ); - } - - private parallelStateDetails(): string | undefined { - const parallelState = this.state as Specification.Parallelstate; - - const descriptions: string[] = []; - - if (parallelState.completionType) { - descriptions.push( - this.stateDescription(this.stateKeyDiagram(this.state.name), 'Completion type', parallelState.completionType) - ); - } - - if (parallelState.branches) { - descriptions.push( - this.stateDescription( - this.stateKeyDiagram(this.state.name), - 'Num. of branches', - parallelState.branches?.length + '' - ) - ); - } - - return descriptions.length > 0 - ? descriptions.reduce((p, c) => { - return p + '\n' + c; - }) - : undefined; - } - - private eventBasedSwitchStateDetails() { - return this.stateDescription(this.stateKeyDiagram(this.state.name), `Condition type`, `event-based`); - } - - private dataBasedSwitchStateDetails() { - return this.stateDescription(this.stateKeyDiagram(this.state.name), `Condition type`, `data-based`); - } - - private operationStateDetails() { - const state = this.state as Specification.Operationstate; - - const descriptions: string[] = []; - - if (state.actionMode) { - descriptions.push(this.stateDescription(this.stateKeyDiagram(this.state.name), 'Action mode', state.actionMode)); - } - - if (state.actions) { - descriptions.push( - this.stateDescription(this.stateKeyDiagram(this.state.name), 'Num. of actions', state.actions?.length + '') - ); - } - - return descriptions.length > 0 - ? descriptions.reduce((p, c) => { - return p + '\n' + c; - }) - : undefined; - } - - private sleepStateDetails() { - const state = this.state as Specification.Sleepstate; - if (state.duration) { - return this.stateDescription(this.stateKeyDiagram(this.state.name), 'Duration', state.duration); - } - - return undefined; - } - - private foreachStateDetails() { - const state = this.state as Specification.Foreachstate; - - const descriptions: string[] = []; - - if (state.inputCollection) { - descriptions.push( - this.stateDescription(this.stateKeyDiagram(this.state.name), 'Input collection', state.inputCollection) - ); - } - - if (state.actions) { - descriptions.push( - this.stateDescription(this.stateKeyDiagram(this.state.name), 'Num. of actions', state.actions?.length + '') - ); - } - - return descriptions.length > 0 - ? descriptions.reduce((p, c) => { - return p + '\n' + c; - }) - : undefined; - } - - private callbackStateDetails() { - const state = this.state as Specification.Callbackstate; - - const descriptions: string[] = []; - - if (state.action && state.action.functionRef) { - const functionRef = state.action.functionRef; - let functionRefDescription = ''; - if (isObject(functionRef)) { - functionRefDescription = (functionRef as Specification.Functionref).refName; - } else if (typeof functionRef === 'string') { - functionRefDescription = functionRef as string; - } - descriptions.push( - this.stateDescription(this.stateKeyDiagram(this.state.name), 'Callback function', functionRefDescription) - ); - } - - if (state.eventRef) { - descriptions.push(this.stateDescription(this.stateKeyDiagram(this.state.name), 'Callback event', state.eventRef)); - } - - return descriptions.length > 0 - ? descriptions.reduce((p, c) => { - return p + '\n' + c; - }) - : undefined; - } - - private definitionName() { - const key = this.stateKeyDiagram(this.state.name); - const label = humanCase(key, true); - return key + ' : ' + label; - } - - private transitionDescription( - source: string | undefined, - target: string | undefined, - label: string | undefined = undefined - ) { - return this.stateKeyDiagram(source) + ' --> ' + this.stateKeyDiagram(target) + (label ? ' : ' + label : ''); - } - - private stateDescription(stateName: string | undefined, description: string, value?: string) { - return stateName + ` : ${description}${value !== undefined ? ' = ' + value : ''}`; - } -} diff --git a/src/lib/schema/types/README.md b/src/lib/schema/README.md similarity index 100% rename from src/lib/schema/types/README.md rename to src/lib/schema/README.md diff --git a/src/lib/schema/__merged.json b/src/lib/schema/__merged.json deleted file mode 100644 index e26c6c5..0000000 --- a/src/lib/schema/__merged.json +++ /dev/null @@ -1,2610 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/workflow.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - workflow schema", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Workflow unique identifier", - "minLength": 1 - }, - "key": { - "type": "string", - "description": "Domain-specific workflow identifier", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "Workflow name", - "minLength": 1 - }, - "description": { - "type": "string", - "description": "Workflow description" - }, - "version": { - "type": "string", - "description": "Workflow version", - "minLength": 1 - }, - "annotations": { - "type": "array", - "description": "List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "dataInputSchema": { - "oneOf": [ - { - "type": "string", - "description": "URI of the JSON Schema used to validate the workflow data input", - "minLength": 1 - }, - { - "type": "object", - "description": "Workflow data input schema definition", - "properties": { - "schema": { - "type": "string", - "description": "URI of the JSON Schema used to validate the workflow data input", - "minLength": 1 - }, - "failOnValidationErrors": { - "type": "boolean", - "default": true, - "description": "Determines if workflow execution should continue if there are validation errors" - } - }, - "additionalProperties": false, - "required": [ - "schema", - "failOnValidationErrors" - ] - } - ] - }, - "secrets": { - "$ref": "#/definitions/secrets" - }, - "constants": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing constants data (json or yaml)" - }, - { - "type": "object", - "description": "Workflow constants data (object type)" - } - ] - }, - "start": { - "$ref": "#/definitions/startdef" - }, - "specVersion": { - "type": "string", - "description": "Serverless Workflow schema version", - "minLength": 1 - }, - "expressionLang": { - "type": "string", - "description": "Identifies the expression language used for workflow expressions. Default is 'jq'", - "default": "jq", - "minLength": 1 - }, - "timeouts": { - "$ref": "#/definitions/timeouts" - }, - "errors": { - "$ref": "#/definitions/errors" - }, - "keepActive": { - "type": "boolean", - "default": false, - "description": "If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout'" - }, - "metadata": { - "$ref": "#/definitions/metadata" - }, - "events": { - "$ref": "#/definitions/events" - }, - "functions": { - "$ref": "#/definitions/functions" - }, - "autoRetries": { - "type": "boolean", - "default": false, - "description": "If set to true, actions should automatically be retried on unchecked errors. Default is false" - }, - "retries": { - "$ref": "#/definitions/retries" - }, - "auth": { - "$ref": "#/definitions/auth" - }, - "states": { - "type": "array", - "description": "State definitions", - "items": { - "anyOf": [ - { - "title": "Sleep State", - "$ref": "#/definitions/sleepstate" - }, - { - "title": "Event State", - "$ref": "#/definitions/eventstate" - }, - { - "title": "Operation State", - "$ref": "#/definitions/operationstate" - }, - { - "title": "Parallel State", - "$ref": "#/definitions/parallelstate" - }, - { - "title": "Switch State", - "$ref": "#/definitions/switchstate" - }, - { - "title": "Inject State", - "$ref": "#/definitions/injectstate" - }, - { - "title": "ForEach State", - "$ref": "#/definitions/foreachstate" - }, - { - "title": "Callback State", - "$ref": "#/definitions/callbackstate" - } - ] - }, - "additionalItems": false, - "minItems": 1 - } - }, - "oneOf": [ - { - "required": [ - "id", - "specVersion", - "states" - ] - }, - { - "required": [ - "key", - "specVersion", - "states" - ] - } - ], - "definitions": { - "sleep": { - "type": "object", - "properties": { - "before": { - "type": "string", - "description": "Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined." - }, - "after": { - "type": "string", - "description": "Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined." - } - }, - "oneOf": [ - { - "required": [ - "before" - ] - }, - { - "required": [ - "after" - ] - }, - { - "required": [ - "before", - "after" - ] - } - ] - }, - "crondef": { - "oneOf": [ - { - "type": "string", - "description": "Cron expression defining when workflow instances should be created (automatically)", - "minLength": 1 - }, - { - "type": "object", - "properties": { - "expression": { - "type": "string", - "description": "Repeating interval (cron expression) describing when the workflow instance should be created", - "minLength": 1 - }, - "validUntil": { - "type": "string", - "description": "Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid" - } - }, - "additionalProperties": false, - "required": [ - "expression" - ] - } - ] - }, - "continueasdef": { - "oneOf": [ - { - "type": "string", - "description": "Unique id of the workflow to be continue execution as. Entire state data is passed as data input to next execution", - "minLength": 1 - }, - { - "type": "object", - "properties": { - "workflowId": { - "type": "string", - "description": "Unique id of the workflow to continue execution as" - }, - "version": { - "type": "string", - "description": "Version of the workflow to continue execution as", - "minLength": 1 - }, - "data": { - "type": [ - "string", - "object" - ], - "description": "If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution" - }, - "workflowExecTimeout": { - "$ref": "#/definitions/workflowExecTimeout", - "description": "Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow" - } - }, - "required": [ - "workflowId" - ] - } - ] - }, - "transition": { - "oneOf": [ - { - "type": "string", - "description": "Name of state to transition to", - "minLength": 1 - }, - { - "type": "object", - "description": "Function Reference", - "properties": { - "nextState": { - "type": "string", - "description": "Name of state to transition to", - "minLength": 1 - }, - "produceEvents": { - "type": "array", - "description": "Array of events to be produced before the transition happens", - "items": { - "type": "object", - "$ref": "#/definitions/produceeventdef" - }, - "additionalItems": false - }, - "compensate": { - "type": "boolean", - "default": false, - "description": "If set to true, triggers workflow compensation when before this transition is taken. Default is false" - } - }, - "additionalProperties": false, - "required": [ - "nextState" - ] - } - ] - }, - "error": { - "type": "object", - "properties": { - "errorRef": { - "type": "string", - "description": "Reference to a unique workflow error definition. Used of errorRefs is not used", - "minLength": 1 - }, - "errorRefs": { - "type": "array", - "description": "References one or more workflow error definitions. Used if errorRef is not used", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "transition": { - "description": "Transition to next state to handle the error.", - "$ref": "#/definitions/transition" - }, - "end": { - "description": "End workflow execution in case of this error.", - "$ref": "#/definitions/end" - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "errorRef", - "transition" - ] - }, - { - "required": [ - "errorRef", - "end" - ] - }, - { - "required": [ - "errorRefs", - "transition" - ] - }, - { - "required": [ - "errorRefs", - "end" - ] - } - ] - }, - "onevents": { - "type": "object", - "properties": { - "eventRefs": { - "type": "array", - "description": "References one or more unique event names in the defined workflow events", - "minItems": 1, - "items": { - "type": "string" - }, - "uniqueItems": true, - "additionalItems": false - }, - "actionMode": { - "type": "string", - "enum": [ - "sequential", - "parallel" - ], - "description": "Specifies how actions are to be performed (in sequence or in parallel)", - "default": "sequential" - }, - "actions": { - "type": "array", - "description": "Actions to be performed if expression matches", - "items": { - "type": "object", - "$ref": "#/definitions/action" - }, - "additionalItems": false - }, - "eventDataFilter": { - "description": "Event data filter", - "$ref": "#/definitions/eventdatafilter" - } - }, - "additionalProperties": false, - "required": [ - "eventRefs" - ] - }, - "action": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique action identifier" - }, - "name": { - "type": "string", - "description": "Unique action definition name" - }, - "functionRef": { - "description": "References a function to be invoked", - "$ref": "#/definitions/functionref" - }, - "eventRef": { - "description": "References a 'trigger' and 'result' reusable event definitions", - "$ref": "#/definitions/eventref" - }, - "subFlowRef": { - "description": "References a sub-workflow to invoke", - "$ref": "#/definitions/subflowref" - }, - "sleep": { - "description": "Defines time periods workflow execution should sleep before / after function execution", - "$ref": "#/definitions/sleep" - }, - "retryRef": { - "type": "string", - "description": "References a defined workflow retry definition. If not defined the default retry policy is assumed" - }, - "nonRetryableErrors": { - "type": "array", - "description": "List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true`", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "retryableErrors": { - "type": "array", - "description": "List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false`", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "actionDataFilter": { - "description": "Action data filter", - "$ref": "#/definitions/actiondatafilter" - }, - "condition": { - "description": "Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded", - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "functionRef" - ] - }, - { - "required": [ - "eventRef" - ] - }, - { - "required": [ - "subFlowRef" - ] - } - ] - }, - "functionref": { - "oneOf": [ - { - "type": "string", - "description": "Name of the referenced function", - "minLength": 1 - }, - { - "type": "object", - "description": "Function Reference", - "properties": { - "refName": { - "type": "string", - "description": "Name of the referenced function" - }, - "arguments": { - "type": "object", - "description": "Function arguments/inputs" - }, - "selectionSet": { - "type": "string", - "description": "Only used if function type is 'graphql'. A string containing a valid GraphQL selection set" - }, - "invoke": { - "type": "string", - "enum": [ - "sync", - "async" - ], - "description": "Specifies if the function should be invoked sync or async", - "default": "sync" - } - }, - "additionalProperties": false, - "required": [ - "refName" - ] - } - ] - }, - "eventref": { - "type": "object", - "description": "Event References", - "properties": { - "triggerEventRef": { - "type": "string", - "description": "Reference to the unique name of a 'produced' event definition" - }, - "resultEventRef": { - "type": "string", - "description": "Reference to the unique name of a 'consumed' event definition" - }, - "resultEventTimeout": { - "type": "string", - "description": "Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it should default to the actionExecutionTimeout" - }, - "data": { - "type": [ - "string", - "object" - ], - "description": "If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'triggerEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'triggerEventRef'." - }, - "contextAttributes": { - "type": "object", - "description": "Add additional extension context attributes to the produced event", - "additionalProperties": { - "type": "string" - } - }, - "invoke": { - "type": "string", - "enum": [ - "sync", - "async" - ], - "description": "Specifies if the function should be invoked sync or async. Default is sync.", - "default": "sync" - } - }, - "additionalProperties": false, - "required": [ - "triggerEventRef", - "resultEventRef" - ] - }, - "subflowref": { - "oneOf": [ - { - "type": "string", - "description": "Unique id of the sub-workflow to be invoked", - "minLength": 1 - }, - { - "type": "object", - "description": "Specifies a sub-workflow to be invoked", - "properties": { - "workflowId": { - "type": "string", - "description": "Unique id of the sub-workflow to be invoked" - }, - "version": { - "type": "string", - "description": "Version of the sub-workflow to be invoked", - "minLength": 1 - }, - "onParentComplete": { - "type": "string", - "enum": [ - "continue", - "terminate" - ], - "description": "If invoke is 'async', specifies how subflow execution should behave when parent workflow completes. Default is 'terminate'", - "default": "terminate" - }, - "invoke": { - "type": "string", - "enum": [ - "sync", - "async" - ], - "description": "Specifies if the subflow should be invoked sync or async", - "default": "sync" - } - }, - "required": [ - "workflowId" - ] - } - ] - }, - "branch": { - "type": "object", - "description": "Branch Definition", - "properties": { - "name": { - "type": "string", - "description": "Branch name" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "actionExecTimeout": { - "$ref": "#/definitions/actionExecTimeout" - }, - "branchExecTimeout": { - "$ref": "#/definitions/branchExecTimeout" - } - }, - "required": [] - }, - "actions": { - "type": "array", - "description": "Actions to be executed in this branch", - "items": { - "type": "object", - "$ref": "#/definitions/action" - }, - "additionalItems": false - } - }, - "additionalProperties": false, - "required": [ - "name", - "actions" - ] - }, - "sleepstate": { - "type": "object", - "description": "Causes the workflow execution to sleep for a specified duration", - "properties": { - "id": { - "type": "string", - "description": "Unique State id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "sleep", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "duration": { - "type": "string", - "description": "Duration (ISO 8601 duration format) to sleep" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - } - }, - "required": [] - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after the workflow sleep", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "duration" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "duration", - "end" - ] - }, - { - "required": [ - "name", - "type", - "duration", - "transition" - ] - } - ] - } - }, - "eventstate": { - "type": "object", - "description": "This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel", - "properties": { - "id": { - "type": "string", - "description": "Unique State id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "event", - "description": "State type" - }, - "exclusive": { - "type": "boolean", - "default": true, - "description": "If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed" - }, - "onEvents": { - "type": "array", - "description": "Define the events to be consumed and optional actions to be performed", - "items": { - "type": "object", - "$ref": "#/definitions/onevents" - }, - "additionalItems": false - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "#/definitions/actionExecTimeout" - }, - "eventTimeout": { - "$ref": "#/definitions/eventTimeout" - } - }, - "required": [] - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after all the actions have been performed", - "$ref": "#/definitions/transition" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "name", - "type", - "onEvents", - "end" - ] - }, - { - "required": [ - "name", - "type", - "onEvents", - "transition" - ] - } - ] - }, - "operationstate": { - "type": "object", - "description": "Defines actions be performed. Does not wait for incoming events", - "properties": { - "id": { - "type": "string", - "description": "Unique State id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "operation", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "actionMode": { - "type": "string", - "enum": [ - "sequential", - "parallel" - ], - "description": "Specifies whether actions are performed in sequence or in parallel", - "default": "sequential" - }, - "actions": { - "type": "array", - "description": "Actions to be performed", - "items": { - "type": "object", - "$ref": "#/definitions/action" - } - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "#/definitions/actionExecTimeout" - } - }, - "required": [] - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after all the actions have been performed", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "actions" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "actions", - "end" - ] - }, - { - "required": [ - "name", - "type", - "actions", - "transition" - ] - } - ] - } - }, - "parallelstate": { - "type": "object", - "description": "Consists of a number of states that are executed in parallel", - "properties": { - "id": { - "type": "string", - "description": "Unique State id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "parallel", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "branchExecTimeout": { - "$ref": "#/definitions/branchExecTimeout" - } - }, - "required": [] - }, - "branches": { - "type": "array", - "description": "Branch Definitions", - "items": { - "type": "object", - "$ref": "#/definitions/branch" - }, - "additionalItems": false - }, - "completionType": { - "type": "string", - "enum": [ - "allOf", - "atLeast" - ], - "description": "Option types on how to complete branch execution.", - "default": "allOf" - }, - "numCompleted": { - "type": [ - "number", - "string" - ], - "minimum": 0, - "minLength": 0, - "description": "Used when completionType is set to 'atLeast' to specify the minimum number of branches that must complete before the state will transition." - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after all branches have completed execution", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "branches" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "branches", - "end" - ] - }, - { - "required": [ - "name", - "type", - "branches", - "transition" - ] - } - ] - } - }, - "switchstate": { - "oneOf": [ - { - "$ref": "#/definitions/databasedswitchstate" - }, - { - "$ref": "#/definitions/eventbasedswitchstate" - } - ] - }, - "eventbasedswitchstate": { - "type": "object", - "description": "Permits transitions to other states based on events", - "properties": { - "id": { - "type": "string", - "description": "Unique State id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "switch", - "description": "State type" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "eventTimeout": { - "$ref": "#/definitions/eventTimeout" - } - }, - "required": [] - }, - "eventConditions": { - "type": "array", - "description": "Defines conditions evaluated against events", - "items": { - "type": "object", - "$ref": "#/definitions/eventcondition" - }, - "additionalItems": false - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "defaultCondition": { - "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition", - "$ref": "#/definitions/defaultconditiondef" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "name", - "type", - "eventConditions", - "defaultCondition" - ] - }, - "databasedswitchstate": { - "type": "object", - "description": "Permits transitions to other states based on data conditions", - "properties": { - "id": { - "type": "string", - "description": "Unique State id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "switch", - "description": "State type" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - } - }, - "required": [] - }, - "dataConditions": { - "type": "array", - "description": "Defines conditions evaluated against state data", - "items": { - "type": "object", - "$ref": "#/definitions/datacondition" - }, - "additionalItems": false - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "defaultCondition": { - "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition", - "$ref": "#/definitions/defaultconditiondef" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "name", - "type", - "dataConditions", - "defaultCondition" - ] - }, - "defaultconditiondef": { - "type": "object", - "description": "DefaultCondition definition. Can be either a transition or end definition", - "properties": { - "transition": { - "$ref": "#/definitions/transition" - }, - "end": { - "$ref": "#/definitions/end" - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "transition" - ] - }, - { - "required": [ - "end" - ] - } - ] - }, - "eventcondition": { - "oneOf": [ - { - "$ref": "#/definitions/transitioneventcondition" - }, - { - "$ref": "#/definitions/enddeventcondition" - } - ] - }, - "transitioneventcondition": { - "type": "object", - "description": "Switch state data event condition", - "properties": { - "name": { - "type": "string", - "description": "Event condition name" - }, - "eventRef": { - "type": "string", - "description": "References an unique event name in the defined workflow events" - }, - "transition": { - "description": "Next transition of the workflow if there is valid matches", - "$ref": "#/definitions/transition" - }, - "eventDataFilter": { - "description": "Event data filter definition", - "$ref": "#/definitions/eventdatafilter" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "eventRef", - "transition" - ] - }, - "enddeventcondition": { - "type": "object", - "description": "Switch state data event condition", - "properties": { - "name": { - "type": "string", - "description": "Event condition name" - }, - "eventRef": { - "type": "string", - "description": "References an unique event name in the defined workflow events" - }, - "end": { - "$ref": "#/definitions/end", - "description": "Explicit transition to end" - }, - "eventDataFilter": { - "description": "Event data filter definition", - "$ref": "#/definitions/eventdatafilter" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "eventRef", - "end" - ] - }, - "datacondition": { - "oneOf": [ - { - "$ref": "#/definitions/transitiondatacondition" - }, - { - "$ref": "#/definitions/enddatacondition" - } - ] - }, - "transitiondatacondition": { - "type": "object", - "description": "Switch state data based condition", - "properties": { - "name": { - "type": "string", - "description": "Data condition name" - }, - "condition": { - "type": "string", - "description": "Workflow expression evaluated against state data. Must evaluate to true or false" - }, - "transition": { - "description": "Workflow transition if condition is evaluated to true", - "$ref": "#/definitions/transition" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "condition", - "transition" - ] - }, - "enddatacondition": { - "type": "object", - "description": "Switch state data based condition", - "properties": { - "name": { - "type": "string", - "description": "Data condition name" - }, - "condition": { - "type": "string", - "description": "Workflow expression evaluated against state data. Must evaluate to true or false" - }, - "end": { - "$ref": "#/definitions/end", - "description": "Workflow end definition" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "condition", - "end" - ] - }, - "injectstate": { - "type": "object", - "description": "Inject static data into state data. Does not perform any actions", - "properties": { - "id": { - "type": "string", - "description": "Unique state id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "inject", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "data": { - "type": "object", - "description": "JSON object which can be set as states data input and can be manipulated via filters" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - } - }, - "required": [] - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "transition": { - "description": "Next transition of the workflow after injection has completed", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "data" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "data", - "end" - ] - }, - { - "required": [ - "name", - "type", - "data", - "transition" - ] - } - ] - } - }, - "foreachstate": { - "type": "object", - "description": "Execute a set of defined actions or workflows for each element of a data array", - "properties": { - "id": { - "type": "string", - "description": "Unique State id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "foreach", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "inputCollection": { - "type": "string", - "description": "Workflow expression selecting an array element of the states data" - }, - "outputCollection": { - "type": "string", - "description": "Workflow expression specifying an array element of the states data to add the results of each iteration" - }, - "iterationParam": { - "type": "string", - "description": "Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array" - }, - "batchSize": { - "type": [ - "number", - "string" - ], - "minimum": 0, - "minLength": 0, - "description": "Specifies how many iterations may run in parallel at the same time. Used if 'mode' property is set to 'parallel' (default)" - }, - "actions": { - "type": "array", - "description": "Actions to be executed for each of the elements of inputCollection", - "items": { - "type": "object", - "$ref": "#/definitions/action" - }, - "additionalItems": false - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "#/definitions/actionExecTimeout" - } - }, - "required": [] - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after state has completed", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "mode": { - "type": "string", - "enum": [ - "sequential", - "parallel" - ], - "description": "Specifies how iterations are to be performed (sequentially or in parallel)", - "default": "parallel" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "inputCollection", - "actions" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "inputCollection", - "actions", - "end" - ] - }, - { - "required": [ - "name", - "type", - "inputCollection", - "actions", - "transition" - ] - } - ] - } - }, - "callbackstate": { - "type": "object", - "description": "This state performs an action, then waits for the callback event that denotes completion of the action", - "properties": { - "id": { - "type": "string", - "description": "Unique state id", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "callback", - "description": "State type" - }, - "action": { - "description": "Defines the action to be executed", - "$ref": "#/definitions/action" - }, - "eventRef": { - "type": "string", - "description": "References an unique callback event name in the defined workflow events" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "#/definitions/actionExecTimeout" - }, - "eventTimeout": { - "$ref": "#/definitions/eventTimeout" - } - }, - "required": [] - }, - "eventDataFilter": { - "description": "Event data filter", - "$ref": "#/definitions/eventdatafilter" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after all the actions have been performed", - "$ref": "#/definitions/transition" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "action", - "eventRef" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "action", - "eventRef", - "end" - ] - }, - { - "required": [ - "name", - "type", - "action", - "eventRef", - "transition" - ] - } - ] - } - }, - "startdef": { - "oneOf": [ - { - "type": "string", - "description": "Name of the starting workflow state", - "minLength": 1 - }, - { - "type": "object", - "description": "Workflow start definition", - "properties": { - "stateName": { - "type": "string", - "description": "Name of the starting workflow state", - "minLength": 1 - }, - "schedule": { - "description": "Define the time/repeating intervals or cron at which workflow instances should be automatically started.", - "$ref": "#/definitions/schedule" - } - }, - "additionalProperties": false, - "required": [ - "stateName", - "schedule" - ] - } - ] - }, - "schedule": { - "oneOf": [ - { - "type": "string", - "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. (UTC timezone is assumed)", - "minLength": 1 - }, - { - "type": "object", - "description": "Start state schedule definition", - "properties": { - "interval": { - "type": "string", - "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created.", - "minLength": 1 - }, - "cron": { - "$ref": "#/definitions/crondef" - }, - "timezone": { - "type": "string", - "description": "Timezone name used to evaluate the interval & cron-expression. (default: UTC)" - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "interval" - ] - }, - { - "required": [ - "cron" - ] - } - ] - } - ] - }, - "end": { - "oneOf": [ - { - "type": "boolean", - "description": "State end definition", - "default": true - }, - { - "type": "object", - "description": "State end definition", - "properties": { - "terminate": { - "type": "boolean", - "default": false, - "description": "If true, completes all execution flows in the given workflow instance" - }, - "produceEvents": { - "type": "array", - "description": "Defines events that should be produced", - "items": { - "type": "object", - "$ref": "#/definitions/produceeventdef" - }, - "additionalItems": false - }, - "compensate": { - "type": "boolean", - "default": false, - "description": "If set to true, triggers workflow compensation. Default is false" - }, - "continueAs": { - "$ref": "#/definitions/continueasdef" - } - }, - "additionalProperties": false, - "required": [] - } - ] - }, - "produceeventdef": { - "type": "object", - "description": "Produce an event and set its data", - "properties": { - "eventRef": { - "type": "string", - "description": "References a name of a defined event" - }, - "data": { - "type": [ - "string", - "object" - ], - "description": "If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event." - }, - "contextAttributes": { - "type": "object", - "description": "Add additional event extension context attributes", - "additionalProperties": { - "type": "string" - } - } - }, - "additionalProperties": false, - "required": [ - "eventRef" - ] - }, - "statedatafilter": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "Workflow expression to filter the state data input" - }, - "output": { - "type": "string", - "description": "Workflow expression that filters the state data output" - } - }, - "additionalProperties": false, - "required": [] - }, - "eventdatafilter": { - "type": "object", - "properties": { - "useData": { - "type": "boolean", - "description": "If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true.", - "default": true - }, - "data": { - "type": "string", - "description": "Workflow expression that filters the received event payload (default: '${ . }')" - }, - "toStateData": { - "type": "string", - "description": " Workflow expression that selects a state data element to which the filtered event should be added/merged into. If not specified, denotes, the top-level state data element." - } - }, - "additionalProperties": false, - "required": [] - }, - "actiondatafilter": { - "type": "object", - "properties": { - "fromStateData": { - "type": "string", - "description": "Workflow expression that selects state data that the state action can use" - }, - "useResults": { - "type": "boolean", - "description": "If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true.", - "default": true - }, - "results": { - "type": "string", - "description": "Workflow expression that filters the actions data results" - }, - "toStateData": { - "type": "string", - "description": "Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element" - } - }, - "additionalProperties": false, - "required": [] - }, - "errordef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Domain-specific error name", - "minLength": 1 - }, - "code": { - "type": "string", - "description": "Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'", - "minLength": 1 - }, - "description": { - "type": "string", - "description": "Error description" - } - }, - "additionalProperties": false, - "required": [ - "name" - ] - }, - "retrydef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique retry strategy name", - "minLength": 1 - }, - "delay": { - "type": "string", - "description": "Time delay between retry attempts (ISO 8601 duration format)" - }, - "maxDelay": { - "type": "string", - "description": "Maximum time delay between retry attempts (ISO 8601 duration format)" - }, - "increment": { - "type": "string", - "description": "Static value by which the delay increases during each attempt (ISO 8601 time format)" - }, - "multiplier": { - "type": [ - "number", - "string" - ], - "minimum": 0, - "minLength": 1, - "multipleOf": 0.01, - "description": "Numeric value, if specified the delay between retries is multiplied by this value." - }, - "maxAttempts": { - "type": [ - "number", - "string" - ], - "minimum": 1, - "minLength": 0, - "description": "Maximum number of retry attempts." - }, - "jitter": { - "type": [ - "number", - "string" - ], - "minimum": 0, - "maximum": 1, - "description": "If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format)" - } - }, - "additionalProperties": false, - "required": [ - "name", - "maxAttempts" - ] - }, - "metadata": { - "type": "object", - "description": "Metadata information", - "additionalProperties": { - "type": "string" - } - }, - "authdef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique auth definition name", - "minLength": 1 - }, - "scheme": { - "type": "string", - "description": "Defines the auth type", - "enum": [ - "basic", - "bearer", - "oauth2" - ], - "default": "basic" - }, - "properties": { - "oneOf": [ - { - "type": "string", - "description": "Expression referencing a workflow secret that contains all needed auth info" - }, - { - "title": "Basic Auth Info", - "$ref": "#/definitions/basicpropsdef" - }, - { - "title": "Bearer Auth Info State", - "$ref": "#/definitions/bearerpropsdef" - }, - { - "title": "OAuth2 Info", - "$ref": "#/definitions/oauth2propsdef" - } - ] - } - }, - "required": [ - "name", - "properties" - ] - }, - "basicpropsdef": { - "type": "object", - "description": "Basic auth information", - "properties": { - "username": { - "type": "string", - "description": "String or a workflow expression. Contains the user name", - "minLength": 1 - }, - "password": { - "type": "string", - "description": "String or a workflow expression. Contains the user password", - "minLength": 1 - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "required": [ - "username", - "password" - ], - "additionalProperties": false - }, - "bearerpropsdef": { - "type": "object", - "description": "Bearer auth information", - "properties": { - "token": { - "type": "string", - "description": "String or a workflow expression. Contains the token", - "minLength": 1 - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "required": [ - "token" - ], - "additionalProperties": false - }, - "oauth2propsdef": { - "type": "object", - "description": "OAuth2 information", - "properties": { - "authority": { - "type": "string", - "description": "String or a workflow expression. Contains the authority information", - "minLength": 1 - }, - "grantType": { - "type": "string", - "description": "Defines the grant type", - "enum": [ - "password", - "clientCredentials", - "tokenExchange" - ], - "additionalItems": false - }, - "clientId": { - "type": "string", - "description": "String or a workflow expression. Contains the client identifier", - "minLength": 1 - }, - "clientSecret": { - "type": "string", - "description": "Workflow secret or a workflow expression. Contains the client secret", - "minLength": 1 - }, - "scopes": { - "type": "array", - "description": "Array containing strings or workflow expressions. Contains the OAuth2 scopes", - "items": { - "type": "string" - }, - "minItems": 1, - "additionalItems": false - }, - "username": { - "type": "string", - "description": "String or a workflow expression. Contains the user name. Used only if grantType is 'resourceOwner'", - "minLength": 1 - }, - "password": { - "type": "string", - "description": "String or a workflow expression. Contains the user password. Used only if grantType is 'resourceOwner'", - "minLength": 1 - }, - "audiences": { - "type": "array", - "description": "Array containing strings or workflow expressions. Contains the OAuth2 audiences", - "items": { - "type": "string" - }, - "minItems": 1, - "additionalItems": false - }, - "subjectToken": { - "type": "string", - "description": "String or a workflow expression. Contains the subject token", - "minLength": 1 - }, - "requestedSubject": { - "type": "string", - "description": "String or a workflow expression. Contains the requested subject", - "minLength": 1 - }, - "requestedIssuer": { - "type": "string", - "description": "String or a workflow expression. Contains the requested issuer", - "minLength": 1 - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "required": [ - "grantType", - "clientId" - ] - }, - "function": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique function name", - "minLength": 1 - }, - "operation": { - "type": "string", - "description": "If type is `rest`, #. If type is `asyncapi`, #. If type is `rpc`, ##. If type is `graphql`, ##. If type is `odata`, #. If type is `expression`, defines the workflow expression.", - "minLength": 1 - }, - "type": { - "type": "string", - "description": "Defines the function type. Is either `rest`, `asyncapi, `rpc`, `graphql`, `odata`, `expression`, or `custom`. Default is `rest`", - "enum": [ - "rest", - "asyncapi", - "rpc", - "graphql", - "odata", - "expression", - "custom" - ], - "default": "rest" - }, - "authRef": { - "type": "string", - "description": "References an auth definition name to be used to access to resource defined in the operation parameter", - "minLength": 1 - }, - "metadata": { - "$ref": "#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "name", - "operation" - ] - }, - "workflowExecTimeout": { - "oneOf": [ - { - "type": "string", - "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'", - "minLength": 1 - }, - { - "type": "object", - "properties": { - "duration": { - "type": "string", - "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'", - "minLength": 1 - }, - "interrupt": { - "type": "boolean", - "description": "If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted.", - "default": true - }, - "runBefore": { - "type": "string", - "description": "Name of a workflow state to be executed before workflow instance is terminated", - "minLength": 1 - } - }, - "additionalProperties": false, - "required": [ - "duration" - ] - } - ] - }, - "stateExecTimeout": { - "oneOf": [ - { - "type": "string", - "description": "Total state execution timeout (including retries) (ISO 8601 duration format)", - "minLength": 1 - }, - { - "type": "object", - "description": "Workflow default timeouts", - "properties": { - "single": { - "type": "string", - "description": "Single state execution timeout, not including retries (ISO 8601 duration format)", - "minLength": 1 - }, - "total": { - "type": "string", - "description": "Total state execution timeout, including retries (ISO 8601 duration format)", - "minLength": 1 - } - }, - "additionalProperties": false, - "required": [ - "total" - ] - } - ] - }, - "actionExecTimeout": { - "type": "string", - "description": "Single actions definition execution timeout duration (ISO 8601 duration format)", - "minLength": 1 - }, - "branchExecTimeout": { - "type": "string", - "description": "Single branch execution timeout duration (ISO 8601 duration format)", - "minLength": 1 - }, - "eventTimeout": { - "type": "string", - "description": "Timeout duration to wait for consuming defined events (ISO 8601 duration format)", - "minLength": 1 - }, - "eventdef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique event name", - "minLength": 1 - }, - "source": { - "type": "string", - "description": "CloudEvent source" - }, - "type": { - "type": "string", - "description": "CloudEvent type" - }, - "kind": { - "type": "string", - "enum": [ - "consumed", - "produced" - ], - "description": "Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed'", - "default": "consumed" - }, - "correlation": { - "type": "array", - "description": "CloudEvent correlation definitions", - "minItems": 1, - "items": { - "type": "object", - "$ref": "#/definitions/correlationDef" - }, - "additionalItems": false - }, - "dataOnly": { - "type": "boolean", - "default": true, - "description": "If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible " - }, - "metadata": { - "$ref": "#/definitions/metadata", - "description": "Metadata information" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "kind": { - "const": "consumed" - } - } - }, - "then": { - "required": [ - "name", - "source", - "type" - ] - }, - "else": { - "required": [ - "name", - "type" - ] - } - }, - "correlationDef": { - "type": "object", - "description": "CloudEvent correlation definition", - "properties": { - "contextAttributeName": { - "type": "string", - "description": "CloudEvent Extension Context Attribute name", - "minLength": 1 - }, - "contextAttributeValue": { - "type": "string", - "description": "CloudEvent Extension Context Attribute value", - "minLength": 1 - } - }, - "additionalProperties": false, - "required": [ - "contextAttributeName" - ] - }, - "secrets": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing secrets definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow Secrets definitions", - "items": { - "type": "string" - }, - "minItems": 1 - } - ] - }, - "timeouts": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing timeouts definitions (json or yaml)" - }, - { - "type": "object", - "description": "Workflow default timeouts", - "properties": { - "workflowExecTimeout": { - "$ref": "#/definitions/workflowExecTimeout" - }, - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "#/definitions/actionExecTimeout" - }, - "branchExecTimeout": { - "$ref": "#/definitions/branchExecTimeout" - }, - "eventTimeout": { - "$ref": "#/definitions/eventTimeout" - } - }, - "additionalProperties": false, - "required": [] - } - ] - }, - "errors": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing error definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow Error definitions. Defines checked errors that can be explicitly handled during workflow execution", - "items": { - "type": "object", - "$ref": "#/definitions/errordef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "events": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing event definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow CloudEvent definitions. Defines CloudEvents that can be consumed or produced", - "items": { - "type": "object", - "$ref": "#/definitions/eventdef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "functions": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing function definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow function definitions", - "items": { - "type": "object", - "$ref": "#/definitions/function" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "retries": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing retry definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow Retry definitions. Define retry strategies that can be referenced in states onError definitions", - "items": { - "type": "object", - "$ref": "#/definitions/retrydef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "auth": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing auth definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow auth definitions", - "items": { - "type": "object", - "$ref": "#/definitions/authdef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - } - } -} \ No newline at end of file diff --git a/src/lib/schema/auth.json b/src/lib/schema/auth.json deleted file mode 100644 index 253ab07..0000000 --- a/src/lib/schema/auth.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/auth.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - auth schema", - "type": "object", - "auth": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing auth definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow auth definitions", - "items": { - "type": "object", - "$ref": "#/definitions/authdef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "required": [ - "auth" - ], - "definitions": { - "authdef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique auth definition name", - "minLength": 1 - }, - "scheme": { - "type": "string", - "description": "Defines the auth type", - "enum": [ - "basic", - "bearer", - "oauth2" - ], - "default": "basic" - }, - "properties": { - "oneOf": [ - { - "type": "string", - "description": "Expression referencing a workflow secret that contains all needed auth info" - }, - { - "title": "Basic Auth Info", - "$ref": "#/definitions/basicpropsdef" - }, - { - "title": "Bearer Auth Info State", - "$ref": "#/definitions/bearerpropsdef" - }, - { - "title": "OAuth2 Info", - "$ref": "#/definitions/oauth2propsdef" - } - ] - } - }, - "required": [ - "name", - "properties" - ] - }, - "basicpropsdef": { - "type": "object", - "description": "Basic auth information", - "properties": { - "username": { - "type": "string", - "description": "String or a workflow expression. Contains the user name", - "minLength": 1 - }, - "password": { - "type": "string", - "description": "String or a workflow expression. Contains the user password", - "minLength": 1 - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "required": [ - "username", - "password" - ], - "additionalProperties": false - }, - "bearerpropsdef": { - "type": "object", - "description": "Bearer auth information", - "properties": { - "token": { - "type": "string", - "description": "String or a workflow expression. Contains the token", - "minLength": 1 - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "required": [ - "token" - ], - "additionalProperties": false - }, - "oauth2propsdef": { - "type": "object", - "description": "OAuth2 information", - "properties": { - "authority": { - "type": "string", - "description": "String or a workflow expression. Contains the authority information", - "minLength": 1 - }, - "grantType": { - "type": "string", - "description": "Defines the grant type", - "enum": [ - "password", - "clientCredentials", - "tokenExchange" - ], - "additionalItems": false - }, - "clientId": { - "type": "string", - "description": "String or a workflow expression. Contains the client identifier", - "minLength": 1 - }, - "clientSecret": { - "type": "string", - "description": "Workflow secret or a workflow expression. Contains the client secret", - "minLength": 1 - }, - "scopes": { - "type": "array", - "description": "Array containing strings or workflow expressions. Contains the OAuth2 scopes", - "items": { - "type": "string" - }, - "minItems": 1, - "additionalItems": false - }, - "username": { - "type": "string", - "description": "String or a workflow expression. Contains the user name. Used only if grantType is 'resourceOwner'", - "minLength": 1 - }, - "password": { - "type": "string", - "description": "String or a workflow expression. Contains the user password. Used only if grantType is 'resourceOwner'", - "minLength": 1 - }, - "audiences": { - "type": "array", - "description": "Array containing strings or workflow expressions. Contains the OAuth2 audiences", - "items": { - "type": "string" - }, - "minItems": 1, - "additionalItems": false - }, - "subjectToken": { - "type": "string", - "description": "String or a workflow expression. Contains the subject token", - "minLength": 1 - }, - "requestedSubject": { - "type": "string", - "description": "String or a workflow expression. Contains the requested subject", - "minLength": 1 - }, - "requestedIssuer": { - "type": "string", - "description": "String or a workflow expression. Contains the requested issuer", - "minLength": 1 - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "required": ["grantType", "clientId"] - } - } -} \ No newline at end of file diff --git a/src/lib/schema/common.json b/src/lib/schema/common.json deleted file mode 100644 index 5a3593e..0000000 --- a/src/lib/schema/common.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/common.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - common schema", - "type": "object", - "definitions": { - "metadata": { - "type": "object", - "description": "Metadata information", - "additionalProperties": { - "type": "string" - } - } - } -} \ No newline at end of file diff --git a/src/lib/schema/errors.json b/src/lib/schema/errors.json deleted file mode 100644 index 5208896..0000000 --- a/src/lib/schema/errors.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/errors.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - errors schema", - "type": "object", - "errors": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing error definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow Error definitions. Defines checked errors that can be explicitly handled during workflow execution", - "items": { - "type": "object", - "$ref": "#/definitions/errordef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "required": [ - "errors" - ], - "definitions": { - "errordef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Domain-specific error name", - "minLength": 1 - }, - "code": { - "type": "string", - "description": "Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'", - "minLength": 1 - }, - "description": { - "type": "string", - "description": "Error description" - } - }, - "additionalProperties": false, - "required": [ - "name" - ] - } - } -} diff --git a/src/lib/schema/events.json b/src/lib/schema/events.json deleted file mode 100644 index 59ef767..0000000 --- a/src/lib/schema/events.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/events.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - events schema", - "type": "object", - "events": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing event definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow CloudEvent definitions. Defines CloudEvents that can be consumed or produced", - "items": { - "type": "object", - "$ref": "#/definitions/eventdef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "required": [ - "events" - ], - "definitions": { - "eventdef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique event name", - "minLength": 1 - }, - "source": { - "type": "string", - "description": "CloudEvent source" - }, - "type": { - "type": "string", - "description": "CloudEvent type" - }, - "kind": { - "type": "string", - "enum": [ - "consumed", - "produced" - ], - "description": "Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed'", - "default": "consumed" - }, - "correlation": { - "type": "array", - "description": "CloudEvent correlation definitions", - "minItems": 1, - "items": { - "type": "object", - "$ref": "#/definitions/correlationDef" - }, - "additionalItems": false - }, - "dataOnly": { - "type": "boolean", - "default": true, - "description": "If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible " - }, - "metadata": { - "$ref": "common.json#/definitions/metadata", - "description": "Metadata information" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "source": { - "type": "null" - } - } - }, - "then": { - "required": [ - "name", - "type" - ] - }, - "else": { - "required": [ - "name", - "source" - ] - } - }, - "correlationDef": { - "type": "object", - "description": "CloudEvent correlation definition", - "properties": { - "contextAttributeName": { - "type": "string", - "description": "CloudEvent Extension Context Attribute name", - "minLength": 1 - }, - "contextAttributeValue": { - "type": "string", - "description": "CloudEvent Extension Context Attribute value", - "minLength": 1 - } - }, - "additionalProperties": false, - "required": [ - "contextAttributeName" - ] - } - } -} \ No newline at end of file diff --git a/src/lib/schema/extensions/kpi.json b/src/lib/schema/extensions/kpi.json deleted file mode 100644 index 08a8138..0000000 --- a/src/lib/schema/extensions/kpi.json +++ /dev/null @@ -1,289 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/extensions/kpi.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - KPIs Extension Schema", - "type": "object", - "definitions": { - "kpi": { - "type": "object", - "description": "Serverless Workflow KPI Extension", - "properties": { - "extensionid": { - "type": "string", - "default": "workflow-kpi-extension", - "description": "Extension unique identifier" - }, - "workflowid": { - "type": "string", - "minLength": 1, - "description": "Workflow definition unique identifier (workflow id property)" - }, - "workflowVersions": { - "type": "array", - "description": "Workflow versions. If not defined, applies to all workflow instances (regardless of their associated workflow version)", - "items": { - "type": "string" - } - }, - "currency": { - "type": "string", - "default": "USD", - "description": "Unit for all cost-based KPI parameters. Default 'USD'" - }, - "events": { - "type": "array", - "description": "Events KPIs", - "items": { - "type": "object", - "$ref": "#/definitions/eventskpi" - } - }, - "functions": { - "type": "array", - "description": "Functions KPIs", - "items": { - "type": "object", - "$ref": "#/definitions/functionskpi" - } - }, - "states": { - "type": "array", - "description": "States KPIs", - "items": { - "type": "object", - "$ref": "#/definitions/stateskpi" - } - }, - "workflow": { - "description": "Workflow KPIs", - "$ref": "#/definitions/workflowkpi" - } - }, - "required": [ - "extensionid", - "workflowid" - ] - }, - "eventskpi": { - "type": "object", - "properties": { - "for": { - "type": "string", - "description": "References an unique event name in the defined workflow events" - }, - "per": { - "description": "Define the kpi thresholds in terms of time and/or num of workflow instances", - "$ref": "#/definitions/thresholds" - }, - "maxConsumed": { - "type": "string", - "description": "If event kind is 'consumed', the max amount of times this event is consumed" - }, - "minConsumed": { - "type": "string", - "description": "If event kind is 'consumed', the min amount of times this event is consumed" - }, - "avgConsumed": { - "type": "string", - "description": "If event kind is 'consumed', the avg amount of times this event is consumed" - }, - "maxProduced": { - "type": "string", - "description": "If event kind is 'produced', the max amount of times this event is produced" - }, - "minProduced": { - "type": "string", - "description": "If event kind is 'produced', the min amount times this event is produced" - }, - "avgProduced": { - "type": "string", - "description": "If event kind is 'produced', the avg amount of times this event is produced" - } - }, - "required": [ - "for", - "per" - ] - }, - "functionskpi": { - "type": "object", - "allOf": [ - { - "properties": { - "for": { - "type": "string", - "description": "References an unique function name in the defined workflow functions" - }, - "per": { - "description": "Define the kpi thresholds in terms of time and/or num of workflow instances", - "$ref": "#/definitions/thresholds" - }, - "maxErrors": { - "type": "string", - "description": "Max number of errors during function invocation" - }, - "maxRetry": { - "type": "string", - "description": "Max number of retries done for this function invocation" - }, - "maxTimeout": { - "type": "string", - "description": "Max number of times the function timeout time was reached" - } - } - }, - { - "$ref": "#/definitions/invocationkpis" - }, - { - "$ref": "#/definitions/costkpis" - } - ], - "required": [ - "for", - "per" - ] - }, - "stateskpi": { - "type": "object", - "allOf": [ - { - "properties": { - "for": { - "type": "string", - "description": "References an unique state name in the defined workflow events" - }, - "per": { - "description": "Define the kpi thresholds in terms of time and/or num of workflow instances", - "$ref": "#/definitions/thresholds" - } - } - }, - { - "$ref": "#/definitions/execkpis" - }, - { - "$ref": "#/definitions/durationkpis" - }, - { - "$ref": "#/definitions/costkpis" - } - ], - "required": [ - "for", - "per" - ] - }, - "workflowkpi": { - "type": "object", - "allOf": [ - { - "properties": { - "per": { - "description": "Define the kpi thresholds in terms of time and/or num of workflow instances", - "$ref": "#/definitions/thresholds" - } - } - }, - { - "$ref": "#/definitions/invocationkpis" - }, - { - "$ref": "#/definitions/durationkpis" - }, - { - "$ref": "#/definitions/costkpis" - } - ], - "required": [ - "per" - ] - }, - "thresholds": { - "type": "object", - "properties": { - "time": { - "type": "string", - "default": "PT1D", - "description": "ISO_8601 time. 1 day default" - }, - "instances": { - "type": "integer", - "minimum": 1, - "default": 1, - "description": "Number of workflow instances" - } - }, - "required": [ - ] - }, - "costkpis": { - "type": "object", - "properties": { - "maxCost": { - "type": "string", - "description": "Max cost" - }, - "minCost": { - "type": "string", - "description": "Min cost" - }, - "avgCost": { - "type": "string", - "description": "Avg cost" - } - } - }, - "invocationkpis": { - "type": "object", - "properties": { - "maxInvoked": { - "type": "string", - "description": "Max number of invocation times" - }, - "minInvoked": { - "type": "string", - "description": "Min number of invocation times" - }, - "avgInvoked": { - "type": "string", - "description": "Avg number of invocation times" - } - } - }, - "durationkpis": { - "type": "object", - "properties": { - "maxDuration": { - "type": "string", - "description": "ISO 8601. Max duration" - }, - "minDuration": { - "type": "string", - "description": "ISO 8601. Min duration" - }, - "avgDuration": { - "type": "string", - "description": "ISO 8601. Avg duration" - } - } - }, - "execkpis": { - "type": "object", - "properties": { - "maxExec": { - "type": "string", - "description": "Max exec number" - }, - "minExec": { - "type": "string", - "description": "Min exec numbe" - }, - "avgExec": { - "type": "string", - "description": "Avg exec number" - } - } - } - } -} \ No newline at end of file diff --git a/src/lib/schema/extensions/ratelimiting.json b/src/lib/schema/extensions/ratelimiting.json deleted file mode 100644 index a7bc6f2..0000000 --- a/src/lib/schema/extensions/ratelimiting.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/extensions/ratelimiting.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - Various workflow rate limiting settings", - "type": "object", - "definitions": { - "ratelimiting": { - "type": "object", - "description": "Serverless Workflow Rate Limiting Extension", - "properties": { - "extensionid": { - "type": "string", - "default": "workflow-ratelimiting-extension", - "description": "Extension unique identifier" - }, - "workflowid": { - "type": "string", - "minLength": 1, - "description": "Workflow definition unique identifier (workflow id property)" - }, - "workflowVersions": { - "type": "array", - "description": "Workflow versions. If not defined, applies to all workflow instances (regardless of their associated workflow version)", - "items": { - "type": "string" - } - }, - "singleInstance": { - "description": "Rate Limit settings per single instance of a workflow with provided workflowid", - "$ref": "#/definitions/ratelimits" - }, - "allInstances": { - "description": "Rate Limit settings across all instance of a workflow with provided workflowid", - "$ref": "#/definitions/ratelimits" - } - }, - "required": [ - "extensionid", - "workflowid" - ] - }, - "ratelimits": { - "type": "object", - "properties": { - "maxActionsPerSecond": { - "type": "number", - "default": 0, - "description": "Sets the rate limiting on number of actions that can be executed per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow actions can be executed once every 10 seconds. Default zero value means 'unlimited'" - }, - "maxConcurrentActions": { - "type": "number", - "default": 100, - "description": "Maximum number of actions that can be executed in parallel" - }, - "maxProducedEventsPerSecond": { - "type": "number", - "default": 0, - "description": "Sets the rate limiting on number of events that can be produced per second. Notice that the number is represented as number type, so that you can set it to less than 1 if needed. For example, set the number to 0.1 means workflow can produce events once every 10 seconds. Default zero value means 'unlimited'" - }, - "maxStates": { - "type": "integer", - "default": 0, - "description": "Maximum number of workflow states that should be executed. Default is zero, meaning unlimited." - }, - "maxTransitions": { - "type": "integer", - "default": 0, - "description": "Maximum number of workflow transitions that should be executed. Default is zero, meaning unlimited." - } - } - } - } -} \ No newline at end of file diff --git a/src/lib/schema/functions.json b/src/lib/schema/functions.json deleted file mode 100644 index a29bd2d..0000000 --- a/src/lib/schema/functions.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/functions.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - functions schema", - "type": "object", - "functions": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing function definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow function definitions", - "items": { - "type": "object", - "$ref": "#/definitions/function" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "required": [ - "functions" - ], - "definitions": { - "function": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique function name", - "minLength": 1 - }, - "operation": { - "type": "string", - "description": "If type is `rest`, #. If type is `asyncapi`, #. If type is `rpc`, ##. If type is `graphql`, ##. If type is `odata`, #. If type is `expression`, defines the workflow expression.", - "minLength": 1 - }, - "type": { - "type": "string", - "description": "Defines the function type. Is either `rest`, `asyncapi, `rpc`, `graphql`, `odata`, `expression`, or `custom`. Default is `rest`", - "enum": [ - "rest", - "asyncapi", - "rpc", - "graphql", - "odata", - "expression", - "custom" - ], - "default": "rest" - }, - "authRef": { - "oneOf": [ - { - "type": "string", - "description": "References the auth definition to be used to invoke the operation", - "minLength": 1 - }, - { - "type": "object", - "description": "Configures both the auth definition used to retrieve the operation's resource and the auth definition used to invoke said operation", - "properties":{ - "resource":{ - "type": "string", - "description": "References an auth definition to be used to access the resource defined in the operation parameter", - "minLength": 1 - }, - "invocation":{ - "type": "string", - "description": "References an auth definition to be used to invoke the operation" - } - }, - "additionalProperties": false, - "required": [ - "resource" - ] - } - ] - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "name", - "operation" - ] - } - } -} \ No newline at end of file diff --git a/src/lib/schema/odata.json b/src/lib/schema/odata.json deleted file mode 100644 index 958cd99..0000000 --- a/src/lib/schema/odata.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/odata.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - OData command options schema", - "type": "object", - "key": { - "type": "string", - "description": "The unique identifier of the single entry to query", - "minLength": 1 - }, - "queryOptions":{ - "$ref": "#/definitions/queryoptions" - }, - "definitions": { - "queryoptions": { - "type": "object", - "properties": { - "filter": { - "type": "string", - "description": "The $filter system query option allows clients to filter the set of resources that are addressed by a request URL. $filter specifies conditions that MUST be met by a resource for it to be returned in the set of matching resources", - "minLength": 1 - }, - "expand": { - "type": "string", - "description": "The $expand system query option allows clients to request related resources when a resource that satisfies a particular request is retrieved", - "minLength": 1 - }, - "select": { - "type": "string", - "description": "The $select system query option allows clients to requests a limited set of information for each entity or complex type identified by the ResourcePath and other System Query Options like $filter, $top, $skip etc. The $select query option is often used in conjunction with the $expand query option, to first increase the scope of the resource graph returned ($expand) and then selectively prune that resource graph ($select)", - "minLength": 1 - }, - "orderBy": { - "type": "string", - "description": "The $orderby system query option allows clients to request resource in a particular order", - "minLength": 1 - }, - "top": { - "type": "integer", - "description": "The $top system query option allows clients a required number of resources. Usually used in conjunction with the $skip query options", - "minLength": 1 - }, - "skip": { - "type": "integer", - "description": "The $skip system query option allows clients to skip a given number of resources. Usually used in conjunction with the $top query options", - "minLength": 1 - }, - "count": { - "type": "boolean", - "description": "The $count system query option allows clients to request a count of the matching resources included with the resources in the response" - }, - "search": { - "type": "string", - "description": "The $search system query option allows clients to request items within a collection matching a free-text search expression", - "minLength": 1 - }, - "format": { - "type": "string", - "description": "The $format system query option if supported allows clients to request a response in a particular format", - "minLength": 1 - }, - "compute": { - "type": "string", - "description": "The $compute system query option allows clients to define computed properties that can be used in a $select or within a $filter or $orderby expression.", - "minLength": 1 - }, - "index": { - "type": "string", - "description": "The $index system query option allows clients to do a positional insert into a collection annotated with using the Core.PositionalInsert term (see http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#VocCore)", - "minLength": 1 - }, - "schemaVersion": { - "type": "string", - "description": "The $schemaversion system query option allows clients to specify the version of the schema against which the request is made. The semantics of $schemaversion is covered in the OData-Protocol (http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#odata) document.", - "minLength": 1 - } - }, - "additionalProperties": false - } - } -} \ No newline at end of file diff --git a/src/lib/schema/retries.json b/src/lib/schema/retries.json deleted file mode 100644 index 1690abd..0000000 --- a/src/lib/schema/retries.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/retries.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - retries schema", - "type": "object", - "retries": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing retry definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow Retry definitions. Define retry strategies that can be referenced in states onError definitions", - "items": { - "type": "object", - "$ref": "#/definitions/retrydef" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "required": [ - "retries" - ], - "definitions": { - "retrydef": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Unique retry strategy name", - "minLength": 1 - }, - "delay": { - "type": "string", - "description": "Time delay between retry attempts (ISO 8601 duration format)" - }, - "maxDelay": { - "type": "string", - "description": "Maximum time delay between retry attempts (ISO 8601 duration format)" - }, - "increment": { - "type": "string", - "description": "Static value by which the delay increases during each attempt (ISO 8601 time format)" - }, - "multiplier": { - "type": [ - "number", - "string" - ], - "minimum": 0, - "minLength": 1, - "multipleOf": 0.01, - "description": "Numeric value, if specified the delay between retries is multiplied by this value." - }, - "maxAttempts": { - "type": [ - "number", - "string" - ], - "minimum": 1, - "minLength": 0, - "description": "Maximum number of retry attempts." - }, - "jitter": { - "type": [ - "number", - "string" - ], - "minimum": 0, - "maximum": 1, - "description": "If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format)" - } - }, - "additionalProperties": false, - "required": [ - "name", - "maxAttempts" - ] - } - } -} diff --git a/src/lib/schema/secrets.json b/src/lib/schema/secrets.json deleted file mode 100644 index dc553cc..0000000 --- a/src/lib/schema/secrets.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/secrets.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - secrets schema", - "type": "object", - "secrets": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing secrets definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow Secrets definitions", - "items": { - "type": "string" - }, - "minItems": 1 - } - ] - }, - "required": [ - "secrets" - ] -} \ No newline at end of file diff --git a/src/lib/schema/timeouts.json b/src/lib/schema/timeouts.json deleted file mode 100644 index 95f30ce..0000000 --- a/src/lib/schema/timeouts.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/timeouts.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - functions schema", - "type": "object", - "timeouts": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing timeouts definitions (json or yaml)" - }, - { - "type": "object", - "description": "Workflow default timeouts", - "properties": { - "workflowExecTimeout": { - "$ref": "#/definitions/workflowExecTimeout" - }, - "stateExecTimeout": { - "$ref": "#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "#/definitions/actionExecTimeout" - }, - "branchExecTimeout": { - "$ref": "#/definitions/branchExecTimeout" - }, - "eventTimeout": { - "$ref": "#/definitions/eventTimeout" - } - }, - "additionalProperties": false, - "required": [] - } - ] - }, - "required": [ - "timeouts" - ], - "definitions": { - "workflowExecTimeout": { - "oneOf": [ - { - "type": "string", - "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'", - "minLength": 1 - }, - { - "type": "object", - "properties": { - "duration": { - "type": "string", - "description": "Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'", - "minLength": 1 - }, - "interrupt": { - "type": "boolean", - "description": "If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted.", - "default": true - }, - "runBefore": { - "type": "string", - "description": "Name of a workflow state to be executed before workflow instance is terminated", - "minLength": 1 - } - }, - "additionalProperties": false, - "required": [ - "duration" - ] - } - ] - }, - "stateExecTimeout": { - "type": "string", - "description": "Workflow state execution timeout duration (ISO 8601 duration format)", - "minLength": 1 - }, - "actionExecTimeout": { - "type": "string", - "description": "Action execution timeout duration (ISO 8601 duration format)", - "minLength": 1 - }, - "branchExecTimeout": { - "type": "string", - "description": "Branch execution timeout duration (ISO 8601 duration format)", - "minLength": 1 - }, - "eventTimeout": { - "type": "string", - "description": "Timeout duration to wait for consuming defined events (ISO 8601 duration format)", - "minLength": 1 - } - } -} \ No newline at end of file diff --git a/src/lib/schema/types/index.ts b/src/lib/schema/types/index.ts deleted file mode 100644 index 1754cf0..0000000 --- a/src/lib/schema/types/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export * as Specification from './workflow'; diff --git a/src/lib/schema/types/workflow.ts b/src/lib/schema/types/workflow.ts deleted file mode 100644 index dbde7db..0000000 --- a/src/lib/schema/types/workflow.ts +++ /dev/null @@ -1,1511 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Serverless Workflow specification - workflow schema - */ -export type Workflow /* Serverless Workflow specification - workflow schema */ = - | { - /** - * Workflow unique identifier - */ - id: string; - /** - * Domain-specific workflow identifier - */ - key?: string; - /** - * Workflow name - */ - name?: string; - /** - * Workflow description - */ - description?: string; - /** - * Workflow version - */ - version?: string; // ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - /** - * List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities - */ - annotations?: [string, ...string[]]; - dataInputSchema?: - | string - | { - schema: any; - /** - * Determines if workflow execution should continue if there are validation errors - */ - failOnValidationErrors?: boolean; - }; - secrets?: Secrets; - constants?: - | string /* uri */ - | { - [key: string]: any; - }; - start?: Startdef; - /** - * Serverless Workflow schema version - */ - specVersion: string; - /** - * Identifies the expression language used for workflow expressions. Default is 'jq' - */ - expressionLang?: string; - timeouts?: Timeouts; - errors?: Errors; - /** - * If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout' - */ - keepActive?: boolean; - metadata?: /* Metadata information */ Metadata; - events?: Events; - functions?: Functions; - /** - * If set to true, actions should automatically be retried on unchecked errors. Default is false - */ - autoRetries?: boolean; - retries?: Retries; - auth?: Auth; - extensions?: Extensions; - /** - * State definitions - */ - states: [ - ( - | /* Causes the workflow execution to sleep for a specified duration */ Sleepstate - | /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ Eventstate - | /* Defines actions be performed. Does not wait for incoming events */ Operationstate - | /* Consists of a number of states that are executed in parallel */ Parallelstate - | Switchstate - | /* Inject static data into state data. Does not perform any actions */ Injectstate - | /* Execute a set of defined actions or workflows for each element of a data array */ Foreachstate - | /* This state performs an action, then waits for the callback event that denotes completion of the action */ Callbackstate - ), - ...( - | /* Causes the workflow execution to sleep for a specified duration */ Sleepstate - | /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ Eventstate - | /* Defines actions be performed. Does not wait for incoming events */ Operationstate - | /* Consists of a number of states that are executed in parallel */ Parallelstate - | Switchstate - | /* Inject static data into state data. Does not perform any actions */ Injectstate - | /* Execute a set of defined actions or workflows for each element of a data array */ Foreachstate - | /* This state performs an action, then waits for the callback event that denotes completion of the action */ Callbackstate - )[] - ]; - } - | { - /** - * Workflow unique identifier - */ - id?: string; - /** - * Domain-specific workflow identifier - */ - key: string; - /** - * Workflow name - */ - name?: string; - /** - * Workflow description - */ - description?: string; - /** - * Workflow version - */ - version?: string; // ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - /** - * List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities - */ - annotations?: [string, ...string[]]; - dataInputSchema?: - | string - | { - schema: any; - /** - * Determines if workflow execution should continue if there are validation errors - */ - failOnValidationErrors?: boolean; - }; - secrets?: Secrets; - constants?: - | string /* uri */ - | { - [key: string]: any; - }; - start?: Startdef; - /** - * Serverless Workflow schema version - */ - specVersion: string; - /** - * Identifies the expression language used for workflow expressions. Default is 'jq' - */ - expressionLang?: string; - timeouts?: Timeouts; - errors?: Errors; - /** - * If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout' - */ - keepActive?: boolean; - metadata?: /* Metadata information */ Metadata; - events?: Events; - functions?: Functions; - /** - * If set to true, actions should automatically be retried on unchecked errors. Default is false - */ - autoRetries?: boolean; - retries?: Retries; - auth?: Auth; - extensions?: Extensions; - /** - * State definitions - */ - states: [ - ( - | /* Causes the workflow execution to sleep for a specified duration */ Sleepstate - | /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ Eventstate - | /* Defines actions be performed. Does not wait for incoming events */ Operationstate - | /* Consists of a number of states that are executed in parallel */ Parallelstate - | Switchstate - | /* Inject static data into state data. Does not perform any actions */ Injectstate - | /* Execute a set of defined actions or workflows for each element of a data array */ Foreachstate - | /* This state performs an action, then waits for the callback event that denotes completion of the action */ Callbackstate - ), - ...( - | /* Causes the workflow execution to sleep for a specified duration */ Sleepstate - | /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ Eventstate - | /* Defines actions be performed. Does not wait for incoming events */ Operationstate - | /* Consists of a number of states that are executed in parallel */ Parallelstate - | Switchstate - | /* Inject static data into state data. Does not perform any actions */ Injectstate - | /* Execute a set of defined actions or workflows for each element of a data array */ Foreachstate - | /* This state performs an action, then waits for the callback event that denotes completion of the action */ Callbackstate - )[] - ]; - }; -export type Action = - | { - /** - * Unique action definition name - */ - name?: string; - functionRef: Functionref; - eventRef?: /* Event References */ Eventref; - subFlowRef?: Subflowref; - sleep?: Sleep; - /** - * References a defined workflow retry definition. If not defined the default retry policy is assumed - */ - retryRef?: string; - /** - * List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` - */ - nonRetryableErrors?: [string, ...string[]]; - /** - * List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` - */ - retryableErrors?: [string, ...string[]]; - actionDataFilter?: Actiondatafilter; - /** - * Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded - */ - condition?: string; - } - | { - /** - * Unique action definition name - */ - name?: string; - functionRef?: Functionref; - eventRef: /* Event References */ Eventref; - subFlowRef?: Subflowref; - sleep?: Sleep; - /** - * References a defined workflow retry definition. If not defined the default retry policy is assumed - */ - retryRef?: string; - /** - * List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` - */ - nonRetryableErrors?: [string, ...string[]]; - /** - * List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` - */ - retryableErrors?: [string, ...string[]]; - actionDataFilter?: Actiondatafilter; - /** - * Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded - */ - condition?: string; - } - | { - /** - * Unique action definition name - */ - name?: string; - functionRef?: Functionref; - eventRef?: /* Event References */ Eventref; - subFlowRef: Subflowref; - sleep?: Sleep; - /** - * References a defined workflow retry definition. If not defined the default retry policy is assumed - */ - retryRef?: string; - /** - * List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` - */ - nonRetryableErrors?: [string, ...string[]]; - /** - * List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` - */ - retryableErrors?: [string, ...string[]]; - actionDataFilter?: Actiondatafilter; - /** - * Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded - */ - condition?: string; - }; -/** - * Action execution timeout duration (ISO 8601 duration format) - */ -export type ActionExecTimeout = string; -export interface Actiondatafilter { - /** - * Workflow expression that selects state data that the state action can use - */ - fromStateData?: string; - /** - * If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true. - */ - useResults?: boolean; - /** - * Workflow expression that filters the actions data results - */ - results?: string; - /** - * Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element - */ - toStateData?: string; -} -export type Auth = string /* uri */ | [Authdef, ...Authdef[]]; -export interface Authdef { - /** - * Unique auth definition name - */ - name: string; - /** - * Defines the auth type - */ - scheme?: 'basic' | 'bearer' | 'oauth2'; - properties: - | string - | /* Basic auth information */ Basicpropsdef - | /* Bearer auth information */ Bearerpropsdef - | /* OAuth2 information */ Oauth2propsdef; -} -/** - * Basic auth information - */ -export interface Basicpropsdef { - /** - * String or a workflow expression. Contains the user name - */ - username: string; - /** - * String or a workflow expression. Contains the user password - */ - password: string; - metadata?: /* Metadata information */ Metadata; -} -/** - * Bearer auth information - */ -export interface Bearerpropsdef { - /** - * String or a workflow expression. Contains the token - */ - token: string; - metadata?: /* Metadata information */ Metadata; -} -/** - * Branch Definition - */ -export interface Branch { - /** - * Branch name - */ - name: string; - /** - * State specific timeouts - */ - timeouts?: { - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - branchExecTimeout?: /* Branch execution timeout duration (ISO 8601 duration format) */ BranchExecTimeout; - }; - /** - * Actions to be executed in this branch - */ - actions: Action[]; -} -/** - * Branch execution timeout duration (ISO 8601 duration format) - */ -export type BranchExecTimeout = string; -/** - * This state performs an action, then waits for the callback event that denotes completion of the action - */ -export interface Callbackstate { - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'callback'; - /** - * Defines the action to be executed - */ - action?: Action; - /** - * References an unique callback event name in the defined workflow events - */ - eventRef?: string; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; - /** - * Event data filter - */ - eventDataFilter?: Eventdatafilter; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after all the actions have been performed - */ - transition?: Transition; - /** - * State end definition - */ - end?: End; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; -} -export type Continueasdef = - | string - | { - /** - * Unique id of the workflow to continue execution as - */ - workflowId: string; - /** - * Version of the workflow to continue execution as - */ - version?: string; // ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - /** - * If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution - */ - data?: - | string - | { - [key: string]: any; - }; - /** - * Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow - */ - workflowExecTimeout?: WorkflowExecTimeout; - }; -/** - * CloudEvent correlation definition - */ -export interface CorrelationDef { - /** - * CloudEvent Extension Context Attribute name - */ - contextAttributeName: string; - /** - * CloudEvent Extension Context Attribute value - */ - contextAttributeValue?: string; -} -export type Crondef = - | string - | { - /** - * Repeating interval (cron expression) describing when the workflow instance should be created - */ - expression: string; - /** - * Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid - */ - validUntil?: string; - }; -/** - * Permits transitions to other states based on data conditions - */ -export interface Databasedswitchstate { - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'switch'; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - }; - /** - * Defines conditions evaluated against state data - */ - dataConditions: Datacondition[]; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition - */ - defaultCondition: /* DefaultCondition definition. Can be either a transition or end definition */ Defaultconditiondef; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; -} -export type Datacondition /* Switch state data based condition */ = - | Transitiondatacondition - | /* Switch state data based condition */ Enddatacondition; -/** - * DefaultCondition definition. Can be either a transition or end definition - */ -export type Defaultconditiondef /* DefaultCondition definition. Can be either a transition or end definition */ = - | { - /** - * The optional name of the default condition, used solely for display purposes - */ - name?: string; - transition: Transition; - end?: End; - } - | { - /** - * The optional name of the default condition, used solely for display purposes - */ - name?: string; - transition?: Transition; - end: End; - }; -export type End = - | boolean - | { - /** - * If true, completes all execution flows in the given workflow instance - */ - terminate?: boolean; - /** - * Defines events that should be produced - */ - produceEvents?: /* Produce an event and set its data */ Produceeventdef[]; - /** - * If set to true, triggers workflow compensation. Default is false - */ - compensate?: boolean; - continueAs?: Continueasdef; - }; -/** - * Switch state data based condition - */ -export interface Enddatacondition { - /** - * Data condition name - */ - name?: string; - /** - * Workflow expression evaluated against state data. Must evaluate to true or false - */ - condition: string; - /** - * Workflow end definition - */ - end: End; - metadata?: /* Metadata information */ Metadata; -} -/** - * Switch state data event condition - */ -export interface Endeventcondition { - /** - * Event condition name - */ - name?: string; - /** - * References an unique event name in the defined workflow events - */ - eventRef: string; - /** - * Explicit transition to end - */ - end: End; - /** - * Event data filter definition - */ - eventDataFilter?: Eventdatafilter; - metadata?: /* Metadata information */ Metadata; -} -export type Error = - | { - /** - * Reference to a unique workflow error definition. Used of errorRefs is not used - */ - errorRef: string; - /** - * References one or more workflow error definitions. Used if errorRef is not used - */ - errorRefs?: [string, ...string[]]; - transition: Transition; - end?: End; - } - | { - /** - * Reference to a unique workflow error definition. Used of errorRefs is not used - */ - errorRef: string; - /** - * References one or more workflow error definitions. Used if errorRef is not used - */ - errorRefs?: [string, ...string[]]; - transition?: Transition; - end: End; - } - | { - /** - * Reference to a unique workflow error definition. Used of errorRefs is not used - */ - errorRef?: string; - /** - * References one or more workflow error definitions. Used if errorRef is not used - */ - errorRefs: [string, ...string[]]; - transition: Transition; - end?: End; - } - | { - /** - * Reference to a unique workflow error definition. Used of errorRefs is not used - */ - errorRef?: string; - /** - * References one or more workflow error definitions. Used if errorRef is not used - */ - errorRefs: [string, ...string[]]; - transition?: Transition; - end: End; - }; -export interface Errordef { - /** - * Domain-specific error name - */ - name: string; - /** - * Error code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*' - */ - code?: string; - /** - * Error description - */ - description?: string; -} -export type Errors = string /* uri */ | [Errordef, ...Errordef[]]; -/** - * Timeout duration to wait for consuming defined events (ISO 8601 duration format) - */ -export type EventTimeout = string; -/** - * Permits transitions to other states based on events - */ -export interface Eventbasedswitchstate { - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'switch'; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; - /** - * Defines conditions evaluated against events - */ - eventConditions: Eventcondition[]; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition - */ - defaultCondition: /* DefaultCondition definition. Can be either a transition or end definition */ Defaultconditiondef; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; -} -export type Eventcondition /* Switch state data event condition */ = - | Transitioneventcondition - | /* Switch state data event condition */ Endeventcondition; -export interface Eventdatafilter { - /** - * If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true. - */ - useData?: boolean; - /** - * Workflow expression that filters the received event payload (default: '${ . }') - */ - data?: string; - /** - * Workflow expression that selects a state data element to which the filtered event should be added/merged into. If not specified, denotes, the top-level state data element. - */ - toStateData?: string; -} -export interface Eventdef { - /** - * Unique event name - */ - name?: string; - /** - * CloudEvent source - */ - source?: string; - /** - * CloudEvent type - */ - type?: string; - /** - * Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Default is 'consumed' - */ - kind?: 'consumed' | 'produced'; - /** - * CloudEvent correlation definitions - */ - correlation?: [ - /* CloudEvent correlation definition */ CorrelationDef, - .../* CloudEvent correlation definition */ CorrelationDef[] - ]; - /** - * If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible - */ - dataOnly?: boolean; - /** - * Metadata information - */ - metadata?: /* Metadata information */ Metadata; -} -/** - * Event References - */ -export interface Eventref { - /** - * Reference to the unique name of a 'produced' event definition - */ - produceEventRef: string; - /** - * Reference to the unique name of a 'consumed' event definition - */ - consumeEventRef?: string; - /** - * Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it should default to the actionExecutionTimeout - */ - consumeEventTimeout?: string; - /** - * If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'produceEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'produceEventRef'. - */ - data?: - | string - | { - [key: string]: any; - }; - /** - * Add additional extension context attributes to the produced event - */ - contextAttributes?: { - [name: string]: string; - }; -} -export type Events = string /* uri */ | [Eventdef, ...Eventdef[]]; -/** - * This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel - */ -export type Eventstate = - /* This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel */ - | { - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'event'; - /** - * If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed - */ - exclusive?: boolean; - /** - * Define the events to be consumed and optional actions to be performed - */ - onEvents: Onevents[]; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; - stateDataFilter?: Statedatafilter; - /** - * States error handling definitions - */ - onErrors?: Error[]; - transition?: Transition; - end: End; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - metadata?: /* Metadata information */ Metadata; - } - | { - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'event'; - /** - * If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed - */ - exclusive?: boolean; - /** - * Define the events to be consumed and optional actions to be performed - */ - onEvents: Onevents[]; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; - stateDataFilter?: Statedatafilter; - /** - * States error handling definitions - */ - onErrors?: Error[]; - transition: Transition; - end?: End; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - metadata?: /* Metadata information */ Metadata; - }; -export interface Extension { - /** - * Unique extension id - */ - extensionId: string; - /** - * URI to a resource containing this workflow extension definitions (json or yaml) - */ - resource: string; -} -export type Extensions = string /* uri */ | [Extension, ...Extension[]]; -/** - * Execute a set of defined actions or workflows for each element of a data array - */ -export interface Foreachstate { - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'foreach'; - /** - * State end definition - */ - end?: End; - /** - * Workflow expression selecting an array element of the states data - */ - inputCollection?: string; - /** - * Workflow expression specifying an array element of the states data to add the results of each iteration - */ - outputCollection?: string; - /** - * Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array - */ - iterationParam?: string; - /** - * Specifies how many iterations may run in parallel at the same time. Used if 'mode' property is set to 'parallel' (default) - */ - batchSize?: number | string; - /** - * Actions to be executed for each of the elements of inputCollection - */ - actions?: Action[]; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - }; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after state has completed - */ - transition?: Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - /** - * Specifies how iterations are to be performed (sequentially or in parallel) - */ - mode?: 'sequential' | 'parallel'; - metadata?: /* Metadata information */ Metadata; -} -export interface Function { - /** - * Unique function name - */ - name: string; - /** - * If type is `rest`, #. If type is `asyncapi`, #. If type is `rpc`, ##. If type is `graphql`, ##. If type is `odata`, #. If type is `expression`, defines the workflow expression. - */ - operation: string; - /** - * Defines the function type. Is either `rest`, `asyncapi, `rpc`, `graphql`, `odata`, `expression`, or `custom`. Default is `rest` - */ - type?: 'rest' | 'asyncapi' | 'rpc' | 'graphql' | 'odata' | 'expression' | 'custom'; - authRef?: - | string - | { - /** - * References an auth definition to be used to access the resource defined in the operation parameter - */ - resource: string; - /** - * References an auth definition to be used to invoke the operation - */ - invocation?: string; - }; - metadata?: /* Metadata information */ Metadata; -} -export type Functionref = - | string - | { - /** - * Name of the referenced function - */ - refName: string; - /** - * Function arguments/inputs - */ - arguments?: { - [key: string]: any; - }; - /** - * Only used if function type is 'graphql'. A string containing a valid GraphQL selection set - */ - selectionSet?: string; - /** - * Specifies if the function should be invoked sync or async - */ - invoke?: 'sync' | 'async'; - }; -export type Functions = string /* uri */ | [Function, ...Function[]]; -/** - * Inject static data into state data. Does not perform any actions - */ -export interface Injectstate { - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'inject'; - /** - * State end definition - */ - end?: End; - /** - * JSON object which can be set as states data input and can be manipulated via filters - */ - data?: { - [key: string]: any; - }; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * Next transition of the workflow after injection has completed - */ - transition?: Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; -} -/** - * Metadata information - */ -export interface Metadata { - [name: string]: string; -} -/** - * OAuth2 information - */ -export interface Oauth2propsdef { - /** - * String or a workflow expression. Contains the authority information - */ - authority?: string; - /** - * Defines the grant type - */ - grantType: 'password' | 'clientCredentials' | 'tokenExchange'; - /** - * String or a workflow expression. Contains the client identifier - */ - clientId: string; - /** - * Workflow secret or a workflow expression. Contains the client secret - */ - clientSecret?: string; - /** - * Array containing strings or workflow expressions. Contains the OAuth2 scopes - */ - scopes?: [string, ...string[]]; - /** - * String or a workflow expression. Contains the user name. Used only if grantType is 'resourceOwner' - */ - username?: string; - /** - * String or a workflow expression. Contains the user password. Used only if grantType is 'resourceOwner' - */ - password?: string; - /** - * Array containing strings or workflow expressions. Contains the OAuth2 audiences - */ - audiences?: [string, ...string[]]; - /** - * String or a workflow expression. Contains the subject token - */ - subjectToken?: string; - /** - * String or a workflow expression. Contains the requested subject - */ - requestedSubject?: string; - /** - * String or a workflow expression. Contains the requested issuer - */ - requestedIssuer?: string; - metadata?: /* Metadata information */ Metadata; -} -export interface Onevents { - /** - * References one or more unique event names in the defined workflow events - */ - eventRefs: [string, ...string[]]; - /** - * Specifies how actions are to be performed (in sequence or in parallel) - */ - actionMode?: 'sequential' | 'parallel'; - /** - * Actions to be performed if expression matches - */ - actions?: Action[]; - /** - * Event data filter - */ - eventDataFilter?: Eventdatafilter; -} -/** - * Defines actions be performed. Does not wait for incoming events - */ -export interface Operationstate { - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'operation'; - /** - * State end definition - */ - end?: End; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * Specifies whether actions are performed in sequence or in parallel - */ - actionMode?: 'sequential' | 'parallel'; - /** - * Actions to be performed - */ - actions?: Action[]; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - }; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after all the actions have been performed - */ - transition?: Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; -} -/** - * Consists of a number of states that are executed in parallel - */ -export interface Parallelstate { - /** - * State name - */ - name?: string; - /** - * State type - */ - type?: 'parallel'; - /** - * State end definition - */ - end?: End; - /** - * State data filter - */ - stateDataFilter?: Statedatafilter; - /** - * State specific timeouts - */ - timeouts?: { - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - branchExecTimeout?: /* Branch execution timeout duration (ISO 8601 duration format) */ BranchExecTimeout; - }; - /** - * Branch Definitions - */ - branches?: /* Branch Definition */ Branch[]; - /** - * Option types on how to complete branch execution. - */ - completionType?: 'allOf' | 'atLeast'; - /** - * Used when completionType is set to 'atLeast' to specify the minimum number of branches that must complete before the state will transition. - */ - numCompleted?: number | string; - /** - * States error handling definitions - */ - onErrors?: Error[]; - /** - * Next transition of the workflow after all branches have completed execution - */ - transition?: Transition; - /** - * Unique Name of a workflow state which is responsible for compensation of this state - */ - compensatedBy?: string; - /** - * If true, this state is used to compensate another state. Default is false - */ - usedForCompensation?: boolean; - metadata?: /* Metadata information */ Metadata; -} -/** - * Produce an event and set its data - */ -export interface Produceeventdef { - /** - * References a name of a defined event - */ - eventRef: string; - /** - * If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event. - */ - data?: - | string - | { - [key: string]: any; - }; - /** - * Add additional event extension context attributes - */ - contextAttributes?: { - [name: string]: string; - }; -} -export type Retries = string /* uri */ | [Retrydef, ...Retrydef[]]; -export interface Retrydef { - /** - * Unique retry strategy name - */ - name: string; - /** - * Time delay between retry attempts (ISO 8601 duration format) - */ - delay?: string; - /** - * Maximum time delay between retry attempts (ISO 8601 duration format) - */ - maxDelay?: string; - /** - * Static value by which the delay increases during each attempt (ISO 8601 time format) - */ - increment?: string; - /** - * Numeric value, if specified the delay between retries is multiplied by this value. - */ - multiplier?: number | string; - /** - * Maximum number of retry attempts. - */ - maxAttempts: number | string; - /** - * If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format) - */ - jitter?: number | string; -} -export type Schedule = - | string - | /* Start state schedule definition */ ( - | { - /** - * Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. - */ - interval: string; - cron?: Crondef; - /** - * Timezone name used to evaluate the interval & cron-expression. (default: UTC) - */ - timezone?: string; - } - | { - /** - * Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. - */ - interval?: string; - cron: Crondef; - /** - * Timezone name used to evaluate the interval & cron-expression. (default: UTC) - */ - timezone?: string; - } - ); -export type Secrets = string /* uri */ | [string, ...string[]]; -export type Sleep = - | { - /** - * Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - before: string; - /** - * Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - after?: string; - } - | { - /** - * Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - before?: string; - /** - * Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - after: string; - } - | { - /** - * Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - before: string; - /** - * Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. - */ - after: string; - }; -/** - * Causes the workflow execution to sleep for a specified duration - */ -export type Sleepstate /* Causes the workflow execution to sleep for a specified duration */ = - | { - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'sleep'; - end: End; - /** - * Duration (ISO 8601 duration format) to sleep - */ - duration: string; - transition?: Transition; - metadata?: /* Metadata information */ Metadata; - } - | { - /** - * State name - */ - name: string; - /** - * State type - */ - type: 'sleep'; - end?: End; - /** - * Duration (ISO 8601 duration format) to sleep - */ - duration: string; - transition: Transition; - metadata?: /* Metadata information */ Metadata; - }; -export type Startdef = - | string - | { - /** - * Name of the starting workflow state - */ - stateName?: string; - /** - * Define the time/repeating intervals or cron at which workflow instances should be automatically started. - */ - schedule: Schedule; - }; -/** - * Workflow state execution timeout duration (ISO 8601 duration format) - */ -export type StateExecTimeout = string; -export interface Statedatafilter { - /** - * Workflow expression to filter the state data input - */ - input?: string; - /** - * Workflow expression that filters the state data output - */ - output?: string; -} -export type Subflowref = - | string - | { - /** - * Unique id of the sub-workflow to be invoked - */ - workflowId: string; - /** - * Version of the sub-workflow to be invoked - */ - version?: string; // ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - /** - * If invoke is 'async', specifies how subflow execution should behave when parent workflow completes. Default is 'terminate' - */ - onParentComplete?: 'continue' | 'terminate'; - /** - * Specifies if the subflow should be invoked sync or async - */ - invoke?: 'sync' | 'async'; - }; -export type Switchstate /* Permits transitions to other states based on data conditions */ = - | Databasedswitchstate - | /* Permits transitions to other states based on events */ Eventbasedswitchstate; -export type Timeouts = - | string /* uri */ - | { - workflowExecTimeout?: WorkflowExecTimeout; - stateExecTimeout?: /* Workflow state execution timeout duration (ISO 8601 duration format) */ StateExecTimeout; - actionExecTimeout?: /* Action execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout; - branchExecTimeout?: /* Branch execution timeout duration (ISO 8601 duration format) */ BranchExecTimeout; - eventTimeout?: /* Timeout duration to wait for consuming defined events (ISO 8601 duration format) */ EventTimeout; - }; -export type Transition = - | string - | { - /** - * Name of state to transition to - */ - nextState: string; - /** - * Array of events to be produced before the transition happens - */ - produceEvents?: /* Produce an event and set its data */ Produceeventdef[]; - /** - * If set to true, triggers workflow compensation when before this transition is taken. Default is false - */ - compensate?: boolean; - }; -/** - * Switch state data based condition - */ -export interface Transitiondatacondition { - /** - * Data condition name - */ - name?: string; - /** - * Workflow expression evaluated against state data. Must evaluate to true or false - */ - condition: string; - /** - * Workflow transition if condition is evaluated to true - */ - transition: Transition; - metadata?: /* Metadata information */ Metadata; -} -/** - * Switch state data event condition - */ -export interface Transitioneventcondition { - /** - * Event condition name - */ - name?: string; - /** - * References an unique event name in the defined workflow events - */ - eventRef: string; - /** - * Next transition of the workflow if there is valid matches - */ - transition: Transition; - /** - * Event data filter definition - */ - eventDataFilter?: Eventdatafilter; - metadata?: /* Metadata information */ Metadata; -} -export type WorkflowExecTimeout = - | string - | { - /** - * Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited' - */ - duration: string; - /** - * If `false`, workflow instance is allowed to finish current execution. If `true`, current workflow execution is abrupted. - */ - interrupt?: boolean; - /** - * Name of a workflow state to be executed before workflow instance is terminated - */ - runBefore?: string; - }; diff --git a/src/lib/schema/workflow.json b/src/lib/schema/workflow.json index dae1bd5..8650049 100644 --- a/src/lib/schema/workflow.json +++ b/src/lib/schema/workflow.json @@ -1,1904 +1,1594 @@ { - "$id": "https://serverlessworkflow.io/schemas/0.8/workflow.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - workflow schema", + "$id": "https://serverlessworkflow.io/schemas/1.0.0-alpha2/workflow.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "description": "Serverless Workflow DSL - Workflow Schema", "type": "object", "properties": { - "id": { - "type": "string", - "description": "Workflow unique identifier", - "minLength": 1 - }, - "key": { - "type": "string", - "description": "Domain-specific workflow identifier", - "minLength": 1 - }, - "name": { - "type": "string", - "description": "Workflow name", - "minLength": 1 - }, - "description": { - "type": "string", - "description": "Workflow description" - }, - "version": { - "type": "string", - "description": "Workflow version", - "minLength": 1, - "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" - }, - "annotations": { - "type": "array", - "description": "List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "dataInputSchema": { - "oneOf": [ - { + "document": { + "type": "object", + "properties": { + "dsl": { "type": "string", - "description": "URI of the JSON Schema used to validate the workflow data input", - "minLength": 1 + "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", + "description": "The version of the DSL used by the workflow." }, - { - "type": "object", - "description": "Workflow data input schema definition", - "properties": { - "schema": { - "oneof": [ - { - "type": "string", - "description": "URI of the JSON Schema used to validate the workflow data input", - "minLength": 1 - }, - { - "type": "object", - "description": "The JSON Schema object used to validate the workflow data input", - "$schema": "http://json-schema.org/draft-07/schema#" - } - ] - }, - "failOnValidationErrors": { - "type": "boolean", - "default": true, - "description": "Determines if workflow execution should continue if there are validation errors" - } - }, - "additionalProperties": false, - "required": [ - "schema" - ] - } - ] - }, - "secrets": { - "$ref": "secrets.json#/secrets" - }, - "constants": { - "oneOf": [ - { + "namespace": { "type": "string", - "format": "uri", - "description": "URI to a resource containing constants data (json or yaml)" + "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$", + "description": "The workflow's namespace." }, - { + "name": { + "type": "string", + "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$", + "description": "The workflow's name." + }, + "version": { + "type": "string", + "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", + "description": "The workflow's semantic version." + }, + "title": { + "type": "string", + "description": "The workflow's title." + }, + "summary": { + "type": "string", + "description": "The workflow's Markdown summary." + }, + "tags": { "type": "object", - "description": "Workflow constants data (object type)" + "description": "A key/value mapping of the workflow's tags, if any.", + "additionalProperties": true } - ] - }, - "start": { - "$ref": "#/definitions/startdef" - }, - "specVersion": { - "type": "string", - "description": "Serverless Workflow schema version", - "minLength": 1 - }, - "expressionLang": { - "type": "string", - "description": "Identifies the expression language used for workflow expressions. Default is 'jq'", - "default": "jq", - "minLength": 1 - }, - "timeouts": { - "$ref": "timeouts.json#/timeouts" - }, - "errors": { - "$ref": "errors.json#/errors" - }, - "keepActive": { - "type": "boolean", - "default": false, - "description": "If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'workflowExecTimeout'" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - }, - "events": { - "$ref": "events.json#/events" - }, - "functions": { - "$ref": "functions.json#/functions" - }, - "autoRetries": { - "type": "boolean", - "default": false, - "description": "If set to true, actions should automatically be retried on unchecked errors. Default is false" - }, - "retries": { - "$ref": "retries.json#/retries" - }, - "auth": { - "$ref": "auth.json#/auth" + }, + "required": [ + "dsl", + "namespace", + "name", + "version" + ], + "description": "Documents the workflow" }, - "extensions": { - "$ref": "workflowextensions.json#/extensions" + "input": { + "$ref": "#/$defs/input", + "description": "Configures the workflow's input." }, - "states": { - "type": "array", - "description": "State definitions", - "items": { - "anyOf": [ - { - "title": "Sleep State", - "$ref": "#/definitions/sleepstate" - }, - { - "title": "Event State", - "$ref": "#/definitions/eventstate" + "use": { + "type": "object", + "properties": { + "authentications": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/authenticationPolicy" }, - { - "title": "Operation State", - "$ref": "#/definitions/operationstate" + "description": "The workflow's reusable authentication policies." + }, + "errors": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/error" }, - { - "title": "Parallel State", - "$ref": "#/definitions/parallelstate" + "description": "The workflow's reusable errors." + }, + "extensions": { + "type": "array", + "items": { + "type": "object", + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": { + "$ref": "#/$defs/extension" + } }, - { - "title": "Switch State", - "$ref": "#/definitions/switchstate" + "description": "The workflow's extensions." + }, + "functions": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/task" }, - { - "title": "Inject State", - "$ref": "#/definitions/injectstate" + "description": "The workflow's reusable functions." + }, + "retries": { + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/retryPolicy" }, - { - "title": "ForEach State", - "$ref": "#/definitions/foreachstate" + "description": "The workflow's reusable retry policies." + }, + "secrets": { + "type": "array", + "items": { + "type": "string" }, - { - "title": "Callback State", - "$ref": "#/definitions/callbackstate" - } - ] + "description": "The workflow's secrets." + } }, - "additionalItems": false, - "minItems": 1 - } - }, - "oneOf": [ - { - "required": [ - "id", - "specVersion", - "states" - ] + "description": "Defines the workflow's reusable components." }, - { - "required": [ - "key", - "specVersion", - "states" - ] - } - ], - "definitions": { - "sleep": { + "do": { + "description": "Defines the task(s) the workflow must perform", + "$ref": "#/$defs/taskList" + }, + "timeout": { + "$ref": "#/$defs/timeout", + "description": "The workflow's timeout configuration, if any." + }, + "output": { + "$ref": "#/$defs/output", + "description": "Configures the workflow's output." + }, + "schedule": { "type": "object", "properties": { - "before": { + "every": { + "$ref": "#/$defs/duration", + "description": "Specifies the duration of the interval at which the workflow should be executed." + }, + "cron": { "type": "string", - "description": "Amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined." + "description": "Specifies the schedule using a cron expression, e.g., '0 0 * * *' for daily at midnight.\"" }, "after": { - "type": "string", - "description": "Amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined." + "$ref": "#/$defs/duration", + "description": "Specifies a delay duration that the workflow must wait before starting again after it completes." + }, + "on": { + "$ref": "#/$defs/eventConsumptionStrategy", + "description": "Specifies the events that trigger the workflow execution." } }, - "anyOf": [ + "description": "Schedules the workflow" + } + }, + "$defs": { + "taskList": { + "type": "array", + "items": { + "type": "object", + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": { + "$ref": "#/$defs/task" + } + } + }, + "taskBase": { + "type": "object", + "properties": { + "if": { + "type": "string", + "description": "A runtime expression, if any, used to determine whether or not the task should be run." + }, + "input": { + "$ref": "#/$defs/input", + "description": "Configure the task's input." + }, + "output": { + "$ref": "#/$defs/output", + "description": "Configure the task's output." + }, + "export": { + "$ref": "#/$defs/export", + "description": "Export task output to context." + }, + "timeout": { + "$ref": "#/$defs/timeout", + "description": "The task's timeout configuration, if any." + }, + "then": { + "$ref": "#/$defs/flowDirective", + "description": "The flow directive to be performed upon completion of the task." + } + } + }, + "task": { + "unevaluatedProperties": false, + "oneOf": [ { - "required": [ - "before" - ] + "$ref": "#/$defs/callTask" }, { - "required": [ - "after" - ] + "$ref": "#/$defs/doTask" }, { - "required": [ - "before", - "after" - ] + "$ref": "#/$defs/forkTask" + }, + { + "$ref": "#/$defs/emitTask" + }, + { + "$ref": "#/$defs/forTask" + }, + { + "$ref": "#/$defs/listenTask" + }, + { + "$ref": "#/$defs/raiseTask" + }, + { + "$ref": "#/$defs/runTask" + }, + { + "$ref": "#/$defs/setTask" + }, + { + "$ref": "#/$defs/switchTask" + }, + { + "$ref": "#/$defs/tryTask" + }, + { + "$ref": "#/$defs/waitTask" } ] }, - "crondef": { + "callTask": { "oneOf": [ { - "type": "string", - "description": "Cron expression defining when workflow instances should be created (automatically)", - "minLength": 1 + "title": "CallAsyncAPI", + "$ref": "#/$defs/taskBase", + "type": "object", + "required": [ + "call", + "with" + ], + "unevaluatedProperties": false, + "properties": { + "call": { + "type": "string", + "const": "asyncapi" + }, + "with": { + "type": "object", + "properties": { + "document": { + "$ref": "#/$defs/externalResource", + "description": "The document that defines the AsyncAPI operation to call." + }, + "operationRef": { + "type": "string", + "description": "A reference to the AsyncAPI operation to call." + }, + "server": { + "type": "string", + "description": "A a reference to the server to call the specified AsyncAPI operation on. If not set, default to the first server matching the operation's channel." + }, + "message": { + "type": "string", + "description": "The name of the message to use. If not set, defaults to the first message defined by the operation." + }, + "binding": { + "type": "string", + "description": "The name of the binding to use. If not set, defaults to the first binding defined by the operation." + }, + "payload": { + "type": "object", + "description": "The payload to call the AsyncAPI operation with, if any." + }, + "authentication": { + "description": "The authentication policy, if any, to use when calling the AsyncAPI operation.", + "oneOf": [ + { + "$ref": "#/$defs/authenticationPolicy" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "document", + "operationRef" + ], + "additionalProperties": false, + "description": "Defines the AsyncAPI call to perform." + } + } }, { + "title": "CallGRPC", + "$ref": "#/$defs/taskBase", "type": "object", + "unevaluatedProperties": false, + "required": [ + "call", + "with" + ], "properties": { - "expression": { + "call": { "type": "string", - "description": "Repeating interval (cron expression) describing when the workflow instance should be created", - "minLength": 1 + "const": "grpc" }, - "validUntil": { - "type": "string", - "description": "Specific date and time (ISO 8601 format) when the cron expression invocation is no longer valid" + "with": { + "type": "object", + "properties": { + "proto": { + "$ref": "#/$defs/externalResource", + "description": "The proto resource that describes the GRPC service to call." + }, + "service": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the GRPC service to call." + }, + "host": { + "type": "string", + "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$", + "description": "The hostname of the GRPC service to call." + }, + "port": { + "type": "integer", + "min": 0, + "max": 65535, + "description": "The port number of the GRPC service to call." + }, + "authentication": { + "description": "The endpoint's authentication policy, if any.", + "oneOf": [ + { + "$ref": "#/$defs/authenticationPolicy" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "name", + "host" + ] + }, + "method": { + "type": "string", + "description": "The name of the method to call on the defined GRPC service." + }, + "arguments": { + "type": "object", + "additionalProperties": true, + "description": "The arguments, if any, to call the method with." + } + }, + "required": [ + "proto", + "service", + "method" + ], + "additionalProperties": false, + "description": "Defines the GRPC call to perform." } - }, - "additionalProperties": false, - "required": [ - "expression" - ] - } - ] - }, - "continueasdef": { - "oneOf": [ - { - "type": "string", - "description": "Unique id of the workflow to be continue execution as. Entire state data is passed as data input to next execution", - "minLength": 1 + } }, { + "title": "CallHTTP", + "$ref": "#/$defs/taskBase", "type": "object", + "unevaluatedProperties": false, + "required": [ + "call", + "with" + ], "properties": { - "workflowId": { + "call": { "type": "string", - "description": "Unique id of the workflow to continue execution as" + "const": "http" }, - "version": { + "with": { + "type": "object", + "properties": { + "method": { + "type": "string", + "description": "The HTTP method of the HTTP request to perform." + }, + "endpoint": { + "description": "The HTTP endpoint to send the request to.", + "oneOf": [ + { + "$ref": "#/$defs/endpoint" + }, + { + "type": "string", + "format": "uri-template" + } + ] + }, + "headers": { + "type": "object", + "description": "A name/value mapping of the headers, if any, of the HTTP request to perform." + }, + "body": { + "description": "The body, if any, of the HTTP request to perform." + }, + "output": { + "type": "string", + "enum": [ + "raw", + "content", + "response" + ], + "description": "The http call output format. Defaults to 'content'." + } + }, + "required": [ + "method", + "endpoint" + ], + "additionalProperties": false, + "description": "Defines the HTTP call to perform." + } + } + }, + { + "title": "CallOpenAPI", + "$ref": "#/$defs/taskBase", + "type": "object", + "unevaluatedProperties": false, + "required": [ + "call", + "with" + ], + "properties": { + "call": { "type": "string", - "description": "Version of the workflow to continue execution as", - "minLength": 1, - "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" + "const": "openapi" }, - "data": { - "type": [ - "string", - "object" + "with": { + "type": "object", + "properties": { + "document": { + "$ref": "#/$defs/externalResource", + "description": "The document that defines the OpenAPI operation to call." + }, + "operationId": { + "type": "string", + "description": "The id of the OpenAPI operation to call." + }, + "parameters": { + "type": "object", + "additionalProperties": true, + "description": "A name/value mapping of the parameters of the OpenAPI operation to call." + }, + "authentication": { + "description": "The authentication policy, if any, to use when calling the OpenAPI operation.", + "oneOf": [ + { + "$ref": "#/$defs/authenticationPolicy" + }, + { + "type": "string" + } + ] + }, + "output": { + "type": "string", + "enum": [ + "raw", + "content", + "response" + ], + "description": "The http call output format. Defaults to 'content'." + } + }, + "required": [ + "document", + "operationId" ], - "description": "If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution" - }, - "workflowExecTimeout": { - "$ref": "timeouts.json#/definitions/workflowExecTimeout", - "description": "Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow" + "additionalProperties": false, + "description": "Defines the OpenAPI call to perform." } - }, - "required": [ - "workflowId" - ] - } - ] - }, - "transition": { - "oneOf": [ - { - "type": "string", - "description": "Name of state to transition to", - "minLength": 1 + } }, { + "title": "CallFunction", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "Function Reference", + "unevaluatedProperties": false, + "required": [ + "call" + ], "properties": { - "nextState": { + "call": { "type": "string", - "description": "Name of state to transition to", - "minLength": 1 - }, - "produceEvents": { - "type": "array", - "description": "Array of events to be produced before the transition happens", - "items": { - "type": "object", - "$ref": "#/definitions/produceeventdef" + "not": { + "enum": [ + "asyncapi", + "grpc", + "http", + "openapi" + ] }, - "additionalItems": false + "description": "The name of the function to call." }, - "compensate": { - "type": "boolean", - "default": false, - "description": "If set to true, triggers workflow compensation when before this transition is taken. Default is false" + "with": { + "type": "object", + "additionalProperties": true, + "description": "A name/value mapping of the parameters, if any, to call the function with." } - }, - "additionalProperties": false, - "required": [ - "nextState" - ] + } } ] }, - "error": { + "forkTask": { + "description": "Allows workflows to execute multiple tasks concurrently and optionally race them against each other, with a single possible winner, which sets the task's output.", + "$ref": "#/$defs/taskBase", "type": "object", + "unevaluatedProperties": false, + "required": [ + "fork" + ], "properties": { - "errorRef": { - "type": "string", - "description": "Reference to a unique workflow error definition. Used of errorRefs is not used", - "minLength": 1 - }, - "errorRefs": { - "type": "array", - "description": "References one or more workflow error definitions. Used if errorRef is not used", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "transition": { - "description": "Transition to next state to handle the error.", - "$ref": "#/definitions/transition" - }, - "end": { - "description": "End workflow execution in case of this error.", - "$ref": "#/definitions/end" - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "errorRef", - "transition" - ] - }, - { - "required": [ - "errorRef", - "end" - ] - }, - { - "required": [ - "errorRefs", - "transition" - ] - }, - { + "fork": { + "type": "object", "required": [ - "errorRefs", - "end" - ] + "branches" + ], + "properties": { + "branches": { + "$ref": "#/$defs/taskList" + }, + "compete": { + "description": "Indicates whether or not the concurrent tasks are racing against each other, with a single possible winner, which sets the composite task's output.", + "type": "boolean", + "default": false + } + } } - ] + } }, - "onevents": { + "doTask": { + "description": "Allows to execute a list of tasks in sequence", + "$ref": "#/$defs/taskBase", "type": "object", + "unevaluatedProperties": false, + "required": [ + "do" + ], "properties": { - "eventRefs": { - "type": "array", - "description": "References one or more unique event names in the defined workflow events", - "minItems": 1, - "items": { - "type": "string" - }, - "uniqueItems": true, - "additionalItems": false - }, - "actionMode": { - "type": "string", - "enum": [ - "sequential", - "parallel" - ], - "description": "Specifies how actions are to be performed (in sequence or in parallel)", - "default": "sequential" - }, - "actions": { - "type": "array", - "description": "Actions to be performed if expression matches", - "items": { - "type": "object", - "$ref": "#/definitions/action" - }, - "additionalItems": false - }, - "eventDataFilter": { - "description": "Event data filter", - "$ref": "#/definitions/eventdatafilter" + "do": { + "$ref": "#/$defs/taskList" } - }, - "additionalProperties": false, - "required": [ - "eventRefs" - ] + } }, - "action": { + "emitTask": { + "description": "Allows workflows to publish events to event brokers or messaging systems, facilitating communication and coordination between different components and services.", + "$ref": "#/$defs/taskBase", "type": "object", + "required": [ + "emit" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "Unique action definition name" - }, - "functionRef": { - "description": "References a function to be invoked", - "$ref": "#/definitions/functionref" - }, - "eventRef": { - "description": "References a `produce` and `consume` reusable event definitions", - "$ref": "#/definitions/eventref" - }, - "subFlowRef": { - "description": "References a sub-workflow to invoke", - "$ref": "#/definitions/subflowref" - }, - "sleep": { - "description": "Defines time periods workflow execution should sleep before / after function execution", - "$ref": "#/definitions/sleep" - }, - "retryRef": { - "type": "string", - "description": "References a defined workflow retry definition. If not defined the default retry policy is assumed" - }, - "nonRetryableErrors": { - "type": "array", - "description": "List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true`", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "retryableErrors": { - "type": "array", - "description": "List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false`", - "minItems": 1, - "items": { - "type": "string" - }, - "additionalItems": false - }, - "actionDataFilter": { - "description": "Action data filter", - "$ref": "#/definitions/actiondatafilter" - }, - "condition": { - "description": "Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded", - "type": "string", - "minLength": 1 - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "functionRef" - ] - }, - { - "required": [ - "eventRef" - ] - }, - { - "required": [ - "subFlowRef" - ] - } - ] - }, - "functionref": { - "oneOf": [ - { - "type": "string", - "description": "Name of the referenced function", - "minLength": 1 - }, - { + "emit": { "type": "object", - "description": "Function Reference", "properties": { - "refName": { - "type": "string", - "description": "Name of the referenced function" - }, - "arguments": { + "event": { "type": "object", - "description": "Function arguments/inputs" - }, - "selectionSet": { - "type": "string", - "description": "Only used if function type is 'graphql'. A string containing a valid GraphQL selection set" - }, - "invoke": { - "type": "string", - "enum": [ - "sync", - "async" + "properties": { + "id": { + "type": "string", + "description": "The event's unique identifier" + }, + "source": { + "type": "string", + "format": "uri", + "description": "Identifies the context in which an event happened" + }, + "type": { + "type": "string", + "description": "This attribute contains a value describing the type of event related to the originating occurrence." + }, + "time": { + "type": "string", + "format": "date-time" + }, + "subject": { + "type": "string" + }, + "datacontenttype": { + "type": "string", + "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format." + }, + "dataschema": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "source", + "type" ], - "description": "Specifies if the function should be invoked sync or async", - "default": "sync" + "additionalProperties": true } }, - "additionalProperties": false, "required": [ - "refName" + "event" ] } - ] + } }, - "eventref": { + "forTask": { + "description": "Allows workflows to iterate over a collection of items, executing a defined set of subtasks for each item in the collection. This task type is instrumental in handling scenarios such as batch processing, data transformation, and repetitive operations across datasets.", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "Event References", - "properties": { - "produceEventRef": { - "type": "string", - "description": "Reference to the unique name of a 'produced' event definition" - }, - "consumeEventRef": { - "type": "string", - "description": "Reference to the unique name of a 'consumed' event definition" - }, - "consumeEventTimeout": { - "type": "string", - "description": "Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it should default to the actionExecutionTimeout" - }, - "data": { - "type": [ - "string", - "object" - ], - "description": "If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by 'produceEventRef'. If object type, a custom object to become the data (payload) of the event referenced by 'produceEventRef'." - }, - "contextAttributes": { - "type": "object", - "description": "Add additional extension context attributes to the produced event", - "additionalProperties": { - "type": "string" - } - } - }, - "additionalProperties": false, "required": [ - "produceEventRef" - ] - }, - "subflowref": { - "oneOf": [ - { - "type": "string", - "description": "Unique id of the sub-workflow to be invoked", - "minLength": 1 - }, - { + "for", + "do" + ], + "unevaluatedProperties": false, + "properties": { + "for": { "type": "object", - "description": "Specifies a sub-workflow to be invoked", "properties": { - "workflowId": { - "type": "string", - "description": "Unique id of the sub-workflow to be invoked" - }, - "version": { + "each": { "type": "string", - "description": "Version of the sub-workflow to be invoked", - "minLength": 1, - "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" + "description": "The name of the variable used to store the current item being enumerated.", + "default": "item" }, - "onParentComplete": { + "in": { "type": "string", - "enum": [ - "continue", - "terminate" - ], - "description": "If invoke is 'async', specifies how subflow execution should behave when parent workflow completes. Default is 'terminate'", - "default": "terminate" + "description": "A runtime expression used to get the collection to enumerate." }, - "invoke": { + "at": { "type": "string", - "enum": [ - "sync", - "async" - ], - "description": "Specifies if the subflow should be invoked sync or async", - "default": "sync" + "description": "The name of the variable used to store the index of the current item being enumerated.", + "default": "index" } }, "required": [ - "workflowId" + "in" ] + }, + "while": { + "type": "string", + "description": "A runtime expression that represents the condition, if any, that must be met for the iteration to continue." + }, + "do": { + "$ref": "#/$defs/taskList" } - ] + } }, - "branch": { + "listenTask": { + "description": "Provides a mechanism for workflows to await and react to external events, enabling event-driven behavior within workflow systems.", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "Branch Definition", + "required": [ + "listen" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "Branch name" - }, - "timeouts": { + "listen": { "type": "object", - "description": "State specific timeouts", "properties": { - "actionExecTimeout": { - "$ref": "timeouts.json#/definitions/actionExecTimeout" - }, - "branchExecTimeout": { - "$ref": "timeouts.json#/definitions/branchExecTimeout" + "to": { + "$ref": "#/$defs/eventConsumptionStrategy", + "description": "Defines the event(s) to listen to." } }, - "required": [] - }, - "actions": { - "type": "array", - "description": "Actions to be executed in this branch", - "items": { - "type": "object", - "$ref": "#/definitions/action" - }, - "additionalItems": false - } - }, - "additionalProperties": false, - "required": [ - "name", - "actions" - ] - }, - "sleepstate": { - "type": "object", - "description": "Causes the workflow execution to sleep for a specified duration", - "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "sleep", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "duration": { - "type": "string", - "description": "Duration (ISO 8601 duration format) to sleep" - }, - "transition": { - "description": "Next transition of the workflow after the workflow sleep", - "$ref": "#/definitions/transition" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "name", - "type", - "duration", - "end" - ] - }, - { "required": [ - "name", - "type", - "duration", - "transition" + "to" ] } - ] + } }, - "eventstate": { + "raiseTask": { + "description": "Intentionally triggers and propagates errors.", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "This state is used to wait for events from event sources, then consumes them and invoke one or more actions to run in sequence or parallel", + "required": [ + "raise" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "event", - "description": "State type" - }, - "exclusive": { - "type": "boolean", - "default": true, - "description": "If true consuming one of the defined events causes its associated actions to be performed. If false all of the defined events must be consumed in order for actions to be performed" - }, - "onEvents": { - "type": "array", - "description": "Define the events to be consumed and optional actions to be performed", - "items": { - "type": "object", - "$ref": "#/definitions/onevents" - }, - "additionalItems": false - }, - "timeouts": { + "raise": { "type": "object", - "description": "State specific timeouts", "properties": { - "stateExecTimeout": { - "$ref": "timeouts.json#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "timeouts.json#/definitions/actionExecTimeout" - }, - "eventTimeout": { - "$ref": "timeouts.json#/definitions/eventTimeout" + "error": { + "$ref": "#/$defs/error", + "description": "Defines the error to raise." } }, - "required": [] - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after all the actions have been performed", - "$ref": "#/definitions/transition" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "name", - "type", - "onEvents", - "end" - ] - }, - { "required": [ - "name", - "type", - "onEvents", - "transition" + "error" ] } - ] + } }, - "operationstate": { + "runTask": { + "description": "Provides the capability to execute external containers, shell commands, scripts, or workflows.", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "Defines actions be performed. Does not wait for incoming events", + "required": [ + "run" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "operation", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "actionMode": { - "type": "string", - "enum": [ - "sequential", - "parallel" - ], - "description": "Specifies whether actions are performed in sequence or in parallel", - "default": "sequential" - }, - "actions": { - "type": "array", - "description": "Actions to be performed", - "items": { - "type": "object", - "$ref": "#/definitions/action" - } - }, - "timeouts": { + "run": { "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "timeouts.json#/definitions/stateExecTimeout" + "oneOf": [ + { + "properties": { + "container": { + "type": "object", + "properties": { + "image": { + "type": "string", + "description": "The name of the container image to run." + }, + "command": { + "type": "string", + "description": "The command, if any, to execute on the container" + }, + "ports": { + "type": "object", + "description": "The container's port mappings, if any." + }, + "volumes": { + "type": "object", + "description": "The container's volume mappings, if any." + }, + "environment": { + "type": "object", + "description": "A key/value mapping of the environment variables, if any, to use when running the configured process." + } + }, + "required": [ + "image" + ] + } + }, + "required": [ + "container" + ], + "description": "Enables the execution of external processes encapsulated within a containerized environment." + }, + { + "properties": { + "script": { + "type": "object", + "properties": { + "language": { + "type": "string", + "description": "The language of the script to run." + }, + "environment": { + "type": "object", + "additionalProperties": true, + "description": "A key/value mapping of the environment variables, if any, to use when running the configured process." + } + }, + "oneOf": [ + { + "properties": { + "code": { + "type": "string" + } + }, + "required": [ + "code" + ], + "description": "The script's code." + }, + { + "properties": { + "source": { + "$ref": "#/$defs/externalResource" + } + }, + "description": "The script's resource.", + "required": [ + "source" + ] + } + ], + "required": [ + "language" + ] + } + }, + "required": [ + "script" + ], + "description": "Enables the execution of custom scripts or code within a workflow, empowering workflows to perform specialized logic, data processing, or integration tasks by executing user-defined scripts written in various programming languages." }, - "actionExecTimeout": { - "$ref": "timeouts.json#/definitions/actionExecTimeout" + { + "properties": { + "shell": { + "type": "object", + "properties": { + "command": { + "type": "string", + "description": "The shell command to run." + }, + "arguments": { + "type": "object", + "additionalProperties": true, + "description": "A list of the arguments of the shell command to run." + }, + "environment": { + "type": "object", + "additionalProperties": true, + "description": "A key/value mapping of the environment variables, if any, to use when running the configured process." + } + }, + "required": [ + "command" + ] + } + }, + "required": [ + "shell" + ], + "description": "Enables the execution of shell commands within a workflow, enabling workflows to interact with the underlying operating system and perform system-level operations, such as file manipulation, environment configuration, or system administration tasks." + }, + { + "properties": { + "workflow": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The namespace the workflow to run belongs to." + }, + "name": { + "type": "string", + "description": "The name of the workflow to run." + }, + "version": { + "type": "string", + "default": "latest", + "description": "The version of the workflow to run. Defaults to latest" + }, + "input": { + "type": "object", + "additionalProperties": true, + "description": "The data, if any, to pass as input to the workflow to execute. The value should be validated against the target workflow's input schema, if specified." + } + }, + "required": [ + "namespace", + "name", + "version" + ] + } + }, + "required": [ + "workflow" + ], + "description": "Enables the invocation and execution of nested workflows within a parent workflow, facilitating modularization, reusability, and abstraction of complex logic or business processes by encapsulating them into standalone workflow units." } - }, - "required": [] - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after all the actions have been performed", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" + ] } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "actions" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "actions", - "end" - ] - }, - { - "required": [ - "name", - "type", - "actions", - "transition" - ] - } - ] } }, - "parallelstate": { + "setTask": { + "description": "A task used to set data", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "Consists of a number of states that are executed in parallel", + "required": [ + "set" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "parallel", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "timeouts": { + "set": { "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "timeouts.json#/definitions/stateExecTimeout" - }, - "branchExecTimeout": { - "$ref": "timeouts.json#/definitions/branchExecTimeout" - } - }, - "required": [] - }, - "branches": { - "type": "array", - "description": "Branch Definitions", - "items": { - "type": "object", - "$ref": "#/definitions/branch" - }, - "additionalItems": false - }, - "completionType": { - "type": "string", - "enum": [ - "allOf", - "atLeast" - ], - "description": "Option types on how to complete branch execution.", - "default": "allOf" - }, - "numCompleted": { - "type": [ - "number", - "string" - ], - "minimum": 0, - "minLength": 0, - "description": "Used when completionType is set to 'atLeast' to specify the minimum number of branches that must complete before the state will transition." - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after all branches have completed execution", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" + "minProperties": 1, + "additionalProperties": true, + "description": "The data to set" } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "branches" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "branches", - "end" - ] - }, - { - "required": [ - "name", - "type", - "branches", - "transition" - ] - } - ] } }, - "switchstate": { - "oneOf": [ - { - "$ref": "#/definitions/databasedswitchstate" - }, - { - "$ref": "#/definitions/eventbasedswitchstate" - } - ] - }, - "eventbasedswitchstate": { + "switchTask": { + "description": "Enables conditional branching within workflows, allowing them to dynamically select different paths based on specified conditions or criteria", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "Permits transitions to other states based on events", + "required": [ + "switch" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "switch", - "description": "State type" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "timeouts.json#/definitions/stateExecTimeout" - }, - "eventTimeout": { - "$ref": "timeouts.json#/definitions/eventTimeout" - } - }, - "required": [] - }, - "eventConditions": { - "type": "array", - "description": "Defines conditions evaluated against events", - "items": { - "type": "object", - "$ref": "#/definitions/eventcondition" - }, - "additionalItems": false - }, - "onErrors": { + "switch": { "type": "array", - "description": "States error handling definitions", + "minItems": 1, "items": { "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "defaultCondition": { - "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition", - "$ref": "#/definitions/defaultconditiondef" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The case's name." + }, + "when": { + "type": "string", + "description": "A runtime expression used to determine whether or not the case matches." + }, + "then": { + "$ref": "#/$defs/flowDirective", + "description": "The flow directive to execute when the case matches." + } + } + } + } } - }, - "additionalProperties": false, - "required": [ - "name", - "type", - "eventConditions", - "defaultCondition" - ] + } }, - "databasedswitchstate": { + "tryTask": { + "description": "Serves as a mechanism within workflows to handle errors gracefully, potentially retrying failed tasks before proceeding with alternate ones.", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "Permits transitions to other states based on data conditions", + "required": [ + "try", + "catch" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "switch", - "description": "State type" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" + "try": { + "description": "The task(s) to perform.", + "$ref": "#/$defs/taskList" }, - "timeouts": { + "catch": { "type": "object", - "description": "State specific timeouts", "properties": { - "stateExecTimeout": { - "$ref": "timeouts.json#/definitions/stateExecTimeout" + "errors": { + "type": "object" + }, + "as": { + "type": "string", + "description": "The name of the runtime expression variable to save the error as. Defaults to 'error'." + }, + "when": { + "type": "string", + "description": "A runtime expression used to determine whether or not to catch the filtered error" + }, + "exceptWhen": { + "type": "string", + "description": "A runtime expression used to determine whether or not to catch the filtered error" + }, + "retry": { + "$ref": "#/$defs/retryPolicy", + "description": "The retry policy to use, if any, when catching errors." + }, + "do": { + "description": "The definition of the task(s) to run when catching an error.", + "$ref": "#/$defs/taskList" } - }, - "required": [] - }, - "dataConditions": { - "type": "array", - "description": "Defines conditions evaluated against state data", - "items": { - "type": "object", - "$ref": "#/definitions/datacondition" - }, - "additionalItems": false - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "defaultCondition": { - "description": "Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition", - "$ref": "#/definitions/defaultconditiondef" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" + } } - }, - "additionalProperties": false, - "required": [ - "name", - "type", - "dataConditions", - "defaultCondition" - ] + } }, - "defaultconditiondef": { + "waitTask": { + "description": "Allows workflows to pause or delay their execution for a specified period of time.", + "$ref": "#/$defs/taskBase", "type": "object", - "description": "DefaultCondition definition. Can be either a transition or end definition", + "required": [ + "wait" + ], + "unevaluatedProperties": false, "properties": { - "name": { - "type": "string", - "description": "The optional name of the default condition, used solely for display purposes" - }, - "transition": { - "$ref": "#/definitions/transition" - }, - "end": { - "$ref": "#/definitions/end" + "wait": { + "description": "The amount of time to wait.", + "$ref": "#/$defs/duration" } - }, + } + }, + "flowDirective": { "additionalProperties": false, - "oneOf": [ - { - "required": [ - "transition" - ] - }, + "anyOf": [ { - "required": [ + "type": "string", + "enum": [ + "continue", + "exit", "end" - ] - } - ] - }, - "eventcondition": { - "oneOf": [ - { - "$ref": "#/definitions/transitioneventcondition" + ], + "default": "continue" }, { - "$ref": "#/definitions/endeventcondition" + "type": "string" } ] }, - "transitioneventcondition": { + "authenticationPolicy": { "type": "object", - "description": "Switch state data event condition", - "properties": { - "name": { - "type": "string", - "description": "Event condition name" - }, - "eventRef": { - "type": "string", - "description": "References an unique event name in the defined workflow events" - }, - "transition": { - "description": "Next transition of the workflow if there is valid matches", - "$ref": "#/definitions/transition" - }, - "eventDataFilter": { - "description": "Event data filter definition", - "$ref": "#/definitions/eventdatafilter" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "eventRef", - "transition" - ] - }, - "endeventcondition": { - "type": "object", - "description": "Switch state data event condition", - "properties": { - "name": { - "type": "string", - "description": "Event condition name" - }, - "eventRef": { - "type": "string", - "description": "References an unique event name in the defined workflow events" - }, - "end": { - "$ref": "#/definitions/end", - "description": "Explicit transition to end" - }, - "eventDataFilter": { - "description": "Event data filter definition", - "$ref": "#/definitions/eventdatafilter" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "eventRef", - "end" - ] - }, - "datacondition": { "oneOf": [ { - "$ref": "#/definitions/transitiondatacondition" - }, - { - "$ref": "#/definitions/enddatacondition" - } - ] - }, - "transitiondatacondition": { - "type": "object", - "description": "Switch state data based condition", - "properties": { - "name": { - "type": "string", - "description": "Data condition name" - }, - "condition": { - "type": "string", - "description": "Workflow expression evaluated against state data. Must evaluate to true or false" - }, - "transition": { - "description": "Workflow transition if condition is evaluated to true", - "$ref": "#/definitions/transition" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "condition", - "transition" - ] - }, - "enddatacondition": { - "type": "object", - "description": "Switch state data based condition", - "properties": { - "name": { - "type": "string", - "description": "Data condition name" - }, - "condition": { - "type": "string", - "description": "Workflow expression evaluated against state data. Must evaluate to true or false" - }, - "end": { - "$ref": "#/definitions/end", - "description": "Workflow end definition" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "required": [ - "condition", - "end" - ] - }, - "injectstate": { - "type": "object", - "description": "Inject static data into state data. Does not perform any actions", - "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "inject", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "data": { - "type": "object", - "description": "JSON object which can be set as states data input and can be manipulated via filters" - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "transition": { - "description": "Next transition of the workflow after injection has completed", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" - } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "data" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "data", - "end" - ] + "properties": { + "basic": { + "type": "object", + "properties": { + "username": { + "type": "string", + "description": "The username to use." + }, + "password": { + "type": "string", + "description": "The password to use." + } + }, + "required": [ + "username", + "password" + ] + } }, - { - "required": [ - "name", - "type", - "data", - "transition" - ] - } - ] - } - }, - "foreachstate": { - "type": "object", - "description": "Execute a set of defined actions or workflows for each element of a data array", - "properties": { - "name": { - "type": "string", - "description": "State name" - }, - "type": { - "type": "string", - "const": "foreach", - "description": "State type" - }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" - }, - "inputCollection": { - "type": "string", - "description": "Workflow expression selecting an array element of the states data" - }, - "outputCollection": { - "type": "string", - "description": "Workflow expression specifying an array element of the states data to add the results of each iteration" - }, - "iterationParam": { - "type": "string", - "description": "Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain an unique element of the inputCollection array" - }, - "batchSize": { - "type": [ - "number", - "string" + "required": [ + "basic" ], - "minimum": 0, - "minLength": 0, - "description": "Specifies how many iterations may run in parallel at the same time. Used if 'mode' property is set to 'parallel' (default)" - }, - "actions": { - "type": "array", - "description": "Actions to be executed for each of the elements of inputCollection", - "items": { - "type": "object", - "$ref": "#/definitions/action" - }, - "additionalItems": false + "description": "Use basic authentication." }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", + { "properties": { - "stateExecTimeout": { - "$ref": "timeouts.json#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "timeouts.json#/definitions/actionExecTimeout" + "bearer": { + "type": "object", + "properties": { + "token": { + "type": "string", + "description": "The bearer token to use." + } + }, + "required": [ + "token" + ] } }, - "required": [] - }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" - }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false - }, - "transition": { - "description": "Next transition of the workflow after state has completed", - "$ref": "#/definitions/transition" - }, - "compensatedBy": { - "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" - }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" + "required": [ + "bearer" + ], + "description": "Use bearer authentication." }, - "mode": { - "type": "string", - "enum": [ - "sequential", - "parallel" + { + "properties": { + "oauth2": { + "type": "object", + "properties": { + "authority": { + "type": "string", + "format": "uri", + "description": "The URI that references the OAuth2 authority to use." + }, + "grant": { + "type": "string", + "description": "The grant type to use." + }, + "client": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The client id to use." + }, + "secret": { + "type": "string", + "description": "The client secret to use, if any." + } + }, + "required": [ + "id" + ] + }, + "scopes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The scopes, if any, to request the token for." + }, + "audiences": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The audiences, if any, to request the token for." + }, + "username": { + "type": "string", + "description": "The username to use. Used only if the grant type is Password." + }, + "password": { + "type": "string", + "description": "The password to use. Used only if the grant type is Password." + }, + "subject": { + "$ref": "#/$defs/oauth2Token", + "description": "The security token that represents the identity of the party on behalf of whom the request is being made." + }, + "actor": { + "$ref": "#/$defs/oauth2Token", + "description": "The security token that represents the identity of the acting party." + } + }, + "required": [ + "authority", + "grant", + "client" + ] + } + }, + "required": [ + "oauth2" ], - "description": "Specifies how iterations are to be performed (sequentially or in parallel)", - "default": "parallel" - }, - "metadata": { - "$ref": "common.json#/definitions/metadata" + "description": "Use OAUTH2 authentication." } - }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } - }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "inputCollection", - "actions" - ] - }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "inputCollection", - "actions", - "end" - ] - }, - { - "required": [ - "name", - "type", - "inputCollection", - "actions", - "transition" - ] - } - ] - } + ], + "description": "Defines an authentication policy." }, - "callbackstate": { + "oauth2Token": { "type": "object", - "description": "This state performs an action, then waits for the callback event that denotes completion of the action", "properties": { - "name": { + "token": { "type": "string", - "description": "State name" + "description": "The security token to use to use." }, "type": { "type": "string", - "const": "callback", - "description": "State type" - }, - "action": { - "description": "Defines the action to be executed", - "$ref": "#/definitions/action" - }, - "eventRef": { - "type": "string", - "description": "References an unique callback event name in the defined workflow events" - }, - "timeouts": { - "type": "object", - "description": "State specific timeouts", - "properties": { - "stateExecTimeout": { - "$ref": "timeouts.json#/definitions/stateExecTimeout" - }, - "actionExecTimeout": { - "$ref": "timeouts.json#/definitions/actionExecTimeout" - }, - "eventTimeout": { - "$ref": "timeouts.json#/definitions/eventTimeout" - } - }, - "required": [] + "description": "The type of the security token to use to use." + } + }, + "required": [ + "token", + "type" + ] + }, + "duration": { + "type": "object", + "minProperties": 1, + "properties": { + "days": { + "type": "integer", + "description": "Number of days, if any." }, - "eventDataFilter": { - "description": "Event data filter", - "$ref": "#/definitions/eventdatafilter" + "hours": { + "type": "integer", + "description": "Number of days, if any." }, - "stateDataFilter": { - "description": "State data filter", - "$ref": "#/definitions/statedatafilter" + "minutes": { + "type": "integer", + "description": "Number of minutes, if any." }, - "onErrors": { - "type": "array", - "description": "States error handling definitions", - "items": { - "type": "object", - "$ref": "#/definitions/error" - }, - "additionalItems": false + "seconds": { + "type": "integer", + "description": "Number of seconds, if any." }, - "transition": { - "description": "Next transition of the workflow after all the actions have been performed", - "$ref": "#/definitions/transition" + "milliseconds": { + "type": "integer", + "description": "Number of milliseconds, if any." + } + }, + "description": "The definition of a duration." + }, + "error": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri", + "description": "A URI reference that identifies the error type." }, - "end": { - "$ref": "#/definitions/end", - "description": "State end definition" + "status": { + "type": "integer", + "description": "The status code generated by the origin for this occurrence of the error." }, - "compensatedBy": { + "instance": { "type": "string", - "minLength": 1, - "description": "Unique Name of a workflow state which is responsible for compensation of this state" + "format": "json-pointer", + "description": "A JSON Pointer used to reference the component the error originates from." }, - "usedForCompensation": { - "type": "boolean", - "default": false, - "description": "If true, this state is used to compensate another state. Default is false" + "title": { + "type": "string", + "description": "A short, human-readable summary of the error." }, - "metadata": { - "$ref": "common.json#/definitions/metadata" + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the error." } }, - "additionalProperties": false, - "if": { - "properties": { - "usedForCompensation": { - "const": true - } + "required": [ + "type", + "status", + "instance" + ] + }, + "endpoint": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "format": "uri-template", + "description": "The endpoint's URI." }, - "required": [ - "usedForCompensation" - ] - }, - "then": { - "required": [ - "name", - "type", - "action", - "eventRef" - ] + "authentication": { + "description": "The authentication policy to use.", + "oneOf": [ + { + "$ref": "#/$defs/authenticationPolicy" + }, + { + "type": "string" + } + ] + } }, - "else": { - "oneOf": [ - { - "required": [ - "name", - "type", - "action", - "eventRef", - "end" - ] - }, - { - "required": [ - "name", - "type", - "action", - "eventRef", - "transition" - ] - } - ] - } + "required": [ + "uri" + ] }, - "startdef": { + "eventConsumptionStrategy": { + "type": "object", "oneOf": [ { - "type": "string", - "description": "Name of the starting workflow state", - "minLength": 1 + "properties": { + "all": { + "type": "array", + "items": { + "$ref": "#/$defs/eventFilter" + }, + "description": "A list containing all the events that must be consumed." + } + }, + "required": [ + "all" + ] }, { - "type": "object", - "description": "Workflow start definition", "properties": { - "stateName": { - "type": "string", - "description": "Name of the starting workflow state", - "minLength": 1 - }, - "schedule": { - "description": "Define the time/repeating intervals or cron at which workflow instances should be automatically started.", - "$ref": "#/definitions/schedule" + "any": { + "type": "array", + "items": { + "$ref": "#/$defs/eventFilter" + }, + "description": "A list containing any of the events to consume." + } + }, + "required": [ + "any" + ] + }, + { + "properties": { + "one": { + "$ref": "#/$defs/eventFilter", + "description": "The single event to consume." } }, - "additionalProperties": false, "required": [ - "schedule" + "one" ] } ] }, - "schedule": { - "oneOf": [ - { - "type": "string", - "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created. (UTC timezone is assumed)", - "minLength": 1 - }, - { + "eventFilter": { + "type": "object", + "properties": { + "with": { "type": "object", - "description": "Start state schedule definition", + "minProperties": 1, "properties": { - "interval": { + "id": { + "type": "string", + "description": "The event's unique identifier" + }, + "source": { + "type": "string", + "description": "Identifies the context in which an event happened" + }, + "type": { "type": "string", - "description": "Time interval (must be repeating interval) described with ISO 8601 format. Declares when workflow instances will be automatically created.", - "minLength": 1 + "description": "This attribute contains a value describing the type of event related to the originating occurrence." + }, + "time": { + "type": "string" }, - "cron": { - "$ref": "#/definitions/crondef" + "subject": { + "type": "string" }, - "timezone": { + "datacontenttype": { "type": "string", - "description": "Timezone name used to evaluate the interval & cron-expression. (default: UTC)" + "description": "Content type of data value. This attribute enables data to carry any type of content, whereby format and encoding might differ from that of the chosen event format." + }, + "dataschema": { + "type": "string" } }, - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "interval" - ] + "additionalProperties": true, + "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes." + }, + "correlate": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "A runtime expression used to extract the correlation value from the filtered event." + }, + "expect": { + "type": "string", + "description": "A constant or a runtime expression, if any, used to determine whether or not the extracted correlation value matches expectations. If not set, the first extracted value will be used as the correlation's expectation." + } }, - { - "required": [ - "cron" - ] - } - ] + "required": [ + "from" + ] + }, + "description": "A correlation is a link between events and data, established by mapping event attributes to specific data attributes, allowing for coordinated processing or handling based on event characteristics." } - ] + }, + "required": [ + "with" + ], + "description": "An event filter is a mechanism used to selectively process or handle events based on predefined criteria, such as event type, source, or specific attributes." + }, + "extension": { + "type": "object", + "properties": { + "extend": { + "type": "string", + "enum": [ + "call", + "composite", + "emit", + "for", + "listen", + "raise", + "run", + "set", + "switch", + "try", + "wait", + "all" + ], + "description": "The type of task to extend." + }, + "when": { + "type": "string", + "description": "A runtime expression, if any, used to determine whether or not the extension should apply in the specified context." + }, + "before": { + "description": "The task(s) to execute before the extended task, if any.", + "$ref": "#/$defs/taskList" + }, + "after": { + "description": "The task(s) to execute after the extended task, if any.", + "$ref": "#/$defs/taskList" + } + }, + "required": [ + "extend" + ], + "description": "The definition of a an extension." }, - "end": { + "externalResource": { "oneOf": [ { - "type": "boolean", - "description": "State end definition", - "default": true + "type": "string", + "format": "uri" }, { "type": "object", - "description": "State end definition", "properties": { - "terminate": { - "type": "boolean", - "default": false, - "description": "If true, completes all execution flows in the given workflow instance" - }, - "produceEvents": { - "type": "array", - "description": "Defines events that should be produced", - "items": { - "type": "object", - "$ref": "#/definitions/produceeventdef" - }, - "additionalItems": false + "uri": { + "type": "string", + "format": "uri", + "description": "The endpoint's URI." }, - "compensate": { - "type": "boolean", - "default": false, - "description": "If set to true, triggers workflow compensation. Default is false" + "authentication": { + "description": "The authentication policy to use.", + "oneOf": [ + { + "$ref": "#/$defs/authenticationPolicy" + }, + { + "type": "string" + } + ] }, - "continueAs": { - "$ref": "#/definitions/continueasdef" + "name": { + "type": "string", + "description": "The external resource's name, if any." } }, - "additionalProperties": false, - "required": [] + "required": [ + "uri" + ] } ] }, - "produceeventdef": { + "input": { "type": "object", - "description": "Produce an event and set its data", "properties": { - "eventRef": { - "type": "string", - "description": "References a name of a defined event" - }, - "data": { - "type": [ - "string", - "object" - ], - "description": "If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event." + "schema": { + "$ref": "#/$defs/schema", + "description": "The schema used to describe and validate the input of the workflow or task." }, - "contextAttributes": { - "type": "object", - "description": "Add additional event extension context attributes", - "additionalProperties": { - "type": "string" - } + "from": { + "type": "string", + "description": "A runtime expression, if any, used to mutate and/or filter the input of the workflow or task." } }, - "additionalProperties": false, - "required": [ - "eventRef" - ] + "description": "Configures the input of a workflow or task." }, - "statedatafilter": { + "output": { "type": "object", "properties": { - "input": { - "type": "string", - "description": "Workflow expression to filter the state data input" + "schema": { + "$ref": "#/$defs/schema", + "description": "The schema used to describe and validate the output of the workflow or task." }, - "output": { + "as": { "type": "string", - "description": "Workflow expression that filters the state data output" + "description": "A runtime expression, if any, used to mutate and/or filter the output of the workflow or task." } }, - "additionalProperties": false, - "required": [] + "description": "Configures the output of a workflow or task." }, - "eventdatafilter": { + "export": { "type": "object", "properties": { - "useData": { - "type": "boolean", - "description": "If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true.", - "default": true - }, - "data": { - "type": "string", - "description": "Workflow expression that filters the received event payload (default: '${ . }')" + "schema": { + "$ref": "#/$defs/schema", + "description": "The schema used to describe and validate the workflow context." }, - "toStateData": { + "as": { "type": "string", - "description": " Workflow expression that selects a state data element to which the filtered event should be added/merged into. If not specified, denotes, the top-level state data element." + "description": "A runtime expression, if any, used to export the output data to the context." } }, - "additionalProperties": false, - "required": [] + "description": "Set the content of the context." }, - "actiondatafilter": { + "retryPolicy": { "type": "object", "properties": { - "fromStateData": { + "when": { "type": "string", - "description": "Workflow expression that selects state data that the state action can use" + "description": "A runtime expression, if any, used to determine whether or not to retry running the task, in a given context." }, - "useResults": { - "type": "boolean", - "description": "If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true.", - "default": true - }, - "results": { + "exceptWhen": { "type": "string", - "description": "Workflow expression that filters the actions data results" + "description": "A runtime expression used to determine whether or not to retry running the task, in a given context." + }, + "delay": { + "$ref": "#/$defs/duration", + "description": "The duration to wait between retry attempts." + }, + "backoff": { + "type": "object", + "oneOf": [ + { + "properties": { + "constant": { + "type": "object", + "description": "The definition of the constant backoff to use, if any." + } + }, + "required": [ + "constant" + ] + }, + { + "properties": { + "exponential": { + "type": "object", + "description": "The definition of the exponential backoff to use, if any." + } + }, + "required": [ + "exponential" + ] + }, + { + "properties": { + "linear": { + "type": "object", + "description": "The definition of the linear backoff to use, if any." + } + }, + "required": [ + "linear" + ] + } + ], + "description": "The retry duration backoff." + }, + "limit": { + "type": "object", + "properties": { + "attempt": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "description": "The maximum amount of retry attempts, if any." + }, + "duration": { + "$ref": "#/$defs/duration", + "description": "The maximum duration for each retry attempt." + } + } + }, + "duration": { + "$ref": "#/$defs/duration", + "description": "The duration limit, if any, for all retry attempts." + } + }, + "description": "The retry limit, if any" }, - "toStateData": { + "jitter": { + "type": "object", + "properties": { + "from": { + "$ref": "#/$defs/duration", + "description": "The minimum duration of the jitter range" + }, + "to": { + "$ref": "#/$defs/duration", + "description": "The maximum duration of the jitter range" + } + }, + "required": [ + "from", + "to" + ], + "description": "The parameters, if any, that control the randomness or variability of the delay between retry attempts." + } + }, + "description": "Defines a retry policy." + }, + "schema": { + "type": "object", + "properties": { + "format": { "type": "string", - "description": "Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified, denote, the top-level state data element" + "default": "json", + "description": "The schema's format. Defaults to 'json'. The (optional) version of the format can be set using `{format}:{version}`." } }, - "additionalProperties": false, - "required": [] + "oneOf": [ + { + "properties": { + "document": { + "description": "The schema's inline definition." + } + }, + "required": [ + "document" + ] + }, + { + "properties": { + "resource": { + "$ref": "#/$defs/externalResource", + "description": "The schema's external resource." + } + }, + "required": [ + "resource" + ] + } + ], + "description": "Represents the definition of a schema." + }, + "timeout": { + "type": "object", + "properties": { + "after": { + "$ref": "#/$defs/duration", + "description": "The duration after which to timeout." + } + }, + "required": [ + "after" + ], + "description": "The definition of a timeout." } - } -} + }, + "required": [ + "document", + "do" + ] +} \ No newline at end of file diff --git a/src/lib/schema/workflowextensions.json b/src/lib/schema/workflowextensions.json deleted file mode 100644 index 324f23d..0000000 --- a/src/lib/schema/workflowextensions.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$id": "https://serverlessworkflow.io/schemas/0.8/workflowextensions.json", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Serverless Workflow specification - extensions schema", - "type": "object", - "extensions": { - "oneOf": [ - { - "type": "string", - "format": "uri", - "description": "URI to a resource containing workflow extensions definitions (json or yaml)" - }, - { - "type": "array", - "description": "Workflow extensions definitions", - "items": { - "type": "object", - "$ref": "#/definitions/extension" - }, - "additionalItems": false, - "minItems": 1 - } - ] - }, - "required": [ - "extensions" - ], - "definitions": { - "extension": { - "type": "object", - "properties": { - "extensionId": { - "type": "string", - "description": "Unique extension id", - "minLength": 1 - }, - "resource": { - "type": "string", - "description": "URI to a resource containing this workflow extension definitions (json or yaml)", - "minLength": 1 - } - }, - "additionalProperties": false, - "required": [ - "extensionId", - "resource" - ] - } - } -} \ No newline at end of file diff --git a/src/lib/utils.ts b/src/lib/utils.ts deleted file mode 100644 index dca73b2..0000000 --- a/src/lib/utils.ts +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { DefinedError, ValidateFunction } from 'ajv'; -import { validators } from './validators'; - -/** - * Validates the provided data or throws an error - * @param typeName {string} The data type to validate - * @param data {object} The data to validate - * @returns {boolean} True if valid, throws if invalid - */ -export const validate = (typeName: string, data: any): boolean => { - const validateFn: ValidateFunction | undefined = validators.get(typeName); - - if (!validateFn) { - throw Error(`Validate function not defined for type '${typeName}'`); - } - - if (!validateFn(JSON.parse(JSON.stringify(data)))) { - const firstError: DefinedError = (validateFn.errors as DefinedError[])[0]; - throw new Error( - `${typeName} is invalid: ${firstError.instancePath} | ${firstError.schemaPath} | ${firstError.message} - data: ${JSON.stringify(data, null, 4)}` - ); - } - return true; -}; - -/** - * Determine if the provided value is an object or a primitive type - * @param value The data - * @returns {boolean} True if the provided value is an object - */ -export const isObject = (value: any): boolean => { - if (!value) return false; - const type = typeof value; - return type === 'object'; -}; - -/** - * Represents the options used to convert string to pascal case or camel case - */ -export interface CaseConvertionOptions { - /** Keep dashes (-) characters */ - keepDashes: boolean; - /** Capitalize after dashes (-) characters, if kept */ - capitalizeAfterDashes: boolean; - /** Keep underscores (_) characters */ - keepUnderscores: boolean; - /** Capitalize after underscores (_) characters, if kept */ - capitalizeAfterUnderscores: boolean; - /** Keep dots (.) characters */ - keepDots: boolean; - /** Capitalize after dots (.) characters, if kept */ - capitalizeAfterDots: boolean; -} - -/** - * Holds default convertion options - */ -export const defaultConvertionOptions = { - keepDashes: false, - capitalizeAfterDashes: false, - keepUnderscores: false, - capitalizeAfterUnderscores: false, - keepDots: true, - capitalizeAfterDots: true, -} as CaseConvertionOptions; - -/** - * Converts a string to pascal case (PascalCase) - * @param source string The string to convert to pascal case - * @param convertionOptions CaseConvertionOptions Defaults: keepDashes: false, capitalizeAfterDashes: false, keepUnderscores: false, capitalizeAfterUnderscores: false, keepDots: true, capitalizeAfterDots: true - * @returns string The pascal case string - */ -export const pascalCase = ( - source: string, - convertionOptions: CaseConvertionOptions = defaultConvertionOptions -): string => { - if (!source) return ''; - let delimiter = ''; - if (!convertionOptions.keepDashes) { - source = source.replace(/-+/g, ' '); - } else if (convertionOptions.capitalizeAfterDashes) { - delimiter += '-'; - } - if (!convertionOptions.keepUnderscores) { - source = source.replace(/_+/g, ' '); - } else if (convertionOptions.capitalizeAfterUnderscores) { - delimiter += '_'; - } - if (!convertionOptions.keepDots) { - source = source.replace(/\.+/g, ' '); - } else if (convertionOptions.capitalizeAfterDots) { - delimiter += '\\.'; - } - if (delimiter) { - source = source.replace( - new RegExp('([' + delimiter + '])+(.)(\\w+)', 'g'), - ($1, $2, $3, $4) => `${$2}${$3.toUpperCase()}${$4.toLowerCase()}` - ); - } - return source - .replace(/\s+(.)(\w+)/g, ($1, $2, $3) => `${$2.toUpperCase()}${$3.toLowerCase()}`) - .replace(/\s/g, '') - .replace(/\w/, (s) => s.toUpperCase()); -}; - -/** - * Converts a PasalCase/camelCase string into a human readable string - * @param source string The string to convert - * @param keepCapitalLetters boolean If capital letters should be kept - * @returns string The converted string - */ -export const humanCase = (source: string, keepCapitalLetters: boolean = false): string => { - if (!source) return ''; - let transformable = source.trim(); - transformable = - transformable[0].toUpperCase() + - transformable - .slice(1) - .replace(/([A-Z])/g, ' $1') - .replace(/\s+/g, ' '); - if (keepCapitalLetters) { - return transformable; - } else { - return transformable.toLowerCase(); - } -}; diff --git a/src/lib/validation-error.ts b/src/lib/validation-error.ts deleted file mode 100644 index facc041..0000000 --- a/src/lib/validation-error.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export class ValidationError { - constructor(public readonly message: string) {} -} diff --git a/src/lib/validation/README.md b/src/lib/validation/README.md deleted file mode 100644 index 7d5a864..0000000 --- a/src/lib/validation/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Auto generated notice -This directory and its content has been generated automatically. Do not modify its content, it WILL be lost. \ No newline at end of file diff --git a/src/lib/validation/validators-paths.ts b/src/lib/validation/validators-paths.ts deleted file mode 100644 index 82a9944..0000000 --- a/src/lib/validation/validators-paths.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* -* Copyright 2021-Present The Serverless Workflow Specification Authors -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -/** -* A map of type names and their corresponding schema -*/ -export const validatorsPaths: [string, string][] = [ - ['Workflow', 'https://serverlessworkflow.io/schemas/0.8/workflow.json'], - ['Sleep', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/sleep'], - ['Crondef', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/crondef'], - ['Continueasdef', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/continueasdef'], - ['Transition', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/transition'], - ['Error', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/error'], - ['Onevents', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/onevents'], - ['Action', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/action'], - ['Functionref', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/functionref'], - ['Eventref', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/eventref'], - ['Subflowref', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/subflowref'], - ['Branch', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/branch'], - ['Sleepstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/sleepstate'], - ['Eventstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/eventstate'], - ['Operationstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/operationstate'], - ['Parallelstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/parallelstate'], - ['Switchstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/switchstate'], - ['Eventbasedswitchstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/eventbasedswitchstate'], - ['Databasedswitchstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/databasedswitchstate'], - ['Defaultconditiondef', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/defaultconditiondef'], - ['Eventcondition', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/eventcondition'], - ['Transitioneventcondition', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/transitioneventcondition'], - ['Endeventcondition', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/endeventcondition'], - ['Datacondition', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/datacondition'], - ['Transitiondatacondition', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/transitiondatacondition'], - ['Enddatacondition', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/enddatacondition'], - ['Injectstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/injectstate'], - ['Foreachstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/foreachstate'], - ['Callbackstate', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/callbackstate'], - ['Startdef', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/startdef'], - ['Schedule', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/schedule'], - ['End', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/end'], - ['Produceeventdef', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/produceeventdef'], - ['Statedatafilter', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/statedatafilter'], - ['Eventdatafilter', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/eventdatafilter'], - ['Actiondatafilter', 'https://serverlessworkflow.io/schemas/0.8/workflow.json#/definitions/actiondatafilter'], - ['Metadata', 'https://serverlessworkflow.io/schemas/0.8/common.json#/definitions/metadata'], - ['WorkflowExecTimeout', 'https://serverlessworkflow.io/schemas/0.8/timeouts.json#/definitions/workflowExecTimeout'], - ['StateExecTimeout', 'https://serverlessworkflow.io/schemas/0.8/timeouts.json#/definitions/stateExecTimeout'], - ['ActionExecTimeout', 'https://serverlessworkflow.io/schemas/0.8/timeouts.json#/definitions/actionExecTimeout'], - ['BranchExecTimeout', 'https://serverlessworkflow.io/schemas/0.8/timeouts.json#/definitions/branchExecTimeout'], - ['EventTimeout', 'https://serverlessworkflow.io/schemas/0.8/timeouts.json#/definitions/eventTimeout'], - ['Eventdef', 'https://serverlessworkflow.io/schemas/0.8/events.json#/definitions/eventdef'], - ['CorrelationDef', 'https://serverlessworkflow.io/schemas/0.8/events.json#/definitions/correlationDef'], - ['Function', 'https://serverlessworkflow.io/schemas/0.8/functions.json#/definitions/function'], - ['Authdef', 'https://serverlessworkflow.io/schemas/0.8/auth.json#/definitions/authdef'], - ['Basicpropsdef', 'https://serverlessworkflow.io/schemas/0.8/auth.json#/definitions/basicpropsdef'], - ['Bearerpropsdef', 'https://serverlessworkflow.io/schemas/0.8/auth.json#/definitions/bearerpropsdef'], - ['Oauth2propsdef', 'https://serverlessworkflow.io/schemas/0.8/auth.json#/definitions/oauth2propsdef'], - ['Retrydef', 'https://serverlessworkflow.io/schemas/0.8/retries.json#/definitions/retrydef'], - ['Errordef', 'https://serverlessworkflow.io/schemas/0.8/errors.json#/definitions/errordef'], - ['Extension', 'https://serverlessworkflow.io/schemas/0.8/workflowextensions.json#/definitions/extension'], - ['Secrets', 'https://serverlessworkflow.io/schemas/0.8/secrets.json#/secrets'], - ['Timeouts', 'https://serverlessworkflow.io/schemas/0.8/timeouts.json#/timeouts'], - ['Errors', 'https://serverlessworkflow.io/schemas/0.8/errors.json#/errors'], - ['Events', 'https://serverlessworkflow.io/schemas/0.8/events.json#/events'], - ['Functions', 'https://serverlessworkflow.io/schemas/0.8/functions.json#/functions'], - ['Retries', 'https://serverlessworkflow.io/schemas/0.8/retries.json#/retries'], - ['Auth', 'https://serverlessworkflow.io/schemas/0.8/auth.json#/auth'], - ['Extensions', 'https://serverlessworkflow.io/schemas/0.8/workflowextensions.json#/extensions'], -] \ No newline at end of file diff --git a/src/lib/validators.ts b/src/lib/validators.ts deleted file mode 100644 index 394bd1a..0000000 --- a/src/lib/validators.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import Ajv, { ValidateFunction } from 'ajv'; -import authSchema from './schema/auth.json'; -import commonSchema from './schema/common.json'; -import errorsSchema from './schema/errors.json'; -import eventsSchema from './schema/events.json'; -import functionsSchema from './schema/functions.json'; -import retriesSchema from './schema/retries.json'; -import secretsSchema from './schema/secrets.json'; -import timeoutsSchema from './schema/timeouts.json'; -import odataSchema from './schema/odata.json'; -import workflowSchema from './schema/workflow.json'; -import workflowExtensionsSchema from './schema/workflowextensions.json'; -import { validatorsPaths } from './validation/validators-paths'; - -const schemas: any[] = [ - authSchema, - commonSchema, - eventsSchema, - errorsSchema, - functionsSchema, - odataSchema, - retriesSchema, - secretsSchema, - timeoutsSchema, - workflowSchema, - workflowExtensionsSchema, -]; -const strict: boolean = false; -const ajv = new Ajv({ schemas, strict }); -ajv.addFormat('uri', (uri: string): boolean => true); -/** - * A Map of validation functions, where the key is the name of the schema to validate with - */ -export const validators: Map = new Map( - validatorsPaths.map(([dataType, schemaPath]) => { - const validate = ajv.getSchema(schemaPath); - if (!validate) throw `Unable to find schema '${schemaPath}' for type '${dataType}'`; - return [dataType, validate as ValidateFunction]; - }) -); diff --git a/src/lib/workflow-validator.ts b/src/lib/workflow-validator.ts deleted file mode 100644 index 1faca00..0000000 --- a/src/lib/workflow-validator.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ValidateFunction } from 'ajv'; -import { Specification } from './definitions'; -import { validators } from './validators'; -import { ValidationError } from './validation-error'; - -import { schemaVersion } from '../../package.json'; - -export class WorkflowValidator { - /** The validation errors after running validate(), if any */ - readonly errors: ValidationError[] = []; - - /** Whether the workflow is valid or not */ - readonly isValid: boolean; - - /** - * Creates a new WorkflowValidator for the provided workflow - * @param {Workflow} workflow The workflow to validate - */ - constructor(private workflow: Specification.Workflow) { - const validateFn = validators.get('Workflow') as ValidateFunction; - const normalizedWf = this.workflow.normalize(); - validateFn(JSON.parse(JSON.stringify(normalizedWf))); - if (validateFn.errors) { - this.errors = validateFn.errors.map((error) => { - const message = `Workflow is invalid: ${error.instancePath} | ${error.schemaPath} | ${error.message} - data: ${JSON.stringify(normalizedWf, null, 4)}`; - return new ValidationError(message); - }); - } - - const specVersion = workflow.specVersion; - if (schemaVersion !== specVersion) { - const message = `provided workflow.specVersion value '${specVersion}' can not be different from the SDK supported version '${schemaVersion}'`; - this.errors.push(new ValidationError(message)); - } - - this.isValid = this.errors.length === 0; - } -} diff --git a/src/serverless-workflow-sdk.ts b/src/serverless-workflow-sdk.ts deleted file mode 100644 index 0d865f7..0000000 --- a/src/serverless-workflow-sdk.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export * from './lib/validation-error'; -export * from './lib/workflow-validator'; -export * from './lib/validators'; -export * from './lib/builders'; -export * from './lib/definitions'; diff --git a/tests/examples/applicantrequest.json b/tests/examples/applicantrequest.json deleted file mode 100644 index 6a295a9..0000000 --- a/tests/examples/applicantrequest.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "id": "applicantrequest", - "name": "Applicant Request Decision Workflow", - "version": "1.0.0", - "description": "Determine if applicant request is valid", - "specVersion": "0.8", - "start": "CheckApplication", - "states": [ - { - "name": "CheckApplication", - "type": "switch", - "dataConditions": [ - { - "condition": "${ .applicants | .age >= 18 }", - "transition": "StartApplication" - }, - { - "condition": "${ .applicants | .age < 18 }", - "transition": "RejectApplication" - } - ], - "defaultCondition": { - "transition": "RejectApplication" - } - }, - { - "name": "StartApplication", - "type": "operation", - "actions": [ - { - "subFlowRef": "startApplicationWorkflowId" - } - ], - "end": true - }, - { - "name": "RejectApplication", - "type": "operation", - "actionMode": "sequential", - "actions": [ - { - "functionRef": { - "refName": "sendRejectionEmailFunction", - "arguments": { - "applicant": "${ .applicant }" - } - } - } - ], - "end": true - } - ], - "functions": [ - { - "name": "sendRejectionEmailFunction", - "operation": "http://myapis.org/applicationapi.json#emailRejection" - } - ] -} \ No newline at end of file diff --git a/tests/examples/applicantrequest.spec.ts b/tests/examples/applicantrequest.spec.ts deleted file mode 100644 index 2f00b4e..0000000 --- a/tests/examples/applicantrequest.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * oUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import * as fs from 'fs'; -import { - actionBuilder, - databasedswitchstateBuilder, - defaultconditiondefBuilder, - functionBuilder, - functionrefBuilder, - operationstateBuilder, - transitiondataconditionBuilder, - workflowBuilder, -} from '../../src'; - -describe('applicationrequest workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('applicantrequest') - .version('1.0.0') - .specVersion('0.8') - .name('Applicant Request Decision Workflow') - .description('Determine if applicant request is valid') - .start('CheckApplication') - .functions([ - functionBuilder() - .name('sendRejectionEmailFunction') - .operation('http://myapis.org/applicationapi.json#emailRejection') - .build(), - ]) - .states([ - databasedswitchstateBuilder() - .name('CheckApplication') - .dataConditions([ - transitiondataconditionBuilder() - .condition('${ .applicants | .age >= 18 }') - .transition('StartApplication') - .build(), - transitiondataconditionBuilder() - .condition('${ .applicants | .age < 18 }') - .transition('RejectApplication') - .build(), - ]) - .defaultCondition(defaultconditiondefBuilder().transition('RejectApplication').build()) - .build(), - operationstateBuilder() - .name('StartApplication') - .actions([actionBuilder().subFlowRef('startApplicationWorkflowId').build()]) - .build(), - operationstateBuilder() - .name('RejectApplication') - .actionMode('sequential') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('sendRejectionEmailFunction') - .arguments({ applicant: '${ .applicant }' }) - .build() - ) - .build(), - ]) - .build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/applicantrequest.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/booklending.json b/tests/examples/booklending.json deleted file mode 100644 index fc3c8df..0000000 --- a/tests/examples/booklending.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "id": "booklending", - "name": "Book Lending Workflow", - "version": "1.0.0", - "specVersion": "0.8", - "start": "Book Lending Request", - "states": [ - { - "name": "Book Lending Request", - "type": "event", - "onEvents": [ - { - "eventRefs": [ - "Book Lending Request Event" - ] - } - ], - "transition": "Get Book Status" - }, - { - "name": "Get Book Status", - "type": "operation", - "actions": [ - { - "functionRef": { - "refName": "Get status for book", - "arguments": { - "bookid": "${ .book.id }" - } - } - } - ], - "transition": "Book Status Decision" - }, - { - "name": "Book Status Decision", - "type": "switch", - "dataConditions": [ - { - "name": "Book is on loan", - "condition": "${ .book.status == \"onloan\" }", - "transition": "Report Status To Lender" - }, - { - "name": "Check is available", - "condition": "${ .book.status == \"available\" }", - "transition": "Check Out Book" - } - ], - "defaultCondition": { - "end": true - } - }, - { - "name": "Report Status To Lender", - "type": "operation", - "actions": [ - { - "functionRef": { - "refName": "Send status to lender", - "arguments": { - "bookid": "${ .book.id }", - "message": "Book ${ .book.title } is already on loan" - } - } - } - ], - "transition": "Wait for Lender response" - }, - { - "name": "Wait for Lender response", - "type": "switch", - "eventConditions": [ - { - "name": "Hold Book", - "eventRef": "Hold Book Event", - "transition": "Request Hold" - }, - { - "name": "Decline Book Hold", - "eventRef": "Decline Hold Event", - "transition": "Cancel Request" - } - ], - "defaultCondition": { - "end": true - } - }, - { - "name": "Request Hold", - "type": "operation", - "actions": [ - { - "functionRef": { - "refName": "Request hold for lender", - "arguments": { - "bookid": "${ .book.id }", - "lender": "${ .lender }" - } - } - } - ], - "transition": "Sleep two weeks" - }, - { - "name": "Sleep two weeks", - "type": "sleep", - "duration": "PT2W", - "transition": "Get Book Status" - }, - { - "name": "Check Out Book", - "type": "operation", - "actions": [ - { - "functionRef": { - "refName": "Check out book with id", - "arguments": { - "bookid": "${ .book.id }" - } - } - }, - { - "functionRef": { - "refName": "Notify Lender for checkout", - "arguments": { - "bookid": "${ .book.id }", - "lender": "${ .lender }" - } - } - } - ], - "end": true - } - ], - "functions": "file://books/lending/functions.json", - "events": "file://books/lending/events.json" -} diff --git a/tests/examples/booklending.spec.ts b/tests/examples/booklending.spec.ts deleted file mode 100644 index bda3e65..0000000 --- a/tests/examples/booklending.spec.ts +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - *

- * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * oUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import * as fs from 'fs'; -import { - actionBuilder, - databasedswitchstateBuilder, - defaultconditiondefBuilder, - eventbasedswitchstateBuilder, - eventstateBuilder, - functionrefBuilder, - oneventsBuilder, - operationstateBuilder, - sleepstateBuilder, - transitiondataconditionBuilder, - transitioneventconditionBuilder, - workflowBuilder, -} from '../../src'; - -describe('booklending workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('booklending') - .name('Book Lending Workflow') - .version('1.0.0') - .specVersion('0.8') - .start('Book Lending Request') - .states([ - eventstateBuilder() - .name('Book Lending Request') - .onEvents([oneventsBuilder().eventRefs(['Book Lending Request Event']).build()]) - .transition('Get Book Status') - .build(), - operationstateBuilder() - .name('Get Book Status') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('Get status for book') - .arguments({ - bookid: '${ .book.id }', - }) - .build() - ) - .build(), - ]) - .transition('Book Status Decision') - .build(), - databasedswitchstateBuilder() - .name('Book Status Decision') - .dataConditions([ - transitiondataconditionBuilder() - .name('Book is on loan') - .condition('${ .book.status == "onloan" }') - .transition('Report Status To Lender') - .build(), - transitiondataconditionBuilder() - .name('Check is available') - .condition('${ .book.status == "available" }') - .transition('Check Out Book') - .build(), - ]) - .defaultCondition(defaultconditiondefBuilder().end(true).build()) - .build(), - operationstateBuilder() - .name('Report Status To Lender') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('Send status to lender') - .arguments({ - bookid: '${ .book.id }', - message: 'Book ${ .book.title } is already on loan', - }) - .build() - ) - .build(), - ]) - .transition('Wait for Lender response') - .build(), - eventbasedswitchstateBuilder() - .name('Wait for Lender response') - .eventConditions([ - transitioneventconditionBuilder() - .name('Hold Book') - .eventRef('Hold Book Event') - .transition('Request Hold') - .build(), - transitioneventconditionBuilder() - .name('Decline Book Hold') - .eventRef('Decline Hold Event') - .transition('Cancel Request') - .build(), - ]) - .defaultCondition(defaultconditiondefBuilder().end(true).build()) - .build(), - operationstateBuilder() - .name('Request Hold') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('Request hold for lender') - .arguments({ - bookid: '${ .book.id }', - lender: '${ .lender }', - }) - .build() - ) - .build(), - ]) - .transition('Sleep two weeks') - .build(), - sleepstateBuilder().name('Sleep two weeks').duration('PT2W').transition('Get Book Status').build(), - operationstateBuilder() - .name('Check Out Book') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('Check out book with id') - .arguments({ - bookid: '${ .book.id }', - }) - .build() - ) - .build(), - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('Notify Lender for checkout') - .arguments({ - bookid: '${ .book.id }', - lender: '${ .lender }', - }) - .build() - ) - .build(), - ]) - .build(), - ]) - .functions('file://books/lending/functions.json') - .events('file://books/lending/events.json') - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/booklending.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/carauctionbids.json b/tests/examples/carauctionbids.json deleted file mode 100644 index 9c6ac0d..0000000 --- a/tests/examples/carauctionbids.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "id": "handleCarAuctionBid", - "name": "Car Auction Bidding Workflow", - "version": "1.0.0", - "description": "Store a single bid whole the car auction is active", - "specVersion": "0.8", - "start": { - "stateName": "StoreCarAuctionBid", - "schedule": "R/PT2H" - }, - "states": [ - { - "name": "StoreCarAuctionBid", - "type": "event", - "exclusive": true, - "onEvents": [ - { - "eventRefs": [ - "CarBidEvent" - ], - "actions": [ - { - "functionRef": { - "refName": "StoreBidFunction", - "arguments": { - "bid": "${ .bid }" - } - } - } - ] - } - ], - "end": true - } - ], - "functions": [ - { - "name": "StoreBidFunction", - "operation": "http://myapis.org/carauctionapi.json#storeBid" - } - ], - "events": [ - { - "name": "CarBidEvent", - "type": "carBidMadeType", - "source": "carBidEventSource" - } - ] -} \ No newline at end of file diff --git a/tests/examples/carauctionbids.spec.ts b/tests/examples/carauctionbids.spec.ts deleted file mode 100644 index 12f6b01..0000000 --- a/tests/examples/carauctionbids.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import * as fs from 'fs'; -import { - actionBuilder, - eventdefBuilder, - eventstateBuilder, - functionBuilder, - functionrefBuilder, - oneventsBuilder, - startdefBuilder, - workflowBuilder, -} from '../../src'; - -describe('carauctionbids workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('handleCarAuctionBid') - .version('1.0.0') - .specVersion('0.8') - .name('Car Auction Bidding Workflow') - .description('Store a single bid whole the car auction is active') - .start(startdefBuilder().stateName('StoreCarAuctionBid').schedule('R/PT2H').build()) - .functions([ - functionBuilder().name('StoreBidFunction').operation('http://myapis.org/carauctionapi.json#storeBid').build(), - ]) - .events([eventdefBuilder().name('CarBidEvent').type('carBidMadeType').source('carBidEventSource').build()]) - .states([ - eventstateBuilder() - .name('StoreCarAuctionBid') - .exclusive(true) - .onEvents([ - oneventsBuilder() - .eventRefs(['CarBidEvent']) - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('StoreBidFunction') - .arguments({ - bid: '${ .bid }', - }) - .build() - ) - .build(), - ]) - .build(), - ]) - .build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/carauctionbids.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/checkcarvitals.json b/tests/examples/checkcarvitals.json deleted file mode 100644 index 79a61d6..0000000 --- a/tests/examples/checkcarvitals.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "id": "checkcarvitals", - "name": "Check Car Vitals Workflow", - "version": "1.0.0", - "specVersion": "0.8", - "start": "WhenCarIsOn", - "states": [ - { - "name": "WhenCarIsOn", - "type": "event", - "onEvents": [ - { - "eventRefs": [ - "CarTurnedOnEvent" - ] - } - ], - "transition": "DoCarVitalChecks" - }, - { - "name": "DoCarVitalChecks", - "type": "operation", - "actions": [ - { - "subFlowRef": "vitalscheck", - "sleep": { - "after": "PT1S" - } - } - ], - "transition": "CheckContinueVitalChecks" - }, - { - "name": "CheckContinueVitalChecks", - "type": "switch", - "eventConditions": [ - { - "name": "Car Turned Off Condition", - "eventRef": "CarTurnedOffEvent", - "end": true - } - ], - "defaultCondition": { - "transition": "DoCarVitalChecks" - } - } - ], - "events": [ - { - "name": "CarTurnedOnEvent", - "type": "car.events", - "source": "my/car" - }, - { - "name": "CarTurnedOffEvent", - "type": "car.events", - "source": "my/car" - } - ] -} diff --git a/tests/examples/checkcarvitals.spec.ts b/tests/examples/checkcarvitals.spec.ts deleted file mode 100644 index d4e954a..0000000 --- a/tests/examples/checkcarvitals.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as fs from 'fs'; -import { - actionBuilder, - defaultconditiondefBuilder, - endeventconditionBuilder, - eventbasedswitchstateBuilder, - eventdefBuilder, - eventstateBuilder, - oneventsBuilder, - operationstateBuilder, - sleepBuilder, - workflowBuilder, -} from '../../src'; - -describe('checkcarvitals workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('checkcarvitals') - .name('Check Car Vitals Workflow') - .version('1.0.0') - .specVersion('0.8') - .start('WhenCarIsOn') - .states([ - eventstateBuilder() - .name('WhenCarIsOn') - .onEvents([oneventsBuilder().eventRefs(['CarTurnedOnEvent']).build()]) - .transition('DoCarVitalChecks') - .build(), - operationstateBuilder() - .name('DoCarVitalChecks') - .actions([actionBuilder().subFlowRef('vitalscheck').sleep(sleepBuilder().after('PT1S').build()).build()]) - - .transition('CheckContinueVitalChecks') - .build(), - - eventbasedswitchstateBuilder() - .name('CheckContinueVitalChecks') - .eventConditions([ - endeventconditionBuilder().name('Car Turned Off Condition').eventRef('CarTurnedOffEvent').end(true).build(), - ]) - .defaultCondition(defaultconditiondefBuilder().transition('DoCarVitalChecks').build()) - .build(), - ]) - .events([ - eventdefBuilder().name('CarTurnedOnEvent').type('car.events').source('my/car').build(), - eventdefBuilder().name('CarTurnedOffEvent').type('car.events').source('my/car').build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/checkcarvitals.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/jobmonitoring.json b/tests/examples/jobmonitoring.json deleted file mode 100644 index 6ec7505..0000000 --- a/tests/examples/jobmonitoring.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "id": "jobmonitoring", - "name": "Job Monitoring", - "version": "1.0.0", - "description": "Monitor finished execution of a submitted job", - "specVersion": "0.8", - "start": "SubmitJob", - "states": [ - { - "name": "SubmitJob", - "type": "operation", - "actionMode": "sequential", - "actions": [ - { - "functionRef": { - "refName": "submitJob", - "arguments": { - "name": "${ .job.name }" - } - }, - "actionDataFilter": { - "results": "${ .jobuid }" - } - } - ], - "stateDataFilter": { - "output": "${ .jobuid }" - }, - "transition": "WaitForCompletion" - }, - { - "name": "WaitForCompletion", - "type": "sleep", - "duration": "PT5S", - "transition": "GetJobStatus" - }, - { - "name": "GetJobStatus", - "type": "operation", - "actionMode": "sequential", - "actions": [ - { - "functionRef": { - "refName": "checkJobStatus", - "arguments": { - "name": "${ .jobuid }" - } - }, - "actionDataFilter": { - "results": "${ .jobstatus }" - } - } - ], - "stateDataFilter": { - "output": "${ .jobstatus }" - }, - "transition": "DetermineCompletion" - }, - { - "name": "DetermineCompletion", - "type": "switch", - "dataConditions": [ - { - "condition": "${ .jobStatus == \"SUCCEEDED\" }", - "transition": "JobSucceeded" - }, - { - "condition": "${ .jobStatus == \"FAILED\" }", - "transition": "JobFailed" - } - ], - "defaultCondition": { - "transition": "WaitForCompletion" - } - }, - { - "name": "JobSucceeded", - "type": "operation", - "actionMode": "sequential", - "actions": [ - { - "functionRef": { - "refName": "reportJobSuceeded", - "arguments": { - "name": "${ .jobuid }" - } - } - } - ], - "end": true - }, - { - "name": "JobFailed", - "type": "operation", - "actionMode": "sequential", - "actions": [ - { - "functionRef": { - "refName": "reportJobFailed", - "arguments": { - "name": "${ .jobuid }" - } - } - } - ], - "end": true - } - ], - "functions": [ - { - "name": "submitJob", - "operation": "http://myapis.org/monitorapi.json#doSubmit" - }, - { - "name": "checkJobStatus", - "operation": "http://myapis.org/monitorapi.json#checkStatus" - }, - { - "name": "reportJobSuceeded", - "operation": "http://myapis.org/monitorapi.json#reportSucceeded" - }, - { - "name": "reportJobFailed", - "operation": "http://myapis.org/monitorapi.json#reportFailure" - } - ] -} \ No newline at end of file diff --git a/tests/examples/jobmonitoring.spec.ts b/tests/examples/jobmonitoring.spec.ts deleted file mode 100644 index 67e2051..0000000 --- a/tests/examples/jobmonitoring.spec.ts +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as fs from 'fs'; -import { - actionBuilder, - actiondatafilterBuilder, - databasedswitchstateBuilder, - defaultconditiondefBuilder, - functionBuilder, - functionrefBuilder, - operationstateBuilder, - sleepstateBuilder, - statedatafilterBuilder, - transitiondataconditionBuilder, - workflowBuilder, -} from '../../src'; - -describe('jobmonitoring workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('jobmonitoring') - .version('1.0.0') - .specVersion('0.8') - .name('Job Monitoring') - .description('Monitor finished execution of a submitted job') - .start('SubmitJob') - .functions([ - functionBuilder().name('submitJob').operation('http://myapis.org/monitorapi.json#doSubmit').build(), - functionBuilder().name('checkJobStatus').operation('http://myapis.org/monitorapi.json#checkStatus').build(), - functionBuilder() - .name('reportJobSuceeded') - .operation('http://myapis.org/monitorapi.json#reportSucceeded') - .build(), - functionBuilder().name('reportJobFailed').operation('http://myapis.org/monitorapi.json#reportFailure').build(), - ]) - .states([ - operationstateBuilder() - .name('SubmitJob') - .actionMode('sequential') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('submitJob') - .arguments({ - name: '${ .job.name }', - }) - .build() - ) - .actionDataFilter(actiondatafilterBuilder().results('${ .jobuid }').build()) - .build(), - ]) - .stateDataFilter(statedatafilterBuilder().output('${ .jobuid }').build()) - .transition('WaitForCompletion') - .build(), - sleepstateBuilder().name('WaitForCompletion').duration('PT5S').transition('GetJobStatus').build(), - operationstateBuilder() - .name('GetJobStatus') - .actionMode('sequential') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('checkJobStatus') - .arguments({ - name: '${ .jobuid }', - }) - .build() - ) - .actionDataFilter(actiondatafilterBuilder().results('${ .jobstatus }').build()) - .build(), - ]) - .stateDataFilter(statedatafilterBuilder().output('${ .jobstatus }').build()) - .transition('DetermineCompletion') - .build(), - databasedswitchstateBuilder() - .name('DetermineCompletion') - .dataConditions([ - transitiondataconditionBuilder() - .condition('${ .jobStatus == "SUCCEEDED" }') - .transition('JobSucceeded') - .build(), - transitiondataconditionBuilder().condition('${ .jobStatus == "FAILED" }').transition('JobFailed').build(), - ]) - .defaultCondition(defaultconditiondefBuilder().transition('WaitForCompletion').build()) - .build(), - operationstateBuilder() - .name('JobSucceeded') - .actionMode('sequential') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('reportJobSuceeded') - .arguments({ - name: '${ .jobuid }', - }) - .build() - ) - .build(), - ]) - .build(), - operationstateBuilder() - .name('JobFailed') - .actionMode('sequential') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('reportJobFailed') - .arguments({ - name: '${ .jobuid }', - }) - .build() - ) - .build(), - ]) - .build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/jobmonitoring.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/parallel.json b/tests/examples/parallel.json deleted file mode 100644 index 3cc3e50..0000000 --- a/tests/examples/parallel.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "id": "parallelexec", - "name": "Parallel Execution Workflow", - "version": "1.0.0", - "description": "Executes two branches in parallel", - "specVersion": "0.8", - "start": "ParallelExec", - "states": [ - { - "name": "ParallelExec", - "type": "parallel", - "completionType": "allOf", - "branches": [ - { - "name": "ShortDelayBranch", - "actions": [ - { - "subFlowRef": "shortdelayworkflowid" - } - ] - }, - { - "name": "LongDelayBranch", - "actions": [ - { - "subFlowRef": "longdelayworkflowid" - } - ] - } - ], - "end": true - } - ] -} \ No newline at end of file diff --git a/tests/examples/parallel.spec.ts b/tests/examples/parallel.spec.ts deleted file mode 100644 index 420c0dc..0000000 --- a/tests/examples/parallel.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import * as fs from 'fs'; -import { actionBuilder, branchBuilder, parallelstateBuilder, workflowBuilder } from '../../src'; - -describe('parallel workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('parallelexec') - .version('1.0.0') - .specVersion('0.8') - .name('Parallel Execution Workflow') - .description('Executes two branches in parallel') - .start('ParallelExec') - .states([ - parallelstateBuilder() - .name('ParallelExec') - .completionType('allOf') - .branches([ - branchBuilder() - .name('ShortDelayBranch') - .actions([actionBuilder().subFlowRef('shortdelayworkflowid').build()]) - .build(), - branchBuilder() - .name('LongDelayBranch') - .actions([actionBuilder().subFlowRef('longdelayworkflowid').build()]) - .build(), - ]) - .build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/parallel.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/provisionorder.json b/tests/examples/provisionorder.json deleted file mode 100644 index 8523975..0000000 --- a/tests/examples/provisionorder.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "id": "provisionorders", - "name": "Provision Orders", - "version": "1.0.0", - "description": "Provision Orders and handle errors thrown", - "specVersion": "0.8", - "start": "ProvisionOrder", - "states": [ - { - "name": "ProvisionOrder", - "type": "operation", - "actionMode": "sequential", - "actions": [ - { - "functionRef": { - "refName": "provisionOrderFunction", - "arguments": { - "order": "${ .order }" - } - } - } - ], - "stateDataFilter": { - "output": "${ .exceptions }" - }, - "transition": "ApplyOrder", - "onErrors": [ - { - "errorRef": "Missing order id", - "transition": "MissingId" - }, - { - "errorRef": "Missing order item", - "transition": "MissingItem" - }, - { - "errorRef": "Missing order quantity", - "transition": "MissingQuantity" - } - ] - }, - { - "name": "MissingId", - "type": "operation", - "actions": [ - { - "subFlowRef": "handleMissingIdExceptionWorkflow" - } - ], - "end": true - }, - { - "name": "MissingItem", - "type": "operation", - "actions": [ - { - "subFlowRef": "handleMissingItemExceptionWorkflow" - } - ], - "end": true - }, - { - "name": "MissingQuantity", - "type": "operation", - "actions": [ - { - "subFlowRef": "handleMissingQuantityExceptionWorkflow" - } - ], - "end": true - }, - { - "name": "ApplyOrder", - "type": "operation", - "actions": [ - { - "subFlowRef": "applyOrderWorkflowId" - } - ], - "end": true - } - ], - "functions": [ - { - "name": "provisionOrderFunction", - "operation": "http://myapis.org/provisioningapi.json#doProvision" - } - ], - "errors": [ - { - "name": "Missing order id" - }, - { - "name": "Missing order item" - }, - { - "name": "Missing order quantity" - } - ] -} \ No newline at end of file diff --git a/tests/examples/provisionorder.spec.ts b/tests/examples/provisionorder.spec.ts deleted file mode 100644 index c49bf80..0000000 --- a/tests/examples/provisionorder.spec.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as fs from 'fs'; -import { - actionBuilder, - errorBuilder, - errordefBuilder, - functionBuilder, - functionrefBuilder, - operationstateBuilder, - statedatafilterBuilder, - workflowBuilder, -} from '../../src'; - -describe('provisionorder workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('provisionorders') - .version('1.0.0') - .specVersion('0.8') - .name('Provision Orders') - .description('Provision Orders and handle errors thrown') - .start('ProvisionOrder') - .functions([ - functionBuilder() - .name('provisionOrderFunction') - .operation('http://myapis.org/provisioningapi.json#doProvision') - .build(), - ]) - .errors([ - errordefBuilder().name('Missing order id').build(), - errordefBuilder().name('Missing order item').build(), - errordefBuilder().name('Missing order quantity').build(), - ]) - .states([ - operationstateBuilder() - .name('ProvisionOrder') - .actionMode('sequential') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('provisionOrderFunction') - .arguments({ - order: '${ .order }', - }) - .build() - ) - .build(), - ]) - .stateDataFilter(statedatafilterBuilder().output('${ .exceptions }').build()) - .transition('ApplyOrder') - .onErrors([ - errorBuilder().errorRef('Missing order id').transition('MissingId').build(), - errorBuilder().errorRef('Missing order item').transition('MissingItem').build(), - errorBuilder().errorRef('Missing order quantity').transition('MissingQuantity').build(), - ]) - .build(), - operationstateBuilder() - .name('MissingId') - .actions([actionBuilder().subFlowRef('handleMissingIdExceptionWorkflow').build()]) - .build(), - operationstateBuilder() - .name('MissingItem') - .actions([actionBuilder().subFlowRef('handleMissingItemExceptionWorkflow').build()]) - .build(), - operationstateBuilder() - .name('MissingQuantity') - .actions([actionBuilder().subFlowRef('handleMissingQuantityExceptionWorkflow').build()]) - .build(), - operationstateBuilder() - .name('ApplyOrder') - .actions([actionBuilder().subFlowRef('applyOrderWorkflowId').build()]) - .build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/provisionorder.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/sendcloudevent.json b/tests/examples/sendcloudevent.json deleted file mode 100644 index 8ba8023..0000000 --- a/tests/examples/sendcloudevent.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "id": "sendcloudeventonprovision", - "name": "Send CloudEvent on provision completion", - "version": "1.0.0", - "specVersion": "0.8", - "start": "ProvisionOrdersState", - "states": [ - { - "name": "ProvisionOrdersState", - "type": "foreach", - "inputCollection": "${ .orders }", - "iterationParam": "singleorder", - "outputCollection": "${ .provisionedOrders }", - "actions": [ - { - "functionRef": { - "refName": "provisionOrderFunction", - "arguments": { - "order": "${ .singleorder }" - } - } - } - ], - "end": { - "produceEvents": [ - { - "eventRef": "provisioningCompleteEvent", - "data": "${ .provisionedOrders }" - } - ] - } - } - ], - "functions": [ - { - "name": "provisionOrderFunction", - "operation": "http://myapis.org/provisioning.json#doProvision" - } - ], - "events": [ - { - "kind": "produced", - "name": "provisioningCompleteEvent", - "type": "provisionCompleteType" - } - ] -} \ No newline at end of file diff --git a/tests/examples/sendcloudevent.spec.ts b/tests/examples/sendcloudevent.spec.ts deleted file mode 100644 index 38b323e..0000000 --- a/tests/examples/sendcloudevent.spec.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import * as fs from 'fs'; -import { - actionBuilder, - endBuilder, - eventdefBuilder, - foreachstateBuilder, - functionBuilder, - functionrefBuilder, - produceeventdefBuilder, - workflowBuilder, -} from '../../src'; - -describe('sendcloudevent workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('sendcloudeventonprovision') - .version('1.0.0') - .specVersion('0.8') - .name('Send CloudEvent on provision completion') - .start('ProvisionOrdersState') - .events([ - eventdefBuilder().name('provisioningCompleteEvent').type('provisionCompleteType').kind('produced').build(), - ]) - .functions([ - functionBuilder() - .name('provisionOrderFunction') - .operation('http://myapis.org/provisioning.json#doProvision') - .build(), - ]) - .states([ - foreachstateBuilder() - .name('ProvisionOrdersState') - .inputCollection('${ .orders }') - .iterationParam('singleorder') - .outputCollection('${ .provisionedOrders }') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('provisionOrderFunction') - .arguments({ - order: '${ .singleorder }', - }) - .build() - ) - .build(), - ]) - .end( - endBuilder() - .produceEvents([ - produceeventdefBuilder().eventRef('provisioningCompleteEvent').data('${ .provisionedOrders }').build(), - ]) - .build() - ) - .build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/sendcloudevent.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/examples/solvemathproblems.json b/tests/examples/solvemathproblems.json deleted file mode 100644 index 9a887ac..0000000 --- a/tests/examples/solvemathproblems.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "id": "solvemathproblems", - "name": "Solve Math Problems Workflow", - "version": "1.0.0", - "description": "Solve math problems", - "specVersion": "0.8", - "start": "Solve", - "states": [ - { - "name": "Solve", - "type": "foreach", - "inputCollection": "${ .expressions }", - "iterationParam": "singleexpression", - "outputCollection": "${ .results }", - "actions": [ - { - "functionRef": { - "refName": "solveMathExpressionFunction", - "arguments": { - "expression": "${ .singleexpression }" - } - } - } - ], - "stateDataFilter": { - "output": "${ .results }" - }, - "end": true - } - ], - "functions": [ - { - "name": "solveMathExpressionFunction", - "operation": "http://myapis.org/mapthapis.json#solveExpression" - } - ] -} \ No newline at end of file diff --git a/tests/examples/solvemathproblems.spec.ts b/tests/examples/solvemathproblems.spec.ts deleted file mode 100644 index f3e717a..0000000 --- a/tests/examples/solvemathproblems.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import * as fs from 'fs'; -import { - actionBuilder, - foreachstateBuilder, - functionBuilder, - functionrefBuilder, - statedatafilterBuilder, - workflowBuilder, -} from '../../src'; - -describe('solvemathproblems workflow example', () => { - it('should generate Workflow object', function () { - const workflow = workflowBuilder() - .id('solvemathproblems') - .version('1.0.0') - .specVersion('0.8') - .name('Solve Math Problems Workflow') - .description('Solve math problems') - .start('Solve') - .functions([ - functionBuilder() - .name('solveMathExpressionFunction') - .operation('http://myapis.org/mapthapis.json#solveExpression') - .build(), - ]) - .states([ - foreachstateBuilder() - .name('Solve') - .inputCollection('${ .expressions }') - .iterationParam('singleexpression') - .outputCollection('${ .results }') - .actions([ - actionBuilder() - .functionRef( - functionrefBuilder() - .refName('solveMathExpressionFunction') - .arguments({ - expression: '${ .singleexpression }', - }) - .build() - ) - .build(), - ]) - .stateDataFilter(statedatafilterBuilder().output('${ .results }').build()) - .build(), - ]) - .build(); - - const expected = JSON.parse(fs.readFileSync('./tests/examples/solvemathproblems.json', 'utf8')); - expect(JSON.stringify(workflow.normalize())).toEqual(JSON.stringify(expected)); - }); -}); diff --git a/tests/lib/builders/eventstate-builder.spec.ts b/tests/lib/builders/eventstate-builder.spec.ts deleted file mode 100644 index f6d6bee..0000000 --- a/tests/lib/builders/eventstate-builder.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import { eventstateBuilder } from '../../../src/lib/builders/eventstate-builder'; -import { oneventsBuilder } from '../../../src/lib/builders/onevents-builder'; - -describe('eventstateBuilder ', () => { - it('should build an object', () => { - const object = eventstateBuilder() - .name('Book Lending Request') - .onEvents([oneventsBuilder().eventRefs(['Book Lending Request Event']).build()]) - .transition('Get Book Status') - .build(); - - expect(object.exclusive).toBeTruthy(); - - const serializedObject = object.normalize(); - expect(JSON.stringify(serializedObject)).toBe( - JSON.stringify({ - name: 'Book Lending Request', - type: 'event', - onEvents: [ - { - eventRefs: ['Book Lending Request Event'], - }, - ], - transition: 'Get Book Status', - }) - ); - }); -}); diff --git a/tests/lib/builders/function-builder.spec.ts b/tests/lib/builders/function-builder.spec.ts deleted file mode 100644 index ed17e4c..0000000 --- a/tests/lib/builders/function-builder.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import { functionBuilder } from '../../../src/lib/builders/function-builder'; - -describe('functionBuilder ', () => { - it('should build an object without default type if not set', () => { - const fn = functionBuilder().name('function').operation('operation').build(); - - expect(fn.type).toBe('rest'); - }); - - it('should build an object with type= set value ', () => { - expect(functionBuilder().name('function').operation('operation').type('expression').build().type).toBe( - 'expression' - ); - expect(functionBuilder().name('function').operation('operation').type('rest').build().type).toBe('rest'); - }); -}); diff --git a/tests/lib/builders/operationstate-builder.spec.ts b/tests/lib/builders/operationstate-builder.spec.ts deleted file mode 100644 index a790002..0000000 --- a/tests/lib/builders/operationstate-builder.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import { actionBuilder, operationstateBuilder } from '../../../src'; - -describe('operationstateBuilder ', () => { - it('should build an object with default values', () => { - const object = operationstateBuilder() - .name('StartApplication') - .actions([actionBuilder().subFlowRef('startApplicationWorkflowId').build()]) - .build(); - - expect(object.actionMode).toBe('sequential'); - - const serializedObject = object.normalize(); - expect(JSON.stringify(serializedObject)).toBe( - JSON.stringify({ - name: 'StartApplication', - type: 'operation', - actions: [{ subFlowRef: 'startApplicationWorkflowId' }], - end: true, - }) - ); - }); -}); diff --git a/tests/lib/definitions/action.spec.ts b/tests/lib/definitions/action.spec.ts deleted file mode 100644 index 5c239e8..0000000 --- a/tests/lib/definitions/action.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { Action } from '../../../src/lib/definitions/action'; - -describe('Action ', () => { - it('should convert non-primitive properties to the desired class', () => { - const data = { - functionRef: {}, - eventRef: {}, - actionDataFilter: {}, - }; - - const model = new Action(data); - - expect(model.functionRef!.constructor.name).toBe('Functionref'); - expect(model.eventRef!.constructor.name).toBe('Eventref'); - expect(model.actionDataFilter!.constructor.name).toBe('Actiondatafilter'); - }); -}); diff --git a/tests/lib/definitions/branch.spec.ts b/tests/lib/definitions/branch.spec.ts deleted file mode 100644 index 976113b..0000000 --- a/tests/lib/definitions/branch.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { Branch } from '../../../src/lib/definitions/branch'; - -describe('Branch ', () => { - it('should convert non-primitive properties to the desired class', () => { - const data = { - actions: [{}], - }; - - const model = new Branch(data); - - expect(model.actions![0].constructor.name).toBe('Action'); - }); -}); diff --git a/tests/lib/definitions/eventdef.spec.ts b/tests/lib/definitions/eventdef.spec.ts deleted file mode 100644 index 7f08731..0000000 --- a/tests/lib/definitions/eventdef.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { Eventdef } from '../../../src/lib/definitions/eventdef'; - -describe('Eventdef ', () => { - it('should convert non-primitive properties to the desired class', () => { - const data = { - correlation: [{ contextAttributeName: 'contextAttributeName' }], - metadata: { key: 'value' }, - }; - - const model = new Eventdef(data); - - expect(model.correlation![0].constructor.name).toBe('CorrelationDef'); - expect(model.metadata!.constructor.name).toBe('Metadata'); - }); -}); diff --git a/tests/lib/definitions/schedule.spec.ts b/tests/lib/definitions/schedule.spec.ts deleted file mode 100644 index 0d3ca43..0000000 --- a/tests/lib/definitions/schedule.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { Schedule } from '../../../src/lib/definitions/schedule'; - -describe('schedule ', () => { - it('should convert non-primitive properties to the desired class', () => { - const data = { - cron: { expression: '* * * ? * *' }, - }; - - const model = new Schedule(data); - expect(model.cron!.constructor.name).toBe('Crondef'); - }); - - it('should not convert primitive properties', () => { - const data = { - cron: '* * * ? * *', - }; - - const model = new Schedule(data); - expect(typeof model.cron).toBe(typeof ''); - }); -}); diff --git a/tests/lib/definitions/util.spec.ts b/tests/lib/definitions/util.spec.ts deleted file mode 100644 index 2ed49dd..0000000 --- a/tests/lib/definitions/util.spec.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { overwriteProperties, overwritePropertyAsPlainType } from '../../../src/lib/definitions/utils'; -import { Properties } from '../../../src/lib/definitions/types'; - -describe('Util ', () => { - describe('overwritePropertyAsPlainType ', () => { - it('should create a copy of data property', () => { - class HasData { - data?: { - key: string; - }; - } - - const source = { - data: { - key: 'action', - }, - } as HasData; - - const target = {} as HasData; - Object.assign(target, source); - overwritePropertyAsPlainType('data', target); - - expect(target.data!.key).toBe('action'); - source.data!.key = 'action2'; - expect(target.data!.key).toBe('action'); - }); - - it('should create a copy of data property', () => { - class HasData { - data?: - | string - | { - [key: string]: any; - }; - } - - const source = { - data: { - key1: 'value1', - }, - } as HasData; - - const target = {} as HasData; - Object.assign(target, source); - overwritePropertyAsPlainType('data', target); - - // @ts-ignore - expect(target!.data['key1']).toBe('value1'); - // @ts-ignore - source!.data['key1'] = 'value2'; - // @ts-ignore - expect(target!.data['key1']).toBe('value1'); - }); - }); - - describe('overwriteProperties ', () => { - class HasProperties { - properties: string | Properties; - } - - it('should create an instance of Basicpropsdef', () => { - const source = { - properties: { - username: 'name', - password: 'pwd', - }, - } as HasProperties; - - const target = Object.assign({}, source); - overwriteProperties(target); - expect(target.properties.constructor.name).toBe('Basicpropsdef'); - }); - - it('should create an instance of Bearerpropsdef', () => { - const source = { - properties: { - token: 'token', - }, - } as HasProperties; - - const target = Object.assign({}, source); - overwriteProperties(target); - expect(target.properties.constructor.name).toBe('Bearerpropsdef'); - }); - - it('should create an instance of Oauth2propsdef', () => { - const source = { - properties: { - grantType: 'password', - clientId: 'cid', - }, - } as HasProperties; - - const target = Object.assign({}, source); - overwriteProperties(target); - expect(target.properties.constructor.name).toBe('Oauth2propsdef'); - }); - - it('should not create an instance of Properties type', () => { - const source = { - properties: 'any value', - } as HasProperties; - - const target = Object.assign({}, source); - overwriteProperties(target); - expect(target.properties.constructor.name).toBe('String'); - }); - }); -}); diff --git a/tests/lib/definitions/workflow-converter-hello-world.json b/tests/lib/definitions/workflow-converter-hello-world.json deleted file mode 100644 index d68b1ee..0000000 --- a/tests/lib/definitions/workflow-converter-hello-world.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "id": "helloworld", - "version": "1.0", - "specVersion": "0.8", - "name": "Hello World Workflow", - "description": "Inject Hello World", - "start": "Hello State", - "states": [ - { - "type": "inject", - "name": "Hello State", - "data": { - "result": "Hello World!" - }, - "end": true - } - ] -} diff --git a/tests/lib/definitions/workflow-converter-hello-world.xxx b/tests/lib/definitions/workflow-converter-hello-world.xxx deleted file mode 100644 index b9aadde..0000000 --- a/tests/lib/definitions/workflow-converter-hello-world.xxx +++ /dev/null @@ -1 +0,0 @@ -{ invalid? \ No newline at end of file diff --git a/tests/lib/definitions/workflow-converter-hello-world.yaml b/tests/lib/definitions/workflow-converter-hello-world.yaml deleted file mode 100644 index e606003..0000000 --- a/tests/lib/definitions/workflow-converter-hello-world.yaml +++ /dev/null @@ -1,12 +0,0 @@ -id: helloworld -version: '1.0' -specVersion": '0.8' -name: Hello World Workflow -description: Inject Hello World -start: Hello State -states: - - type: inject - name: Hello State - data: - result: Hello World! - end: true diff --git a/tests/lib/definitions/workflow-converter-hello-world.yml b/tests/lib/definitions/workflow-converter-hello-world.yml deleted file mode 100644 index e606003..0000000 --- a/tests/lib/definitions/workflow-converter-hello-world.yml +++ /dev/null @@ -1,12 +0,0 @@ -id: helloworld -version: '1.0' -specVersion": '0.8' -name: Hello World Workflow -description: Inject Hello World -start: Hello State -states: - - type: inject - name: Hello State - data: - result: Hello World! - end: true diff --git a/tests/lib/definitions/workflow.spec.ts b/tests/lib/definitions/workflow.spec.ts deleted file mode 100644 index 0ce6f75..0000000 --- a/tests/lib/definitions/workflow.spec.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import { injectstateBuilder, Specification, workflowBuilder } from '../../../src'; -import { readFileSync } from 'fs'; -import { Workflow } from '../../../src/lib/definitions/workflow'; - -describe('workflow fromSource', () => { - const testCases = [ - { - description: 'should generate workflow object from JSON file', - file: './tests/lib/definitions/workflow-converter-hello-world.json', - }, - { - description: 'should generate workflow object from YAML file', - file: './tests/lib/definitions/workflow-converter-hello-world.yaml', - }, - { - description: 'should generate workflow object from YML file', - file: './tests/lib/definitions/workflow-converter-hello-world.yml', - }, - ]; - testCases.forEach((test) => { - it(test.description, function () { - const workflow: Specification.Workflow = Workflow.fromSource(readFileSync(test.file, 'utf-8')); - expect(workflow.id).toBe('helloworld'); - expect(workflow.version).toBe('1.0'); - expect(workflow.name).toBe('Hello World Workflow'); - expect(workflow.description).toBe('Inject Hello World'); - expect(workflow.start).toBe('Hello State'); - }); - }); - - it('should throws error if format is not json or yaml', () => { - expect(() => { - Workflow.fromSource(readFileSync('./tests/lib/definitions/workflow-converter-hello-world.xxx', 'utf-8')); - }).toThrow(new Error('Format not supported')); - }); -}); - -describe('workflow ', () => { - it('should convert non-primitive properties to the desired class', () => { - const data = { - functions: [ - { - name: 'Function', - operation: 'operationFunction', - }, - ], - events: [ - { - name: 'CarBidEvent', - type: 'carBidMadeType', - source: 'carBidEventSource', - }, - ], - retries: [ - { - name: 'retrie', - maxAttempts: 4, - }, - ], - timeouts: { - duration: 'P30M5S', - }, - metadata: { - key: 'value', - }, - }; - - const model = new Workflow(data); - - expect(model.functions![0]!.constructor.name).toBe('Function'); - expect(model.timeouts!.constructor.name).toBe('Timeouts'); - expect(model.metadata!.constructor.name).toBe('Metadata'); - expect(model.events![0]!.constructor.name).toBe('Eventdef'); - expect(model.retries![0]!.constructor.name).toBe('Retrydef'); - }); - - it('should generate JSON from workflow object', () => { - const jsonWorkflow: string = Workflow.toJson( - workflowBuilder() - .id('helloworld') - .version('1.0.0') - .specVersion('0.8') - .name('Hello World Workflow') - .description('Inject Hello World') - .start('Hello State') - .states([ - injectstateBuilder() - .name('Hello State') - .data({ - result: 'Hello World!', - }) - .end(true) - .build(), - ]) - .build() - ); - expect(jsonWorkflow).toBe( - '{' + - '"id":"helloworld",' + - '"name":"Hello World Workflow",' + - '"version":"1.0.0",' + - '"description":"Inject Hello World",' + - '"specVersion":"0.8",' + - '"start":"Hello State",' + - '"states":[' + - '{' + - '"name":"Hello State",' + - '"type":"inject",' + - '"data":{' + - '"result":"Hello World!"' + - '},' + - '"end":true' + - '}' + - ']' + - '}' - ); - }); - - it('should generate YAML from workflow object', () => { - const yamlWorkflow: string = Workflow.toYaml( - workflowBuilder() - .id('helloworld') - .version('1.0.0') - .specVersion('0.8') - .name('Hello World Workflow') - .description('Inject Hello World') - .start('Hello State') - .states([ - injectstateBuilder() - .name('Hello State') - .data({ - result: 'Hello World!', - }) - .end(true) - .build(), - ]) - .build() - ); - expect(yamlWorkflow).toBe( - 'id: helloworld\n' + - 'name: Hello World Workflow\n' + - 'version: 1.0.0\n' + - 'description: Inject Hello World\n' + - "specVersion: '0.8'\n" + - 'start: Hello State\n' + - 'states:\n' + - ' - name: Hello State\n' + - ' type: inject\n' + - ' data:\n' + - ' result: Hello World!\n' + - ' end: true\n' - ); - }); -}); diff --git a/tests/lib/diagram/mermaidDiagram.spec.ts b/tests/lib/diagram/mermaidDiagram.spec.ts deleted file mode 100644 index 5d88f0b..0000000 --- a/tests/lib/diagram/mermaidDiagram.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { MermaidDiagram } from '../../../src/lib/diagram/mermaidDiagram'; -import { Specification } from '../../../src/lib/definitions'; -import fs from 'fs'; - -describe('MermaidDiagram', () => { - it('should create mermaid diagram source code', () => { - const jsonSource = fs.readFileSync('./tests/examples/jobmonitoring.json', 'utf8'); - const actual = new MermaidDiagram(Specification.Workflow.fromSource(jsonSource)).sourceCode(); - expect(actual).toBe(`stateDiagram-v2 -SubmitJob : Submit Job -SubmitJob : type = Operation State -SubmitJob : Action mode = sequential -SubmitJob : Num. of actions = 1 -[*] --> SubmitJob -SubmitJob --> WaitForCompletion - -WaitForCompletion : Wait For Completion -WaitForCompletion : type = Sleep State -WaitForCompletion : Duration = PT5S -WaitForCompletion --> GetJobStatus - -GetJobStatus : Get Job Status -GetJobStatus : type = Operation State -GetJobStatus : Action mode = sequential -GetJobStatus : Num. of actions = 1 -GetJobStatus --> DetermineCompletion - -DetermineCompletion : Determine Completion -DetermineCompletion : type = Switch State -DetermineCompletion : Condition type = data-based -DetermineCompletion --> JobSucceeded : \${ .jobStatus == "SUCCEEDED" } -DetermineCompletion --> JobFailed : \${ .jobStatus == "FAILED" } -DetermineCompletion --> WaitForCompletion : default - -JobSucceeded : Job Succeeded -JobSucceeded : type = Operation State -JobSucceeded : Action mode = sequential -JobSucceeded : Num. of actions = 1 -JobSucceeded --> [*] - -JobFailed : Job Failed -JobFailed : type = Operation State -JobFailed : Action mode = sequential -JobFailed : Num. of actions = 1 -JobFailed --> [*]`); - }); - - it(`should handle compensated by`, () => { - const jsonSource = fs.readFileSync('./tests/lib/diagram/wf_with_compensation.json', 'utf8'); - const actual = new MermaidDiagram(Specification.Workflow.fromSource(jsonSource)).sourceCode(); - - expect(actual).toBe(`stateDiagram-v2 -ItemPurchase : Item Purchase -ItemPurchase : type = Event State -[*] --> ItemPurchase -ItemPurchase --> CancelPurchase : compensated by -ItemPurchase --> [*] - -CancelPurchase : Cancel Purchase -CancelPurchase : type = Operation State -CancelPurchase : usedForCompensation -CancelPurchase : Action mode = sequential -CancelPurchase : Num. of actions = 1 -CancelPurchase --> SendConfirmationPurchaseCancelled - -SendConfirmationPurchaseCancelled : Send Confirmation Purchase Cancelled -SendConfirmationPurchaseCancelled : type = Operation State -SendConfirmationPurchaseCancelled : Action mode = sequential -SendConfirmationPurchaseCancelled : Num. of actions = 1`); - }); -}); diff --git a/tests/lib/diagram/mermaidState.spec.ts b/tests/lib/diagram/mermaidState.spec.ts deleted file mode 100644 index b563b25..0000000 --- a/tests/lib/diagram/mermaidState.spec.ts +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { MermaidState } from '../../../src/lib/diagram/mermaidState'; -import { Specification } from '../../../src/lib/definitions'; - -describe('mermaidState', () => { - it('should create source code for parallel state', () => { - expect( - new MermaidState( - new Specification.Parallelstate( - JSON.parse(` - { - "type": "parallel", - "name": "ParallelExec", - "branches": [ - { - "name": "ShortDelayBranch", - "actions": [{ - "subFlowRef": "shortdelayworkflowid" - }] - }, - { - "name": "LongDelayBranch", - "actions": [{ - "subFlowRef": "longdelayworkflowid" - }] - } - ], - "end": true - }`) - ) - ).sourceCode() - ).toBe(`ParallelExec : Parallel Exec -ParallelExec : type = Parallel State -ParallelExec : Completion type = allOf -ParallelExec : Num. of branches = 2 -ParallelExec --> [*]`); - }); - - it('should create source code for event-based state', () => { - const eventbasedswitch = new Specification.Eventbasedswitchstate( - JSON.parse(`{ - "name": "CheckVisaStatus", - "type": "switch", - "eventConditions": [ - { - "eventRef": "visaApprovedEvent", - "transition": "HandleApprovedVisa" - }, - { - "eventRef": "visaRejectedEvent", - "transition": "HandleRejectedVisa" - } - ], - "eventTimeout": "PT1H", - "defaultCondition": { - "transition": "HandleNoVisaDecision" - } - }`) - ); - const mermaidState = new MermaidState(eventbasedswitch); - expect(mermaidState.sourceCode()).toBe(`CheckVisaStatus : Check Visa Status -CheckVisaStatus : type = Switch State -CheckVisaStatus : Condition type = event-based -CheckVisaStatus --> HandleApprovedVisa : visaApprovedEvent -CheckVisaStatus --> HandleRejectedVisa : visaRejectedEvent -CheckVisaStatus --> HandleNoVisaDecision : default`); - }); - - it('should create source code for data-based state', () => { - const databasedswitch = new Specification.Databasedswitchstate( - JSON.parse(`{ - "type":"switch", - "name":"CheckApplication", - "dataConditions": [ - { - "condition": "\${ .applicants | .age >= 18 }", - "transition": "StartApplication" - }, - { - "condition": "\${ .applicants | .age < 18 }", - "transition": "RejectApplication" - } - ], - "defaultCondition": { - "transition": "RejectApplication" - } - }`) - ); - const mermaidState = new MermaidState(databasedswitch); - expect(mermaidState.sourceCode()).toBe(`CheckApplication : Check Application -CheckApplication : type = Switch State -CheckApplication : Condition type = data-based -CheckApplication --> StartApplication : \${ .applicants | .age >= 18 } -CheckApplication --> RejectApplication : \${ .applicants | .age < 18 } -CheckApplication --> RejectApplication : default`); - }); - - it('should create source code for data-based state with end = true ', () => { - const databasedswitch = new Specification.Databasedswitchstate( - JSON.parse(`{ - "type":"switch", - "name":"CheckApplication", - "dataConditions": [ - { - "condition": "\${ .applicants | .age >= 18 }", - "transition": "StartApplication" - }, - { - "condition": "\${ .applicants | .age < 18 }", - "end": true - } - ], - "defaultCondition": { - "transition": "StartApplication" - } - }`) - ); - const mermaidState = new MermaidState(databasedswitch); - expect(mermaidState.sourceCode()).toBe(`CheckApplication : Check Application -CheckApplication : type = Switch State -CheckApplication : Condition type = data-based -CheckApplication --> StartApplication : \${ .applicants | .age >= 18 } -CheckApplication --> [*] : \${ .applicants | .age < 18 } -CheckApplication --> StartApplication : default`); - }); - - it('should create source code for operation state with end.terminate = true ', () => { - const databasedswitch = new Specification.Databasedswitchstate( - JSON.parse(`{ - "name": "GreetPerson", - "type": "operation", - "actions": [ - { - "name": "greetAction", - "functionRef": { - "refName": "greetFunction", - "arguments": { - "message": "$.greeting $.name" - } - } - } - ], - "end": { - "terminate": true - } - }`) - ); - const mermaidState = new MermaidState(databasedswitch); - expect(mermaidState.sourceCode()).toBe(`GreetPerson : Greet Person -GreetPerson : type = Operation State -GreetPerson : Num. of actions = 1 -GreetPerson --> [*]`); - }); - - it('should create source code for operation state', () => { - const states = new Specification.Operationstate( - JSON.parse(`{ - "type":"operation", - "name":"SubmitJob", - "actions":[ - { - "functionRef": { - "refName": "submitJob", - "arguments": { - "name": "\${ .job.name }" - } - }, - "actionDataFilter": { - "results": "\${ .jobuid }" - } - } - ], - "stateDataFilter": { - "output": "\${ .jobuid }" - }, - "transition": "WaitForCompletion" - }`) - ); - const mermaidState = new MermaidState(states); - expect(mermaidState.sourceCode()).toBe(`SubmitJob : Submit Job -SubmitJob : type = Operation State -SubmitJob : Action mode = sequential -SubmitJob : Num. of actions = 1 -SubmitJob --> WaitForCompletion`); - }); - - it('should create source code for sleep state', () => { - const states = new Specification.Sleepstate( - JSON.parse(`{ - "type": "sleep", - "name": "WaitForCompletion", - "duration": "PT5S", - "transition": "GetJobStatus" - }`) - ); - const mermaidState = new MermaidState(states); - expect(mermaidState.sourceCode()).toBe(`WaitForCompletion : Wait For Completion -WaitForCompletion : type = Sleep State -WaitForCompletion : Duration = PT5S -WaitForCompletion --> GetJobStatus`); - }); - - it('should create source code for foreach state', () => { - const states = new Specification.Foreachstate( - JSON.parse(`{ - "type": "foreach", - "name": "ProvisionOrdersState", - "inputCollection": "\${ .orders }", - "iterationParam": "singleorder", - "outputCollection": "\${ .provisionedOrders }", - "actions": [ - { - "functionRef": { - "refName": "provisionOrderFunction", - "arguments": { - "order": "\${ .singleorder }" - } - } - } - ], - "end": { - "produceEvents": [{ - "eventRef": "provisioningCompleteEvent", - "data": "\${ .provisionedOrders }" - }] - } - }`) - ); - const mermaidState = new MermaidState(states, true); - expect(mermaidState.sourceCode()).toBe(`ProvisionOrdersState : Provision Orders State -ProvisionOrdersState : type = Foreach State -ProvisionOrdersState : Input collection = \${ .orders } -ProvisionOrdersState : Num. of actions = 1 -[*] --> ProvisionOrdersState -ProvisionOrdersState --> [*] : Produced event = [provisioningCompleteEvent]`); - }); - - it('should create source code for callback state', () => { - const states = new Specification.Callbackstate( - JSON.parse(`{ - "name": "CheckCredit", - "type": "callback", - "action": { - "functionRef": { - "refName": "callCreditCheckMicroservice", - "arguments": { - "customer": "\${ .customer }" - } - } - }, - "eventRef": "CreditCheckCompletedEvent", - "timeouts": { - "stateExecTimeout": "PT15M" - }, - "transition": "EvaluateDecision" - }`) - ); - const mermaidState = new MermaidState(states, true); - expect(mermaidState.sourceCode()).toBe(`CheckCredit : Check Credit -CheckCredit : type = Callback State -CheckCredit : Callback function = callCreditCheckMicroservice -CheckCredit : Callback event = CreditCheckCompletedEvent -[*] --> CheckCredit -CheckCredit --> EvaluateDecision`); - }); - - it('should create source code for any state with transition as object', () => { - const states = new Specification.Callbackstate( - JSON.parse(`{ - "name": "CheckCredit", - "type": "callback", - "transition": {"nextState": "EvaluateDecision"} - }`) - ); - const mermaidState = new MermaidState(states); - expect(mermaidState.sourceCode()).toBe(`CheckCredit : Check Credit -CheckCredit : type = Callback State -CheckCredit --> EvaluateDecision`); - }); - - it(`should remove white spaces when creating the state key`, () => { - const databasedswitch = new Specification.Databasedswitchstate( - JSON.parse(`{ - "type":"switch", - "name":"Check Application", - "dataConditions": [ - { - "condition": "\${ .applicants | .age >= 18 }", - "transition": "Start Application" - }, - { - "condition": "\${ .applicants | .age < 18 }", - "end": true - } - ], - "defaultCondition": { - "transition": "Start Application" - } - }`) - ); - const mermaidState = new MermaidState(databasedswitch); - expect(mermaidState.sourceCode()).toBe(`CheckApplication : Check Application -CheckApplication : type = Switch State -CheckApplication : Condition type = data-based -CheckApplication --> StartApplication : \${ .applicants | .age >= 18 } -CheckApplication --> [*] : \${ .applicants | .age < 18 } -CheckApplication --> StartApplication : default`); - }); - - it(`should remove dashes when creating the state key`, () => { - const databasedswitch = new Specification.Databasedswitchstate( - JSON.parse(`{ - "type":"switch", - "name":"check-application", - "dataConditions": [ - { - "condition": "\${ .applicants | .age >= 18 }", - "transition": "start-application" - }, - { - "condition": "\${ .applicants | .age < 18 }", - "end": true - } - ], - "defaultCondition": { - "transition": "start-application" - } - }`) - ); - const mermaidState = new MermaidState(databasedswitch); - expect(mermaidState.sourceCode()).toBe(`CheckApplication : Check Application -CheckApplication : type = Switch State -CheckApplication : Condition type = data-based -CheckApplication --> StartApplication : \${ .applicants | .age >= 18 } -CheckApplication --> [*] : \${ .applicants | .age < 18 } -CheckApplication --> StartApplication : default`); - }); -}); diff --git a/tests/lib/diagram/wf_with_compensation.json b/tests/lib/diagram/wf_with_compensation.json deleted file mode 100644 index 627fcf4..0000000 --- a/tests/lib/diagram/wf_with_compensation.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "id": "newItemPurchaseWorkflow", - "version": "1.0", - "specVersion": "0.8", - "name": "New Item Purchase Workflow", - "states": [ - { - "name": "Item Purchase", - "type": "event", - "onEvents": [ - { - "eventRefs": [ - "New Purchase Event" - ], - "actions": [ - { - "functionRef": { - "refName": "Invoke Debit Customer Function", - "arguments": { - "customerid": "${ .purchase.customerid }", - "amount": "${ .purchase.amount }" - } - } - } - ] - } - ], - "compensatedBy": "Cancel Purchase", - "end": true, - "onErrors": [ - { - "errorRef": "Debit Error", - "end": { - "compensate": true - } - } - ] - }, - { - "name": "Cancel Purchase", - "type": "operation", - "usedForCompensation": true, - "actions": [ - { - "functionRef": { - "refName": "Invoke Credit Customer Function", - "arguments": { - "customerid": "${ .purchase.customerid }", - "amount": "${ .purchase.amount }" - } - } - } - ], - "transition": "Send confirmation purchase cancelled" - }, - { - "name": "Send confirmation purchase cancelled", - "type": "operation", - "actions": [ - { - "functionRef": { - "refName": "Send email", - "arguments": { - "customerid": "${ .purchase.customerid }", - } - } - } - ] - } - ], - "functions": "http://myservicedefs.io/graphqldef.json", - "events": "http://myeventdefs.io/eventdefs.json", - "errors": "file://mydefs/errordefs.json" -} \ No newline at end of file diff --git a/tests/lib/utils.spec.ts b/tests/lib/utils.spec.ts deleted file mode 100644 index a4ba821..0000000 --- a/tests/lib/utils.spec.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { validate } from '../../src/lib/utils'; - -describe('validate', () => { - it('should throw an error containing the provided data', () => { - expect(() => validate('End', 'any text')).toThrowError(/any text/); - }); - - it('should return true for valid objects', () => { - expect(validate('End', false)); - }); - - it('should ignore "normalize" function as additionalProperty', () => { - const functionObj = { - name: 'function', - operation: 'operation', - type: 'rest', - normalize: () => { - //do something - }, - }; - - expect(validate('Function', functionObj)).toBeTruthy(); - }); - - it('should NOT ignore additionalProperties', () => { - const functionObj = { - name: 'function', - operation: 'operation', - type: 'rest', - keyAdditionalProperty: 'anyValue', - }; - - expect(() => validate('Function', functionObj)).toThrowError(/keyAdditionalProperty/); - }); - - it('should throws an error if validator not found', () => { - expect(() => validate('ValidatorNotDefined', {})).toThrowError(); - }); -}); diff --git a/tests/lib/workflow-validator.spec.ts b/tests/lib/workflow-validator.spec.ts deleted file mode 100644 index 9e9c868..0000000 --- a/tests/lib/workflow-validator.spec.ts +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -import { ValidationError, WorkflowValidator } from '../../src'; -import { Workflow } from '../../src/lib/definitions/workflow'; -import * as fs from 'fs'; - -describe('workflow-validator, invalid state', () => { - const validWorkflow = { - id: 'helloworld', - version: '1.0.0', - specVersion: '0.8', - name: 'Hello World Workflow', - description: 'Inject Hello World', - start: 'Hello State', - states: [ - { - name: 'Hello State', - type: 'inject', - data: { - result: 'Hello World!', - }, - end: true, - }, - ], - }; - - it('should return errors instance of ValidationError if the workflow provided is not valid', () => { - const workflowWithEmptyStates = Workflow.fromSource(JSON.stringify(validWorkflow)); - - // @ts-ignore - workflowWithEmptyStates.states = []; - - const workflowValidator = new WorkflowValidator(workflowWithEmptyStates); - - const numErrors = 1; - expectInvalidWorkflow(workflowValidator, numErrors); - expect(workflowValidator.errors[0].message).toMatch('states'); - }); - - it('should check if specVersion match the supported sdk version', () => { - const workflowWithInvalidSpecVersion = Workflow.fromSource(JSON.stringify(validWorkflow)); - workflowWithInvalidSpecVersion.specVersion = '0.1'; - - const workflowValidator = new WorkflowValidator(workflowWithInvalidSpecVersion); - - const numErrors = 1; - expectInvalidWorkflow(workflowValidator, numErrors); - - expect(workflowValidator.errors[0].message).toMatch('specVersion'); - }); - - function expectInvalidWorkflow(workflowValidator: WorkflowValidator, numErrors: number) { - expect(workflowValidator.isValid); - expect(workflowValidator.errors.length).toBe(numErrors); - workflowValidator.errors.forEach((error) => { - expect(error.constructor === ValidationError); - }); - } -}); - -describe('workflow-validator, valid state', () => { - it('should have no errors', () => { - const testFolder = './tests/examples/'; - - const jsonFiles = fs.readdirSync(testFolder).filter((f) => f.endsWith('.json')); - - expect(jsonFiles.length).toBe(9); - - jsonFiles.forEach((f) => { - const file = testFolder + f; - const workflow = Workflow.fromSource(fs.readFileSync(file, 'utf8')); - const workflowValidator = new WorkflowValidator(workflow); - expect(workflowValidator.errors.length).toBe(0); - }); - }); -}); diff --git a/tools/download-schemas-github.ts b/tools/download-schemas-github.ts deleted file mode 100644 index 86cc597..0000000 --- a/tools/download-schemas-github.ts +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - * ARCHIVE: this file is not used atm - * - */ - -import fetch from 'node-fetch'; -import * as path from 'path'; -import { promises as fsPromises } from 'fs'; -import rimraf from 'rimraf'; -import yargs from 'yargs'; -import { version } from '../package.json'; -import { readMeDisclaimer } from './consts'; - -const { writeFile, mkdir } = fsPromises; -const rimrafP = async (f: string): Promise => - new Promise((resolve, reject) => - rimraf(f, (err) => { - if (err) return reject(err); - resolve(); - }) - ); - -/** - * Represents the links of a GitHub content item - */ -interface GithubContentItemLinks { - self: string; - git: string; - html: string; -} - -/** - * Represents the type of a GitHub content item - */ -enum GithubContentItemType { - File = 'file', - Dir = 'dir', -} - -/** - * Represents a GitHub content item - */ -interface GithubContentItem { - name: string; - path: string; - sha: string; - size: number; - url: string; - html_url: string; - git_url: string; - download_url: string; - type: GithubContentItemType; - _links: GithubContentItemLinks; -} - -/** Resets the destination directory */ -const reset = async (destDir: string) => - rimrafP(destDir) - .then(() => mkdir(destDir, { recursive: true })) - .then(() => writeFile(path.resolve(destDir, 'README.md'), readMeDisclaimer)); - -/** - * A promise that list the schemas in the registry - * @param {string} url The registry entry point - * @returns {GithubContentItem[]} The list of items - */ -const listFiles = async (url: string): Promise => - fetch(url) - .then((res: any) => { - if (res.status !== 200) throw `Cannot fetch ${url}`; - return res.json(); - }) - .then((items: GithubContentItem[]) => { - const queue = items.map((i) => { - if (i.type === GithubContentItemType.Dir) return listFiles(i.url); - return Promise.resolve([i]); - }); - return Promise.all(queue); - }) - .then((items: GithubContentItem[][]) => items.reduce((acc, i) => [...acc, ...i])); -/** - * A promise that maps the item paths and their urls - * @param {GithubContentItem[]} items The list of items - * @returns {Map} The path/url map - */ -const mapFilePaths = async (items: GithubContentItem[]): Promise> => { - const filesMap = new Map(); - items.forEach((i) => { - filesMap.set(i.path, i.download_url); - }); - return Promise.resolve(filesMap); -}; -/** - * A promise to download the file at the provided url to the provided dest - * @param {string} url The URL to get the file from - * @param {string} dest The destination path - * @returns {void} - */ -const downloadFile = async (url: string, dest: string): Promise => - mkdir(path.resolve(process.cwd(), 'src/lib', dest.split('/').slice(0, -1).join('/')), { recursive: true }) - .then(() => fetch(url)) - .then((res: any) => res.arrayBuffer()) - .then((data) => writeFile(path.resolve(process.cwd(), 'src/lib', dest), Buffer.from(data))); -/** - * A promise to download the provided files - * @param {Map} filesMap The path/url map to download to/from - * @returns {void} - */ -const downloadFiles = async (filesMap: Map): Promise => - Promise.all(Array.from(filesMap).map(([dest, url]) => downloadFile(url, dest))); - -const argv = yargs(process.argv.slice(2)).argv; -const ref = `${version.split('.').slice(0, -1).join('.')}.x`; -/** The schema registry base url, either provided in args or based on the package version */ -const registryUrl: string = - (argv.registry as string) || - `https://api.github.com/repos/serverlessworkflow/specification/contents/schema?ref=${ref}`; -console.log(`Using registry '${registryUrl}'`); -/** List, map, download */ -reset(path.resolve(process.cwd(), 'src/lib/schema')) - .then(() => listFiles(registryUrl)) - .then(mapFilePaths) - .then(downloadFiles) - .then(console.log.bind(console)) - .catch(console.error.bind(console)); diff --git a/tools/generate-builders.ts b/tools/generate-builders.ts index f9ae0fa..d9d96b8 100644 --- a/tools/generate-builders.ts +++ b/tools/generate-builders.ts @@ -196,5 +196,5 @@ const generate = async (source: string, destDir: string): Promise => { }; const buildersDir = path.resolve(process.cwd(), 'src/lib/builders'); -const definitionSrc = path.resolve(process.cwd(), 'src/lib/schema/types/workflow.ts'); +const definitionSrc = path.resolve(process.cwd(), 'src/lib/definitions/workflow.ts'); generate(definitionSrc, buildersDir).then(console.log.bind(console)).catch(console.error.bind(console)); diff --git a/tools/generate-definitions.ts b/tools/generate-definitions.ts index e58bdfb..ed91d92 100644 --- a/tools/generate-definitions.ts +++ b/tools/generate-definitions.ts @@ -14,14 +14,14 @@ * limitations under the License. */ -import $RefParser from '@apidevtools/json-schema-ref-parser'; -import dtsGenerator, { JsonSchema as dtsGeneratorJsonSchema, parseSchema } from 'dtsgenerator'; +import { compile, JSONSchema, Options } from 'json-schema-to-typescript'; import { promises as fsPromises } from 'fs'; import * as path from 'path'; +import { Project, QuoteKind } from 'ts-morph'; import { fileHeader } from './consts'; -import { capitalizeFirstLetter, mergeDefinitions, mergeSchemas, reset } from './utils'; +import { reset } from './utils'; -const { writeFile } = fsPromises; +const { writeFile, readFile } = fsPromises; /** * Creates the type->path map for the ajv validators @@ -29,90 +29,71 @@ const { writeFile } = fsPromises; * @param {Map} known$Refs The know references map * @returns {void} */ -const createValidatorsPaths = async (dest: string, known$Refs: Map, baseUrl: string): Promise => { - try { - const validatorsPathsCode = - fileHeader + - `/** -* A map of type names and their corresponding schema -*/ -export const validatorsPaths: [string, string][] = [ - ['Workflow', '${baseUrl}/workflow.json'], -${Array.from(known$Refs) - .map( - ([dataType, path]) => - ` ['${capitalizeFirstLetter(dataType)}', '${baseUrl}/${ - path.includes('.json') ? path : 'workflow.json' + path - }'],` - ) - .join('\r\n')} -]`; - const destDir = path.dirname(dest); - await reset(destDir); - await writeFile(dest, validatorsPathsCode); - } catch (ex) { - return Promise.reject(ex); - } -}; +// const createValidatorsPaths = async (dest: string, known$Refs: Map, baseUrl: string): Promise => { +// //todo +// }; /** - * Generates TypeScript equivalent of the provided JSON Schema - * @param {string} source The input JSON Schema path - * @param {string} dest The output TypeScript path - * @param {string[]} additionnalSchemas Optional schemas to gather and merge definitions from + * Removes duplicate declarations from the provided TypeScript code + * see https://github.com/bcherny/json-schema-to-typescript/issues/193 + * @param tsSource The TypeScript source code to remove the duplicates from + * @returns The source code without duplicates */ -const generate = async (source: string, dest: string, additionnalSchemas: string[] = []): Promise => { - try { - const $refParser = new $RefParser(); - const known$Refs = new Map(); - await $refParser.resolve(source); - const paths = [...$refParser.$refs.paths(), ...additionnalSchemas].filter( - (p, index, arr) => arr.indexOf(p) === index && p !== source - ); - await mergeDefinitions($refParser, paths, known$Refs); - mergeSchemas($refParser, known$Refs, $refParser.schema, '#/'); - let generatedTS = ( - await dtsGenerator({ - contents: [parseSchema($refParser.schema as dtsGeneratorJsonSchema)], - config: { - plugins: { - '@dtsgenerator/replace-namespace': { - map: [ - { - from: [true, true, true, true, true], - to: ['ServerlessWorkflow'], - }, - ], - }, - }, - }, - }) - ) - .replace(/WorkflowJson\.Definitions\./g, '') - .replace(/WorkflowJson/g, 'Workflow'); - const lines = generatedTS.split('\n'); - generatedTS = lines.slice(1, lines.length - 2).join('\n'); // removes 'declare namespace' and keeps 'exports'. - const destDir = path.dirname(dest); - await reset(destDir); - await writeFile(dest, fileHeader + generatedTS); - await writeFile(path.resolve(destDir, 'index.ts'), fileHeader + "export * as Specification from './workflow';"); - const validatorsDest = path.resolve(path.dirname(dest), '../../validation/validators-paths.ts'); - const $id = $refParser.schema.$id; - const baseUrl = path.dirname($id); - await createValidatorsPaths(validatorsDest, known$Refs, baseUrl); - return Promise.resolve(); - } catch (ex) { - return Promise.reject(ex); +function removeDuplicateDeclarations(tsSource: string): string { + const project = new Project({ + useInMemoryFileSystem: true, + manipulationSettings: { + quoteKind: QuoteKind.Single, + }, + }); + const sourceFile = project.createSourceFile('declarations.ts', tsSource); + const duplicates = Array.from(sourceFile.getExportedDeclarations()) + .map(([name, _]) => name) + .filter((name) => name.match(/\d$/)); + const newSource = duplicates.reduce( + (src, name) => src.replace(new RegExp(': ' + name, 'g'), ': ' + name.replace(/\d+$/g, '')), + tsSource, + ); + sourceFile.replaceWithText(newSource); + for (const name of duplicates) { + const declaration = sourceFile.getTypeAlias(name) || sourceFile.getInterface(name); + declaration?.remove(); } -}; + sourceFile.formatText(); + return sourceFile.getFullText(); +} + +/** + * Generates a TypeScript file containing type declarations that represent the structure defined in the JSON Schema + * @param srcFile The path to the JSON Schema file + * @param destFile The destination path where the generated TypeScript file will be saved + * @returns A promise that resolves when the TypeScript file has been successfully written + */ +async function generate(srcFile: string, destFile: string): Promise { + const options: Partial = { + customName: (schema: JSONSchema, keyNameFromDefinition: string | undefined) => + schema.$id?.includes('serverlessworkflow.io') ? 'Workflow' : keyNameFromDefinition, + bannerComment: `${fileHeader} + + /***************************************************************************************** + * + * /!\\ This file is computer generated. Any manual modification can and will be lost. /!\\ + * + *****************************************************************************************/ + + `, + unreachableDefinitions: true, + }; + const schemaText = await readFile(srcFile, { encoding: 'utf-8' }); + const schema = JSON.parse(schemaText); + const declarations = await compile(schema, 'Workflow', options); // no idea what "name" is used for... + const destDir = path.dirname(destFile); + await reset(destDir); + await writeFile(destFile, removeDuplicateDeclarations(declarations)); + await writeFile(path.resolve(destDir, 'index.ts'), fileHeader + "export * as Specification from './specification';"); +} const srcFile = path.resolve(process.cwd(), 'src/lib/schema/workflow.json'); -const destFile = 'src/lib/schema/types/workflow.ts'; -/* -const additionnalSchemas = [ - path.resolve(process.cwd(), 'src/lib/schema/common.json'), // should be resolved already, no need to add it manually - path.resolve(process.cwd(), 'src/lib/schema/extensions/kpi.json'), // not linked by workflow, manually added -]; -generate(srcFile, destFile, additionnalSchemas) -*/ +const destFile = path.resolve(process.cwd(), 'src/lib/definitions/specification.ts'); + generate(srcFile, destFile).then(console.log.bind(console)).catch(console.error.bind(console)); diff --git a/tools/generate-merged_json.ts b/tools/generate-merged_json.ts deleted file mode 100644 index 84881d8..0000000 --- a/tools/generate-merged_json.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2021-Present The Serverless Workflow Specification Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import $RefParser from '@apidevtools/json-schema-ref-parser'; -import { promises as fsPromises } from 'fs'; -import * as path from 'path'; -import { URL } from 'url'; -import { schemaDir, mergeDefinitions, mergeSchemas, schemaUrl } from './utils'; - -const { writeFile } = fsPromises; - -/** - * Generate a merged schema `__merged.json` from schemas in schemas directory - * @param schemaUrl {string} The URL to download the schema from //TODO this does not like right, revisit mergeDefinitions - * @param destDir {string} The destination path to save the schema to - * @returns {void} - */ -const execute = async (schemaUrl: URL, destDir: string): Promise => { - try { - const $refParser = new $RefParser(); - await $refParser.resolve(schemaUrl.href); - const externalSchemas = $refParser.$refs - .paths() - .filter((p, index, arr) => arr.indexOf(p) === index && p !== schemaUrl.href); - - const known$Refs = new Map(); - await mergeDefinitions($refParser, externalSchemas, known$Refs); - mergeSchemas($refParser, known$Refs, $refParser.schema, '#/'); - await writeFile(path.resolve(destDir, '__merged.json'), JSON.stringify($refParser.schema, null, 2)); - return Promise.resolve(); - } catch (ex) { - return Promise.reject(ex); - } -}; - -execute(schemaUrl, schemaDir).then(console.log.bind(console)).catch(console.error.bind(console)); diff --git a/tools/utils.ts b/tools/utils.ts index 36ee7cc..facec5c 100644 --- a/tools/utils.ts +++ b/tools/utils.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import $RefParser from '@apidevtools/json-schema-ref-parser'; import { promises as fsPromises } from 'fs'; import * as path from 'path'; -import rimraf from 'rimraf'; +import { rimraf } from 'rimraf'; import { readMeDisclaimer } from './consts'; import { URL } from 'url'; import yargs from 'yargs'; @@ -25,165 +24,21 @@ import { schemaVersion } from '../package.json'; const { writeFile, mkdir } = fsPromises; -/** - * Wraps rimraf into a Promise - * @param f {string} The target to be deleted - * @returns {void} - */ -export const rimrafP = async (f: string): Promise => - new Promise((resolve, reject) => - rimraf(f, (err) => { - if (err) return reject(err); - resolve(); - }) - ); - -/** - * Capitalized the first letter of the provided string - * @param {} value The string to capitalize - * @returns {string} The capitalized string - */ -export const capitalizeFirstLetter = (value: string): string => { - if (!value) return ''; - const transformable = value.trim(); - return transformable[0].toUpperCase() + transformable.slice(1); -}; - -/** - * Tells if the provided objects hold a reference to another definition - * @param {any} obj The object to test - * @returns {boolean} Returns true if the object holds a reference to another schema - */ -export const isRef = (obj: any): boolean => obj && obj.$ref && typeof obj.$ref === typeof ''; - -/** - * Tells if the provided object holds an external reference - * @param {any} obj The object to test - * @returns {boolean} Returns true if the reference hold by the object is external - */ -export const isRefExernal = (obj: any): boolean => obj && obj.$ref && !obj.$ref.startsWith('#'); - -/** - * Gets the property name (key) in the root schema definitions for the provided ref. Used to avoid key collision - * @param {string} $ref The reference path - * @param {Map} known$Refs The know references map - * @returns {string} The corrected property name - */ -export const getPropName = ($ref: string, known$Refs: Map): string => { - const baseName = $ref.split('/').slice(-1)[0]; - let propName = baseName; - let variantIndex = 0; - while (known$Refs.has(propName) && known$Refs.get(propName) !== $ref) { - variantIndex++; - propName = baseName + variantIndex; - } - return propName; -}; - -/** - * Merges the definitions founds in the schemas in path into the root schema's definitions - * @param {$RefParser} $refParser The $RefParser instance of the root schema - * @param {string[]} paths The path to the schemas containing definitions to merge - * @param {Map} known$Refs The know references map - * @param {string[]} parentPaths (internal) The previously known paths - */ -export const mergeDefinitions = async ( - $refParser: $RefParser, - paths: string[], - known$Refs: Map, - parentPaths: string[] = [] -): Promise => { - try { - if (!parentPaths?.length) { - Object.keys($refParser.schema.definitions || {}).forEach((key: string) => { - if (!known$Refs.has(key)) { - known$Refs.set(key, `#/definitions/${key}`); - } - }); - parentPaths = paths; - } - await Promise.all( - paths.map(async (schemaPath: string) => { - const fileName = path.basename(schemaPath); - const schema = await $RefParser.parse(schemaPath); - Object.entries(schema.definitions || {}).forEach(([key, value]) => { - const propName = getPropName(key, known$Refs); - known$Refs.set(propName, `${fileName}#/definitions/${key}`); - $refParser.$refs.set(`#/definitions/${propName}`, value); - }); - const $schemaRefs = await $RefParser.resolve(schemaPath); - const otherPaths = $schemaRefs.paths().filter((p) => !parentPaths.includes(p)); - otherPaths.forEach((p) => parentPaths.push(p)); - await mergeDefinitions($refParser, otherPaths, known$Refs, parentPaths); - }) - ); - } catch (ex) { - return Promise.reject(ex); - } -}; - -/** - * Merges external schemas references into the root schema definitions - * @param {$RefParser} $refParser The $RefParser instance of the root schema - * @param {Map} known$Refs The know references map - * @param {any} target The object to crawl for references - * @param {string} target$Ref The provided target reference path - */ -export const mergeSchemas = ( - $refParser: $RefParser, - known$Refs: Map, - target: any, - target$Ref: string -): void => { - const isRootDocument = target$Ref.startsWith('#'); - // todo ? handle circular refs ? - Object.entries(target) - .filter(([, value]: [string, any]) => value && typeof value === typeof {} && !ArrayBuffer.isView(value)) - .forEach(([key, value]: [string, any]) => { - if (!isRef(value) || (isRootDocument && !isRefExernal(value))) { - const newTargetRef = `${target$Ref.endsWith('/') ? target$Ref : target$Ref + '/'}${key}/`; - mergeSchemas($refParser, known$Refs, value, newTargetRef); - return; - } - if (isRefExernal(value)) { - const propName = getPropName(value.$ref, known$Refs); - if (known$Refs.has(propName)) { - value.$ref = `#/definitions/${propName}`; - return; - } - const referencedSchema = $refParser.$refs.get(value.$ref); - mergeSchemas($refParser, known$Refs, referencedSchema, value.$ref); - known$Refs.set(propName, value.$ref); - value.$ref = `#/definitions/${propName}`; - $refParser.$refs.set(`#/definitions/${propName}`, referencedSchema); - } else if (!isRootDocument) { - const document = target$Ref.split('#')[0]; - const relative$Ref = document + value.$ref; - const propName = getPropName(relative$Ref, known$Refs); - if (known$Refs.has(propName)) { - value.$ref = `#/definitions/${propName}`; - return; - } - const referencedSchema = $refParser.$refs.get(relative$Ref); - mergeSchemas($refParser, known$Refs, referencedSchema, relative$Ref); - known$Refs.set(propName, relative$Ref); - value.$ref = `#/definitions/${propName}`; - $refParser.$refs.set(`#/definitions/${propName}`, referencedSchema); - } - }); -}; - /** Resets the destination directory, recursively deletes everything and adds the README */ export const reset = async (destDir: string) => - rimrafP(destDir) + rimraf(destDir) .then(() => mkdir(destDir, { recursive: true })) .then(() => writeFile(path.resolve(destDir, 'README.md'), readMeDisclaimer)); /** Schemas directory */ export const schemaDir = path.resolve(process.cwd(), 'src/lib/schema'); +const argv = yargs(process.argv.slice(2)) + .options({ + url: { type: 'string' }, + }) + .parseSync(); /** The URL to download the schema from */ export const schemaUrl: URL = new URL( - (yargs(process.argv.slice(2)).argv.url as string) || - `https://raw.githubusercontent.com/serverlessworkflow/specification/${schemaVersion}.x/schema/workflow.json` + argv.url || `https://serverlessworkflow.io/schemas/${schemaVersion}/workflow.json`, );