diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 897deb4..00e3a22 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -13,8 +13,8 @@ A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' -2. Click on '....' -3. Scroll down to '....' +2. Click on '...' +3. Scroll down to '...' 4. See error **Expected behavior** @@ -25,7 +25,7 @@ If applicable, add screenshots to help explain your problem. **Environment (please complete the following information):** - OS: [e.g. iOS] - - Node JS version: [e.g. chrome, safari] + - Node.js version: [e.g. 20.5.0, 10] - Version: [e.g. 1.2.0] **Additional context** diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b559161..382df1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - node-version: [12.x, 14.x, 16.x, 17.x] + node-version: [12.x, 14.x, 16.x, 17.x, 18.x] steps: - uses: actions/checkout@v2 diff --git a/.prettierrc b/.prettierrc index 8c1b1fb..ba0705e 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,5 @@ { - "$schema": "http://json.schemastore.org/prettierrc", + "$schema": "https://json.schemastore.org/prettierrc", "printWidth": 150, "trailingComma": "all", "singleQuote": true, @@ -10,7 +10,6 @@ "requirePragma": false, "proseWrap": "preserve", "plugins": [], - "pluginSearchDirs": [], "insertPragma": false, "endOfLine": "auto", "arrowParens": "avoid", diff --git a/README.md b/README.md index 515cc76..17ec798 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -

Flowed Logo

-

A fast and reliable flow engine for orchestration and more uses in Node.js, Deno and the browser.

-

+

Flowed Logo

+

A fast and reliable flow engine for orchestration and more uses in Node.js, Deno and the browser.

+

License NPM Package Version FOSSA Status diff --git a/SECURITY.md b/SECURITY.md index 96b5ee8..f67dff5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -3,7 +3,7 @@ ## Supported Versions | Version | Supported | -| -------- | ------------------ | +|----------|--------------------| | >= 1.0.0 | :white_check_mark: | | < 1.0.0 | :x: | diff --git a/doc/resolver-library.md b/doc/resolver-library.md index c5f6bc4..68d5f47 100644 --- a/doc/resolver-library.md +++ b/doc/resolver-library.md @@ -109,7 +109,7 @@ Note that the context is not passed as parameter because it is shared from the o **params**: - `flowSpec`: Flow spec to be run as a sub-flow. - `flowParams`: Key-Value object to be used as parameters for the sub-flow. -- `flowExpectedResults`: String array to specified the expected results. +- `flowExpectedResults`: String array to specify the expected results. - `flowResolvers`: Resolvers map to run the sub-flow. **results**: @@ -133,8 +133,8 @@ If one execution fails, the resolver ends with an exception (in both parallel an - `count`: Number of times the task is going to be executed. - `taskParams`: Array of Key-Value objects with params. - `resolverAutomapParams`: Boolean to indicate if params in task are going to be auto-mapped or need explicit mapping. Defaults to false. -- `resolverAutomapResults`: Boolean to indicate if resuts in task are going to be auto-mapped or need explicit mapping. Defaults to false. -- `flowId`: Flow Id to be used in debugging messages. +- `resolverAutomapResults`: Boolean to indicate if results in task are going to be auto-mapped or need explicit mapping. Defaults to false. +- `flowId`: Flow id to be used in debugging messages. - `parallel`: Boolean to specify if the task instances can run in parallel or in sequence (waiting one to finish before starting the next one). **results**: @@ -157,8 +157,8 @@ The task instances can be run in parallel or in sequence. In both cases the orde - `spec`: Task spec. - `params`: Array of Key-Value objects with params. - `automapParams`: Boolean to indicate if params in task are going to be auto-mapped or need explicit mapping. Defaults to false. -- `automapResults`: Boolean to indicate if resuts in task are going to be auto-mapped or need explicit mapping. Defaults to false. -- `flowId`: Flow Id to be used in debugging messages. +- `automapResults`: Boolean to indicate if results in task are going to be auto-mapped or need explicit mapping. Defaults to false. +- `flowId`: Flow id to be used in debugging messages. - `parallel`: Boolean to specify if the task instances can run in parallel or in sequence (waiting one to finish before starting the next one). **results**: diff --git a/doc/tutorial.md b/doc/tutorial.md index be44c3d..b5c2d7d 100644 --- a/doc/tutorial.md +++ b/doc/tutorial.md @@ -1,6 +1,6 @@ # Use Case -> A system needs to verify user locations to limit the access to certail features. +> A system needs to verify user locations to limit the access to certain features. > Depending on the user location, she/he is authorized or not. @@ -312,7 +312,7 @@ In real world, database access, HTTP requests, file operations, etc. will not be So in our example class `LoadAuthLocations`, we wouldn't actually run that way. Instead, you'd need to use the Flowed support for async tasks. -In order to support asynchronic tasks, Flowed takes advantage of `Promise`s. +In order to support asynchronous tasks, Flowed takes advantage of `Promise`s. And that's as easy as returning a Promise that resolves to the expected results. @@ -330,10 +330,10 @@ class LoadAuthLocations { Note that we've added the `async` keyword to `exec`, and we've used the `await` syntax. Also remember that all `async` functions returns a Promise, even when it is not explicit. -According to each flow tasks' dependences, Flowed will run concurrently as many tasks as possible, letting the OS parallelize all the I/O opertions maximizing the performance and abstracting the programmer to manage the tasks dependences and concurrency. +According to each flow tasks' dependencies, Flowed will run concurrently as many tasks as possible, letting the OS parallelize all the I/O operations maximizing the performance and abstracting the programmer to manage the tasks dependencies and concurrency. -## Connect with the outsite +## Connect with the outside To make this thing really useful, we need a way to connect with the outside of the flow. Even when a flow can execute useful tasks without giving a explicit output (writing to databases, etc), it is very usual to get some direct output from the flow. @@ -343,7 +343,7 @@ For example, in this case we want to know if the user is authorized, which is th We will run the flow then, indicating that the expected results are `['isAuthorized']`. -In a similar way, it is very important for flexibility and reusability purposes to provide some way of parametrization for the flows. +In a similar way, it is very important for flexibility and re-usability purposes to provide some way of parametrization for the flows. Analyzing the flow in this example, we can easily see that no task is providing the `'sessionId'`. This is because it will be given from the outside, at the time of the execution. That is, it is a flow parameter. We provide parameters as a name-value mapping like this: diff --git a/package-lock.json b/package-lock.json index f3ca6ec..f77d0bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,26 +14,26 @@ }, "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.2", - "@types/chai": "^4.3.1", - "@types/debug": "^4.1.7", - "@types/mocha": "^9.1.1", + "@types/chai": "^4.3.5", + "@types/debug": "^4.1.8", + "@types/mocha": "^10.0.1", "@types/node": "^20.4.2", - "@typescript-eslint/eslint-plugin": "^5.21.0", - "@typescript-eslint/parser": "^5.21.0", - "chai": "^4.3.6", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "chai": "^4.3.7", "coveralls": "^3.1.1", - "eslint": "^8.14.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-eslint-plugin": "^4.1.0", - "eslint-plugin-mocha": "10.0.3", - "eslint-plugin-prettier": "^4.0.0", - "mocha": "^9.2.2", + "eslint": "^8.45.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-eslint-plugin": "^5.1.0", + "eslint-plugin-mocha": "10.1.0", + "eslint-plugin-prettier": "^5.0.0", + "mocha": "^10.2.0", "nyc": "^15.1.0", - "prettier": "^2.6.2", - "ts-node": "^10.7.0", - "typescript": "^4.6.3", - "webpack": "^5.72.0", - "webpack-cli": "^4.9.2" + "prettier": "^3.0.0", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "webpack": "^5.88.1", + "webpack-cli": "^5.1.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -59,17 +59,89 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.22.9", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", @@ -80,25 +152,25 @@ } }, "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.17.tgz", + "integrity": "sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.17", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.17", + "@babel/types": "^7.22.17", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { @@ -119,12 +191,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.22.15", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -134,22 +206,19 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "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": { @@ -196,28 +265,28 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz", + "integrity": "sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -260,45 +329,45 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -377,9 +446,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -389,33 +458,33 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.17.tgz", + "integrity": "sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.17", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -433,13 +502,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.17.tgz", + "integrity": "sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.15", "to-fast-properties": "^2.0.0" }, "engines": { @@ -493,18 +562,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -543,18 +612,18 @@ } }, "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -700,9 +769,9 @@ } }, "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.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -734,21 +803,15 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "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/@jridgewell/trace-mapping/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==", - "dev": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -784,6 +847,26 @@ "node": ">= 8" } }, + "node_modules/@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -809,9 +892,9 @@ "dev": true }, "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", "dev": true }, "node_modules/@types/debug": { @@ -824,9 +907,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -856,9 +939,9 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", "dev": true }, "node_modules/@types/ms": { @@ -868,15 +951,15 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==", + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", + "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==", "dev": true }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { @@ -1067,12 +1150,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -1220,34 +1297,42 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "dependencies": { - "envinfo": "^7.7.3" + "engines": { + "node": ">=14.15.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, + "engines": { + "node": ">=14.15.0" + }, "peerDependencies": { - "webpack-cli": "4.x.x" + "webpack": "5.x.x", + "webpack-cli": "5.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -1495,6 +1580,15 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1504,6 +1598,18 @@ "node": ">=8" } }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1533,9 +1639,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "funding": [ { @@ -1552,9 +1658,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.11" }, "bin": { @@ -1570,6 +1676,21 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -1604,9 +1725,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001516", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz", - "integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==", + "version": "1.0.30001532", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz", + "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==", "dev": true, "funding": [ { @@ -1630,9 +1751,9 @@ "dev": true }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", @@ -1914,6 +2035,40 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/default-require-extensions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", @@ -1929,6 +2084,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1982,9 +2149,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.462", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.462.tgz", - "integrity": "sha512-ux2LqN9JKRBDKXMT+78jtiBLPiXf+rLtYlsrOg5Qn7uv6Cbg7+9JyIalE3wcqkOdB2wPCUYNWAuL7suKRMHe9w==", + "version": "1.4.513", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz", + "integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==", "dev": true }, "node_modules/emoji-regex": { @@ -2052,27 +2219,27 @@ } }, "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.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.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.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", @@ -2106,9 +2273,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -2118,29 +2285,29 @@ } }, "node_modules/eslint-plugin-eslint-plugin": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-4.4.1.tgz", - "integrity": "sha512-e4jJGw/ezJseAPutnIasBfnO0XMdp0wPD/upBvRtzN5tqMM3xiwXtcCmDyH5NHO79ij7olxpaNGATFqS+5480g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.1.tgz", + "integrity": "sha512-4MGDsG505Ot2TSDSYxFL0cpDo4Y+t6hKB8cfZw9Jx484VjXWDfiYC/A6cccWFtWoOOC0j+wGgQIIb11cdIAMBg==", "dev": true, "dependencies": { "eslint-utils": "^3.0.0", - "estraverse": "^5.2.0" + "estraverse": "^5.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" }, "peerDependencies": { - "eslint": ">=6.0.0" + "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-mocha": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.3.tgz", - "integrity": "sha512-9mM7PZGxfejpjey+MrG0Cu3Lc8MyA5E2s7eUCdHXgS4SY/H9zLuwa7wVAjnEaoDjbBilA+0bPEB+iMO7lBUPcg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", + "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", "dev": true, "dependencies": { "eslint-utils": "^3.0.0", - "ramda": "^0.27.1" + "rambda": "^7.1.0" }, "engines": { "node": ">=14.0.0" @@ -2150,21 +2317,29 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } @@ -2220,9 +2395,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2238,9 +2413,9 @@ "dev": true }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", + "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", @@ -2346,6 +2521,41 @@ "node": ">=0.8.x" } }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/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/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2374,9 +2584,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -2498,16 +2708,17 @@ } }, "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.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.7", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=12.0.0" } }, "node_modules/flatted": { @@ -2584,9 +2795,9 @@ "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, @@ -2639,6 +2850,18 @@ "node": ">=8.0.0" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -2687,9 +2910,9 @@ "dev": true }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2733,15 +2956,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -2841,6 +3055,15 @@ "npm": ">=1.3.7" } }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -2920,12 +3143,12 @@ "dev": true }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=10.13.0" } }, "node_modules/is-binary-path": { @@ -2941,9 +3164,9 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2952,6 +3175,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2982,6 +3220,24 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3060,6 +3316,33 @@ "node": ">=0.10.0" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3144,17 +3427,32 @@ } }, "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-report/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/istanbul-lib-source-maps": { @@ -3172,9 +3470,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -3250,6 +3548,12 @@ "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", @@ -3307,6 +3611,15 @@ "node": ">=0.6.0" } }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -3496,6 +3809,18 @@ "node": ">= 0.6" } }, + "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/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3518,42 +3843,39 @@ } }, "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "dependencies": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", @@ -3566,29 +3888,15 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "balanced-match": "^1.0.0" } }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3602,12 +3910,12 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" @@ -3640,9 +3948,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -3696,6 +4004,33 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -3882,6 +4217,39 @@ "wrappy": "1" } }, + "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": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -4126,15 +4494,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "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" @@ -4208,10 +4576,10 @@ } ] }, - "node_modules/ramda": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "node_modules/rambda": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", + "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", "dev": true }, "node_modules/randombytes": { @@ -4236,15 +4604,15 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 10.13.0" } }, "node_modules/release-zalgo": { @@ -4317,12 +4685,12 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4388,6 +4756,98 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4653,6 +5113,18 @@ "node": ">=8" } }, + "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": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4689,6 +5161,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -4699,9 +5187,9 @@ } }, "node_modules/terser": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.1.tgz", - "integrity": "sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==", + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -4779,6 +5267,18 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -4866,9 +5366,9 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/tsutils": { @@ -4886,6 +5386,12 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4959,6 +5465,15 @@ "node": ">=4.2.0" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -5041,9 +5556,9 @@ } }, "node_modules/webpack": { - "version": "5.88.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", - "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -5088,44 +5603,42 @@ } }, "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "4.x.x || 5.x.x" + "webpack": "5.x.x" }, "peerDependenciesMeta": { "@webpack-cli/generators": { "optional": true }, - "@webpack-cli/migrate": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -5135,12 +5648,12 @@ } }, "node_modules/webpack-cli/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==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=14" } }, "node_modules/webpack-merge": { @@ -5193,9 +5706,9 @@ "dev": true }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "node_modules/wrap-ansi": { @@ -5354,12 +5867,71 @@ } }, "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/compat-data": { @@ -5369,25 +5941,25 @@ "dev": true }, "@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.17.tgz", + "integrity": "sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.17", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.17", + "@babel/types": "^7.22.17", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.3", "semver": "^6.3.1" }, "dependencies": { @@ -5400,25 +5972,25 @@ } }, "@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", "dev": true, "requires": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.22.15", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" } }, "@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "requires": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -5458,25 +6030,25 @@ } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz", + "integrity": "sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.15" } }, "@babel/helper-simple-access": { @@ -5504,36 +6076,36 @@ "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true }, "@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", "dev": true, "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -5596,36 +6168,36 @@ } }, "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", "dev": true }, "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.17.tgz", + "integrity": "sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==", "dev": true, "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.17", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -5639,13 +6211,13 @@ } }, "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.22.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.17.tgz", + "integrity": "sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.15", "to-fast-properties": "^2.0.0" } }, @@ -5686,15 +6258,15 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", "dev": true }, "@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -5726,15 +6298,15 @@ } }, "@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -5839,9 +6411,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==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true }, "@jridgewell/set-array": { @@ -5867,21 +6439,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - }, - "dependencies": { - "@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/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@nodelib/fs.scandir": { @@ -5910,6 +6474,20 @@ "fastq": "^1.6.0" } }, + "@pkgr/utils": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", + "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.3.0", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.6.0" + } + }, "@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -5935,9 +6513,9 @@ "dev": true }, "@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", "dev": true }, "@types/debug": { @@ -5950,9 +6528,9 @@ } }, "@types/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", "dev": true, "requires": { "@types/estree": "*", @@ -5982,9 +6560,9 @@ "dev": true }, "@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", "dev": true }, "@types/ms": { @@ -5994,15 +6572,15 @@ "dev": true }, "@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==", + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", + "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==", "dev": true }, "@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", "dev": true }, "@typescript-eslint/eslint-plugin": { @@ -6104,12 +6682,6 @@ "eslint-visitor-keys": "^3.3.0" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -6257,25 +6829,23 @@ } }, "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "requires": { - "envinfo": "^7.7.3" - } + "requires": {} }, "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, "requires": {} }, @@ -6467,12 +7037,27 @@ "tweetnacl": "^0.14.3" } }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6499,14 +7084,14 @@ "dev": true }, "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", "update-browserslist-db": "^1.0.11" } }, @@ -6516,6 +7101,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "requires": { + "run-applescript": "^5.0.0" + } + }, "caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -6541,9 +7135,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001516", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz", - "integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==", + "version": "1.0.30001532", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz", + "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==", "dev": true }, "caseless": { @@ -6553,9 +7147,9 @@ "dev": true }, "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -6772,6 +7366,28 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "requires": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, "default-require-extensions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", @@ -6781,6 +7397,12 @@ "strip-bom": "^4.0.0" } }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6822,9 +7444,9 @@ } }, "electron-to-chromium": { - "version": "1.4.462", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.462.tgz", - "integrity": "sha512-ux2LqN9JKRBDKXMT+78jtiBLPiXf+rLtYlsrOg5Qn7uv6Cbg7+9JyIalE3wcqkOdB2wPCUYNWAuL7suKRMHe9w==", + "version": "1.4.513", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz", + "integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==", "dev": true }, "emoji-regex": { @@ -6874,27 +7496,27 @@ "dev": true }, "eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.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.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.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", @@ -6925,9 +7547,9 @@ "dev": true }, "eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -6946,39 +7568,40 @@ } }, "eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "requires": {} }, "eslint-plugin-eslint-plugin": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-4.4.1.tgz", - "integrity": "sha512-e4jJGw/ezJseAPutnIasBfnO0XMdp0wPD/upBvRtzN5tqMM3xiwXtcCmDyH5NHO79ij7olxpaNGATFqS+5480g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.1.tgz", + "integrity": "sha512-4MGDsG505Ot2TSDSYxFL0cpDo4Y+t6hKB8cfZw9Jx484VjXWDfiYC/A6cccWFtWoOOC0j+wGgQIIb11cdIAMBg==", "dev": true, "requires": { "eslint-utils": "^3.0.0", - "estraverse": "^5.2.0" + "estraverse": "^5.3.0" } }, "eslint-plugin-mocha": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.3.tgz", - "integrity": "sha512-9mM7PZGxfejpjey+MrG0Cu3Lc8MyA5E2s7eUCdHXgS4SY/H9zLuwa7wVAjnEaoDjbBilA+0bPEB+iMO7lBUPcg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", + "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", "dev": true, "requires": { "eslint-utils": "^3.0.0", - "ramda": "^0.27.1" + "rambda": "^7.1.0" } }, "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" } }, "eslint-scope": { @@ -7017,9 +7640,9 @@ } }, "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { @@ -7075,6 +7698,31 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, + "execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "dependencies": { + "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 + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -7100,9 +7748,9 @@ "dev": true }, "fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -7196,12 +7844,13 @@ "dev": true }, "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", "dev": true, "requires": { - "flatted": "^3.1.0", + "flatted": "^3.2.7", + "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, @@ -7256,9 +7905,9 @@ "dev": true }, "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, "optional": true }, @@ -7292,6 +7941,12 @@ "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 + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -7331,9 +7986,9 @@ "dev": true }, "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -7365,12 +8020,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -7443,6 +8092,12 @@ "sshpk": "^1.7.0" } }, + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true + }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -7498,9 +8153,9 @@ "dev": true }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, "is-binary-path": { @@ -7513,14 +8168,20 @@ } }, "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "requires": { "has": "^1.0.3" } }, + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7542,6 +8203,15 @@ "is-extglob": "^2.1.1" } }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "requires": { + "is-docker": "^3.0.0" + } + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7593,6 +8263,23 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + }, + "dependencies": { + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + } + } + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -7661,14 +8348,25 @@ } }, "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, "requires": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + } } }, "istanbul-lib-source-maps": { @@ -7683,9 +8381,9 @@ } }, "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -7742,6 +8440,12 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -7790,6 +8494,15 @@ "verror": "1.10.0" } }, + "keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -7933,6 +8646,12 @@ "mime-db": "1.52.0" } }, + "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 + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -7949,32 +8668,29 @@ "dev": true }, "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -7986,21 +8702,13 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "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 - } + "balanced-match": "^1.0.0" } }, "js-yaml": { @@ -8013,12 +8721,12 @@ } }, "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } }, "ms": { @@ -8044,9 +8752,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, "natural-compare": { @@ -8088,6 +8796,23 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + }, + "dependencies": { + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + } + } + }, "nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -8240,6 +8965,27 @@ "wrappy": "1" } }, + "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, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } + }, "optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -8417,9 +9163,9 @@ "dev": true }, "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true }, "prettier-linter-helpers": { @@ -8464,10 +9210,10 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "ramda": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "rambda": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", + "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", "dev": true }, "randombytes": { @@ -8489,12 +9235,12 @@ } }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.20.0" } }, "release-zalgo": { @@ -8555,12 +9301,12 @@ "dev": true }, "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "requires": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -8603,6 +9349,70 @@ "glob": "^7.1.3" } }, + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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 + } + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -8791,6 +9601,12 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, + "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 + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -8812,6 +9628,16 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + } + }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -8819,9 +9645,9 @@ "dev": true }, "terser": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.1.tgz", - "integrity": "sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==", + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -8871,6 +9697,12 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -8926,9 +9758,9 @@ } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "tsutils": { @@ -8938,6 +9770,14 @@ "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 + } } }, "tunnel-agent": { @@ -8991,6 +9831,12 @@ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, "update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -9044,9 +9890,9 @@ } }, "webpack": { - "version": "5.88.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.1.tgz", - "integrity": "sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -9076,29 +9922,30 @@ } }, "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", "colorette": "^2.0.14", - "commander": "^7.0.0", + "commander": "^10.0.1", "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", "webpack-merge": "^5.7.3" }, "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==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true } } @@ -9141,9 +9988,9 @@ "dev": true }, "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index 2ce05ca..970a887 100644 --- a/package.json +++ b/package.json @@ -56,26 +56,26 @@ }, "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.2", - "@types/chai": "^4.3.1", - "@types/debug": "^4.1.7", - "@types/mocha": "^9.1.1", + "@types/chai": "^4.3.5", + "@types/debug": "^4.1.8", + "@types/mocha": "^10.0.1", "@types/node": "^20.4.2", - "@typescript-eslint/eslint-plugin": "^5.21.0", - "@typescript-eslint/parser": "^5.21.0", - "chai": "^4.3.6", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "chai": "^4.3.7", "coveralls": "^3.1.1", - "eslint": "^8.14.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-eslint-plugin": "^4.1.0", - "eslint-plugin-mocha": "10.0.3", - "eslint-plugin-prettier": "^4.0.0", - "mocha": "^9.2.2", + "eslint": "^8.45.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-eslint-plugin": "^5.1.0", + "eslint-plugin-mocha": "10.1.0", + "eslint-plugin-prettier": "^5.0.0", + "mocha": "^10.2.0", "nyc": "^15.1.0", - "prettier": "^2.6.2", - "ts-node": "^10.7.0", - "typescript": "^4.6.3", - "webpack": "^5.72.0", - "webpack-cli": "^4.9.2" + "prettier": "^3.0.0", + "ts-node": "^10.9.1", + "typescript": "^4.9.5", + "webpack": "^5.88.1", + "webpack-cli": "^5.1.4" }, "nyc": { "extends": "@istanbuljs/nyc-config-typescript", diff --git a/src/engine/flow-manager.ts b/src/engine/flow-manager.ts index 3b07a60..cb5e74d 100644 --- a/src/engine/flow-manager.ts +++ b/src/engine/flow-manager.ts @@ -73,6 +73,7 @@ export class FlowManager { options: ValueMap = {}, ): Promise { let client: typeof import('http') | typeof import('https') | null = null; + // noinspection HttpUrlsUsage if (flowSpecUrl.startsWith('http://')) { client = http; } else if (flowSpecUrl.startsWith('https://')) { diff --git a/src/engine/flow-state/flow-state.ts b/src/engine/flow-state/flow-state.ts index 7e24f8a..9e8b9c9 100644 --- a/src/engine/flow-state/flow-state.ts +++ b/src/engine/flow-state/flow-state.ts @@ -156,13 +156,11 @@ export abstract class FlowState implements IFlow { } } - public createFinishPromise(): Promise { + public createFinishPromise() { this.runStatus.finishPromise = new Promise((resolve, reject) => { this.runStatus.finishResolve = resolve; this.runStatus.finishReject = reject; }); - - return this.runStatus.finishPromise; } public getResolverForTask(task: Task): TaskResolverExecutor { diff --git a/src/engine/task-process.ts b/src/engine/task-process.ts index 1f4bc5e..7306e8e 100644 --- a/src/engine/task-process.ts +++ b/src/engine/task-process.ts @@ -9,7 +9,7 @@ export class TaskProcess { protected params!: ValueMap; /** - * Process Id + * Process id */ public pid: number; diff --git a/src/engine/task.ts b/src/engine/task.ts index 40bdd74..7f33547 100644 --- a/src/engine/task.ts +++ b/src/engine/task.ts @@ -8,7 +8,10 @@ const ST = require('flowed-st'); export class Task { public runStatus!: TaskRunStatus; - public constructor(public code: string, public spec: TaskSpec) { + public constructor( + public code: string, + public spec: TaskSpec, + ) { this.parseSpec(); } diff --git a/src/types.ts b/src/types.ts index ce8c2ad..07dac37 100644 --- a/src/types.ts +++ b/src/types.ts @@ -78,7 +78,7 @@ export interface FlowedLogEntry { level: string; // 'fatal', 'error', 'warning', 'info', 'debug', 'trace' eventType: string; message: string; - objectId?: string; // instance Id + objectId?: string; // instance id tags?: string[]; extra?: ValueMap; // free form serializable key-value object } diff --git a/test/automapping-deprecated-config.ts b/test/automapping-deprecated-config.ts index 9ac5580..b4a72ce 100644 --- a/test/automapping-deprecated-config.ts +++ b/test/automapping-deprecated-config.ts @@ -18,7 +18,7 @@ describe('resolvers with automap', () => { // @todo Add test for cases where some results mapping is provided and some is automatic const runFlow = async (automapParams?: boolean, automapResults?: boolean) => { - return await FlowManager.run( + return FlowManager.run( { tasks: { T1: { diff --git a/test/automapping.ts b/test/automapping.ts index 881f2e9..8ef80a2 100644 --- a/test/automapping.ts +++ b/test/automapping.ts @@ -18,7 +18,7 @@ describe('resolvers with automap', () => { // @todo Add test for cases where some results mapping is provided and some is automatic const runFlow = async (automapParams?: boolean, automapResults?: boolean) => { - return await FlowManager.run( + return FlowManager.run( { tasks: { T1: { diff --git a/test/edge-cases.ts b/test/edge-cases.ts index 482171b..bc5ccb7 100644 --- a/test/edge-cases.ts +++ b/test/edge-cases.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import { FlowManager, ValueMap } from '../src'; -import { Task } from '../src/engine'; +import { Task } from '../src'; describe('edge cases', () => { it('manually provide unexpected requirement to task must throw an error', async () => { diff --git a/test/examples-inline/apparent-circular-deps.ts b/test/examples-inline/apparent-circular-deps.ts index 05c6c7b..a596aff 100644 --- a/test/examples-inline/apparent-circular-deps.ts +++ b/test/examples-inline/apparent-circular-deps.ts @@ -1,4 +1,4 @@ -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from '../examples/types'; function dummyResolver() { diff --git a/test/examples-inline/dependencies.ts b/test/examples-inline/dependencies.ts index 5196d9c..c3deb86 100644 --- a/test/examples-inline/dependencies.ts +++ b/test/examples-inline/dependencies.ts @@ -1,4 +1,4 @@ -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from '../examples/types'; // noinspection JSUnusedGlobalSymbols diff --git a/test/examples-inline/microservices.ts b/test/examples-inline/microservices.ts index fc68bf2..7284fff 100644 --- a/test/examples-inline/microservices.ts +++ b/test/examples-inline/microservices.ts @@ -1,5 +1,5 @@ import { ValueMap } from '../../src'; -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from '../examples/types'; const callMicroservice = (params: ValueMap) => { diff --git a/test/examples-inline/pythagoras.ts b/test/examples-inline/pythagoras.ts index 519c193..a151f6d 100644 --- a/test/examples-inline/pythagoras.ts +++ b/test/examples-inline/pythagoras.ts @@ -1,5 +1,5 @@ import { ValueMap } from '../../src'; -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from '../examples/types'; // Example of named function used as resolver diff --git a/test/examples-inline/sync-async.ts b/test/examples-inline/sync-async.ts index be0ca37..8e1d8c1 100644 --- a/test/examples-inline/sync-async.ts +++ b/test/examples-inline/sync-async.ts @@ -1,4 +1,4 @@ -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from '../examples/types'; // noinspection JSUnusedGlobalSymbols diff --git a/test/examples/apparent-circular-deps.ts b/test/examples/apparent-circular-deps.ts index f859766..c932737 100644 --- a/test/examples/apparent-circular-deps.ts +++ b/test/examples/apparent-circular-deps.ts @@ -1,5 +1,5 @@ import { ValueMap } from '../../src'; -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; class DummyResolver { diff --git a/test/examples/dependencies.ts b/test/examples/dependencies.ts index 7ae0d7e..c0bb156 100644 --- a/test/examples/dependencies.ts +++ b/test/examples/dependencies.ts @@ -1,5 +1,5 @@ import { ValueMap } from '../../src'; -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; class DummyResolver { diff --git a/test/examples/empty-flow.ts b/test/examples/empty-flow.ts index 0bf2f38..dcac9f7 100644 --- a/test/examples/empty-flow.ts +++ b/test/examples/empty-flow.ts @@ -1,4 +1,4 @@ -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; // noinspection JSUnusedGlobalSymbols diff --git a/test/examples/microservices.ts b/test/examples/microservices.ts index 9db807e..167b373 100644 --- a/test/examples/microservices.ts +++ b/test/examples/microservices.ts @@ -1,5 +1,5 @@ import { ValueMap } from '../../src'; -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; class CallMicroservice { diff --git a/test/examples/no-ready-tasks.ts b/test/examples/no-ready-tasks.ts index 059a908..c3c2f40 100644 --- a/test/examples/no-ready-tasks.ts +++ b/test/examples/no-ready-tasks.ts @@ -1,4 +1,4 @@ -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; // noinspection JSUnusedGlobalSymbols diff --git a/test/examples/no-tasks.ts b/test/examples/no-tasks.ts index 9000021..e998138 100644 --- a/test/examples/no-tasks.ts +++ b/test/examples/no-tasks.ts @@ -1,4 +1,4 @@ -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; // noinspection JSUnusedGlobalSymbols diff --git a/test/examples/pythagoras.ts b/test/examples/pythagoras.ts index 9c8fe45..ec882d0 100644 --- a/test/examples/pythagoras.ts +++ b/test/examples/pythagoras.ts @@ -1,5 +1,5 @@ import { ValueMap } from '../../src'; -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; class Sqr { diff --git a/test/examples/sync-async.ts b/test/examples/sync-async.ts index 51e7f16..f5965cc 100644 --- a/test/examples/sync-async.ts +++ b/test/examples/sync-async.ts @@ -1,5 +1,5 @@ import { ValueMap } from '../../src'; -import { FlowManager } from '../../src/engine'; +import { FlowManager } from '../../src'; import { ExampleFunction } from './types'; class TimerResolver { diff --git a/test/flow-manager.ts b/test/flow-manager.ts index 079f7e5..537ebad 100644 --- a/test/flow-manager.ts +++ b/test/flow-manager.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import { TaskResolverMap, ValueMap } from '../src'; -import { FlowManager } from '../src/engine'; -import { FlowSpec } from '../src/engine'; +import { FlowManager } from '../src'; +import { FlowSpec } from '../src'; class DummyResolver { public async exec(): Promise { diff --git a/test/flow-pausing.ts b/test/flow-pausing.ts index a146d80..fe4fe5c 100644 --- a/test/flow-pausing.ts +++ b/test/flow-pausing.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import rawDebug from '../src/debug'; import { ValueMap } from '../src'; -import { Flow, Task } from '../src/engine'; +import { Flow, Task } from '../src'; const debug = rawDebug('test'); describe('the flow', () => { diff --git a/test/flow-states.ts b/test/flow-states.ts index 8d35da2..76b891e 100644 --- a/test/flow-states.ts +++ b/test/flow-states.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { Flow } from '../src/engine'; +import { Flow } from '../src'; // @todo Add test to pause flow without tasks // @todo Add test to stop flow without tasks diff --git a/test/flow-stopping.ts b/test/flow-stopping.ts index f4c0dc8..5f58290 100644 --- a/test/flow-stopping.ts +++ b/test/flow-stopping.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import { ValueMap } from '../src'; -import { Flow, Task } from '../src/engine'; +import { Flow, Task } from '../src'; describe('the flow', () => { const text1 = '(text1)'; diff --git a/test/resolver-library-builtin.ts b/test/resolver-library-builtin.ts index 14d12db..44abbec 100644 --- a/test/resolver-library-builtin.ts +++ b/test/resolver-library-builtin.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; import { ValueMap } from '../src'; -import { FlowManager } from '../src/engine'; +import { FlowManager } from '../src'; describe('the ResolverLibrary', () => { it('runs noop resolver without mapping', () => { @@ -105,7 +105,7 @@ describe('the ResolverLibrary', () => { } const runFlow = async (testCondition: boolean) => { - return await FlowManager.run( + return FlowManager.run( { tasks: { if: { diff --git a/test/resolver-library.ts b/test/resolver-library.ts index 433f7f8..0a3a1d7 100644 --- a/test/resolver-library.ts +++ b/test/resolver-library.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import { Task, ValueMap, WaitResolver } from '../src'; -import { FlowManager } from '../src/engine'; +import { FlowManager } from '../src'; import * as ResolverLibrary from '../src/resolver-library'; -import { TaskResolver } from '../src/types'; +import { TaskResolver } from '../src'; import rawDebug from '../src/debug'; const debug = rawDebug('test'); @@ -115,7 +115,7 @@ describe('the ResolverLibrary', () => { } const runFlow = async (testCondition: boolean) => { - return await FlowManager.run( + return FlowManager.run( { tasks: { if: { @@ -188,7 +188,7 @@ describe('the ResolverLibrary', () => { } const runFlow = async (testCondition: boolean) => { - return await FlowManager.run( + return FlowManager.run( { tasks: { if: { @@ -259,7 +259,7 @@ describe('the ResolverLibrary', () => { } const runFlow = async (testCondition: boolean) => { - return await FlowManager.run( + return FlowManager.run( { tasks: { if: { diff --git a/test/serialization.ts b/test/serialization.ts index 58a1881..afcd397 100644 --- a/test/serialization.ts +++ b/test/serialization.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import rawDebug from '../src/debug'; import { Flow, ValueMap } from '../src'; -import { Task } from '../src/engine'; +import { Task } from '../src'; const debug = rawDebug('test'); describe('a flow state can be', () => { diff --git a/test/task-repeater.ts b/test/task-repeater.ts index 5e556fc..eeed36f 100644 --- a/test/task-repeater.ts +++ b/test/task-repeater.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import rawDebug from '../src/debug'; import { ValueMap } from '../src'; -import { FlowManager } from '../src/engine'; +import { FlowManager } from '../src'; import * as ResolverLibrary from '../src/resolver-library'; const debug = rawDebug('test'); @@ -51,10 +51,13 @@ describe('the ResolverLibrary / task repeater', () => { debug('Starts', rnd); return new Promise(resolve => { - setTimeout(() => { - debug('This is a delayed text:', params.someValue, rnd); - resolve({}); - }, Math.ceil(Math.random() * 20)); + setTimeout( + () => { + debug('This is a delayed text:', params.someValue, rnd); + resolve({}); + }, + Math.ceil(Math.random() * 20), + ); }); } } diff --git a/web/flowed.js b/web/flowed.js index 95330c4..12e7b85 100644 --- a/web/flowed.js +++ b/web/flowed.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Flowed=t():e.Flowed=t()}(self,(function(){return e={865:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=s(227),o={};t.default=e=>{let t=o[e];return void 0===t&&(t=(0,r.default)(`flowed:${e}`),o[e]=t),t}},155:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowManager=void 0;const r=s(673),o=s(883),n=s(316),i=s(167);class a{static run(e,t={},s=[],r={},o={},n={}){return new i.Flow(e).start(t,s,r,o,n)}static runFromString(e,t={},s=[],r={},o={},n={}){return new Promise(((i,u)=>{try{const l=JSON.parse(e);a.run(l,t,s,r,o,n).then(i,u)}catch(e){u(e)}}))}static runFromFile(e,t={},s=[],o={},n={},i={}){return new Promise(((u,l)=>{(0,r.readFile)(e,"utf8",((e,r)=>{e?l(e):a.runFromString(r,t,s,o,n,i).then(u,l)}))}))}static runFromUrl(e,t={},s=[],r={},i={},u={}){let l=null;if(e.startsWith("http://")?l=o:e.startsWith("https://")&&(l=n),null===l){let t=null;const s=e.match(/^([a-zA-Z]+):/);return Array.isArray(s)&&2===s.length?(t=s[1],Promise.reject(new Error(`Protocol not supported: ${t}. Supported protocols are: [http, https]`))):Promise.reject(new Error(`Invalid URL: ${e}`))}return new Promise(((o,n)=>{l.get(e,(e=>{var l;const{statusCode:c}=e,d=null!==(l=e.headers["content-type"])&&void 0!==l?l:"application/json";let p;if(200!==c?p=new Error(`Request failed with status code: ${c}`):/^application\/json/.test(d)||/^text\/plain/.test(d)||(p=new Error(`Invalid content-type. Expected application/json or text/plain but received ${d}`)),p)n(p);else{e.setEncoding("utf8");let l="";e.on("data",(e=>{l+=e})),e.on("end",(()=>{a.runFromString(l,t,s,r,i,u).then(o,n)}))}})).on("error",(e=>{n(e)}))}))}static installPlugin(e){if(e.resolverLibrary)for(const[t,s]of Object.entries(e.resolverLibrary))this.plugins.resolvers[t]=s}static installLogger(e){this.logger=e}static log(e){null!==a.logger&&a.logger.log(e)}}t.FlowManager=a,a.plugins={resolvers:{}},a.logger=null},875:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowRunStatus=void 0;const r=s(985),o=s(871),n=s(851),i=s(413);class a{constructor(e,t,s){this.tasksReady=[],this.tasksByReq={},this.resolvers={},this.expectedResults=[],this.results={},this.context={},this.runOptions={},this.flow=e,this.processManager=new n.ProcessManager,this.id=a.nextId,a.nextId=(a.nextId+1)%Number.MAX_SAFE_INTEGER,this.states={Ready:new o.FlowReady(this),Running:new o.FlowRunning(this),Finished:new o.FlowFinished(this),Pausing:new o.FlowPausing(this),Paused:new o.FlowPaused(this),Stopping:new o.FlowStopping(this),Stopped:new o.FlowStopped(this)},this.state=this.states[r.FlowStateEnum.Ready],this.initRunStatus(t,s)}initRunStatus(e,t){var s,r,o,n,a;this.spec=e,this.tasks={};const u=[];for(const[e,t]of Object.entries(null!==(s=this.spec.tasks)&&void 0!==s?s:{}))u.push(...null!==(r=t.provides)&&void 0!==r?r:[]),this.tasks[e]=new i.Task(e,t);this.taskProvisions=Array.from(new Set(u)),this.options=Object.assign({},null!==(o=this.spec.configs)&&void 0!==o?o:{},null!==(n=this.spec.options)&&void 0!==n?n:{}),Object.prototype.hasOwnProperty.call(this.spec,"configs")&&this.flow.log({m:"DEPRECATED: 'configs' field in flow spec. Use 'options' instead.",l:"w"}),this.tasksByReq={},this.tasksReady=[];for(const e of Object.values(this.tasks)){e.resetRunStatus(),e.isReadyToRun()&&this.tasksReady.push(e);const t=null!==(a=e.spec.requires)&&void 0!==a?a:[];for(const s of t)void 0===this.tasksByReq[s]&&(this.tasksByReq[s]={}),this.tasksByReq[s][e.code]=e}this.results={},t&&this.fromSerializable(t)}fromSerializable(e){this.id=e.id,this.processManager.nextProcessId=e.nextProcessId,this.processManager.processes=[],this.tasksReady=e.tasksReady.map((e=>this.tasks[e])),this.tasksByReq={};for(const[t,s]of Object.entries(e.tasksByReq))this.tasksByReq[t]=s.reduce(((e,t)=>(e[t]=this.tasks[t],e)),{});this.taskProvisions=JSON.parse(JSON.stringify(e.taskProvisions)),this.expectedResults=JSON.parse(JSON.stringify(e.expectedResults)),this.results=JSON.parse(JSON.stringify(e.results)),this.context=JSON.parse(JSON.stringify(e.context)),this.options=JSON.parse(JSON.stringify(e.options));for(const[t,s]of Object.entries(e.taskStatuses))this.tasks[t].setSerializableState(s)}toSerializable(){const e={id:this.id,nextProcessId:this.processManager.nextProcessId,tasksReady:this.tasksReady.map((e=>e.code)),tasksByReq:{},taskProvisions:JSON.parse(JSON.stringify(this.taskProvisions)),expectedResults:JSON.parse(JSON.stringify(this.expectedResults)),results:JSON.parse(JSON.stringify(this.results)),context:{},options:JSON.parse(JSON.stringify(this.options)),taskStatuses:{}},t=Object.assign({},this.context);delete t.$flowed,e.context=JSON.parse(JSON.stringify(t));for(const[t,s]of Object.entries(this.tasksByReq))e.tasksByReq[t]=Object.keys(s);for(const[t,s]of Object.entries(this.tasks))e.taskStatuses[t]=JSON.parse(JSON.stringify(s.getSerializableState()));return e}}t.FlowRunStatus=a,a.nextId=1},389:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowFinished=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Finished}reset(){this.setState(o.FlowStateEnum.Ready),this.runStatus.initRunStatus(this.runStatus.spec)}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowFinished=n},578:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowPaused=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Paused}resume(){return this.setState(o.FlowStateEnum.Running),this.createFinishPromise(),this.startReadyTasks(),this.runStatus.state.isRunning()||this.runStatus.state.finished(),this.runStatus.finishPromise}stop(){return this.setState(o.FlowStateEnum.Stopping),Promise.resolve(this.getResults())}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowPaused=n},547:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowPausing=void 0;const r=s(985),o=s(823);class n extends o.FlowState{getStateCode(){return r.FlowStateEnum.Pausing}paused(e){this.setState(r.FlowStateEnum.Paused),e?(this.log({n:this.runStatus.id,m:"Flow paused with error.",e:"FP"}),this.execFinishReject(e)):(this.log({n:this.runStatus.id,m:"Flow paused.",e:"FP"}),this.execFinishResolve())}postProcessFinished(e,t){this.runStatus.state.paused(e)}}t.FlowPausing=n},106:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowReady=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Ready}start(e,t,s,r,n={}){return this.setRunOptions(n),this.log({n:this.runStatus.id,m:"Flow started with params: %O",mp:e,e:"FS"}),this.setState(o.FlowStateEnum.Running),this.setExpectedResults([...t]),this.setResolvers(s),this.setContext(r),this.supplyParameters(e),this.createFinishPromise(),this.startReadyTasks(),this.runStatus.state.isRunning()||this.runStatus.state.finished(),this.runStatus.finishPromise}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowReady=n},873:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowRunning=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Running}pause(){return this.setState(o.FlowStateEnum.Pausing),this.runStatus.finishPromise}stop(){return this.setState(o.FlowStateEnum.Stopping),this.runStatus.finishPromise}finished(e=!1){this.setState(o.FlowStateEnum.Finished),e?(this.log({n:this.runStatus.id,m:"Flow finished with error. Results: %O",mp:this.getResults(),l:"e",e:"FF"}),this.execFinishReject(e)):(this.log({n:this.runStatus.id,m:"Flow finished with results: %O",mp:this.getResults(),e:"FF"}),this.execFinishResolve())}postProcessFinished(e,t){e&&t||this.runStatus.state.startReadyTasks(),this.runStatus.state.isRunning()||this.runStatus.state.finished(e)}}t.FlowRunning=n},823:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowState=void 0;const r=s(865),o=s(582),n=s(985),i=s(155);class a{constructor(e){this.runStatus=e}start(e,t,s,r,o={}){throw this.createTransitionError(n.FlowTransitionEnum.Start)}finished(e=!1){throw this.createTransitionError(n.FlowTransitionEnum.Finished)}pause(){throw this.createTransitionError(n.FlowTransitionEnum.Pause)}paused(e=!1){throw this.createTransitionError(n.FlowTransitionEnum.Paused)}resume(){throw this.createTransitionError(n.FlowTransitionEnum.Resume)}stop(){throw this.createTransitionError(n.FlowTransitionEnum.Stop)}stopped(e=!1){throw this.createTransitionError(n.FlowTransitionEnum.Stopped)}reset(){throw this.createTransitionError(n.FlowTransitionEnum.Reset)}execFinishResolve(){this.runStatus.finishResolve(this.runStatus.results)}execFinishReject(e){this.runStatus.finishReject(e)}isRunning(){return this.runStatus.processManager.runningCount()>0}setExpectedResults(e){const t=e.filter((e=>!this.runStatus.taskProvisions.includes(e)));if(t.length>0){const e=`The results [${t.join(", ")}] are not provided by any task`;if(this.runStatus.options.throwErrorOnUnsolvableResult)throw new Error(e);this.log({m:e,l:"w"})}this.runStatus.expectedResults=[...e]}getResults(){return this.runStatus.results}setResolvers(e){this.runStatus.resolvers=e}setContext(e){this.runStatus.context=Object.assign({$flowed:{getResolverByName:this.getResolverByName.bind(this),getResolvers:this.getResolvers.bind(this),processManager:this.runStatus.processManager,flow:this.runStatus.flow}},e)}setRunOptions(e){this.runStatus.runOptions=Object.assign({debugKey:"flow",instanceId:null,logFields:{}},e)}supplyParameters(e){for(const[t,s]of Object.entries(e))this.runStatus.state.supplyResult(t,s)}createFinishPromise(){return this.runStatus.finishPromise=new Promise(((e,t)=>{this.runStatus.finishResolve=e,this.runStatus.finishReject=t})),this.runStatus.finishPromise}getResolverForTask(e){const t=e.getResolverName(),s=this.getResolverByName(t);if(null===s)throw new Error(`Task resolver '${t}' for task '${e.code}' has no definition. Defined custom resolvers are: [${Object.keys(this.runStatus.resolvers).join(", ")}].`);return s}getResolverByName(e){const t=this.runStatus.resolvers;return void 0!==t[e]?t[e]:void 0!==i.FlowManager.plugins.resolvers[e]?i.FlowManager.plugins.resolvers[e]:void 0!==a.builtInResolvers[e]?a.builtInResolvers[e]:null}getResolvers(){const e=this.runStatus.resolvers,t=i.FlowManager.plugins.resolvers,s=a.builtInResolvers;return Object.assign(Object.assign(Object.assign({},s),t),e)}supplyResult(e,t){if(void 0!==this.runStatus.tasksByReq[e]){const s=this.runStatus.tasksByReq[e],r=Object.keys(s);for(const o of r){const r=s[o];r.supplyReq(e,t),r.isReadyToRun()&&this.runStatus.tasksReady.push(r)}}this.runStatus.expectedResults.indexOf(e)>-1&&(this.runStatus.results[e]=t)}getStateInstance(e){return this.runStatus.states[e]}startReadyTasks(){const e=this.runStatus.tasksReady;this.runStatus.tasksReady=[];for(const t of e){const e=this.runStatus.state.getResolverForTask(t),s=this.runStatus.processManager.createProcess(t,e,this.runStatus.context,!!this.runStatus.options.resolverAutomapParams,!!this.runStatus.options.resolverAutomapResults,this.runStatus.id,this.debug,this.log.bind(this)),r=e=>{this.processFinished(s,e,!0)};s.run().then((()=>{this.processFinished(s,!1,!0)}),r).catch(r),this.log({n:this.runStatus.id,m:`Task '${t.code}(${t.getResolverName()})' started, params: %O`,mp:s.getParams(),e:"TS",pid:s.pid,task:{code:t.code,type:t.getResolverName()}})}}setState(e){const t=this.runStatus.state.getStateCode();this.runStatus.state=this.getStateInstance(e),this.log({n:this.runStatus.id,m:`Changed flow state from '${t}' to '${e}'`,l:"d",e:"FC"})}getSerializableState(){throw this.createMethodError("getSerializableState")}processFinished(e,t,s){var r;this.runStatus.processManager.removeProcess(e);const o=e.task,n=o.code,i=o.spec,a=null!==(r=i.provides)&&void 0!==r?r:[],u=o.getResults(),l=Object.prototype.hasOwnProperty.call(i,"defaultResult");t?this.log({n:this.runStatus.id,m:`Error in task '${n}', results: %O`,mp:u,l:"e",e:"TF",pid:e.pid,task:{code:o.code,type:o.getResolverName()}}):this.log({n:this.runStatus.id,m:`Finished task '${n}', results: %O`,mp:u,e:"TF",pid:e.pid,task:{code:o.code,type:o.getResolverName()}});for(const e of a)Object.prototype.hasOwnProperty.call(u,e)?this.runStatus.state.supplyResult(e,u[e]):l?this.runStatus.state.supplyResult(e,i.defaultResult):this.log({n:this.runStatus.id,m:`Expected value '${e}' was not provided by task '${n}' with resolver '${o.getResolverName()}'. Consider using the task field 'defaultResult' to provide values by default.`,l:"w"});this.runStatus.state.postProcessFinished(t,s)}postProcessFinished(e,t){}createTransitionError(e){return new Error(`Cannot execute transition ${e} in current state ${this.getStateCode()}.`)}createMethodError(e){return new Error(`Cannot execute method ${e} in current state ${this.getStateCode()}.`)}debug(e,...t){const s=(null==this?void 0:this.runStatus)&&"string"==typeof this.runStatus.runOptions.debugKey?this.runStatus.runOptions.debugKey:"init";(0,r.default)(s)(e,...t)}static formatDebugMessage({n:e,m:t,l:s,e:r}){var o;const n="w"===s?"⚠️ ":"";let i=null!==(o={FS:"▶ ",FF:"✔ ",TS:" ‣ ",TF:" ✓ ",FC:" ⓘ ",FT:"◼ ",FP:"⏸ "}[r||""])&&void 0!==o?o:"";return"TF"===r&&["e","f"].includes(s||"")?i=" ✗":"FF"===r&&["e","f"].includes(s||"")&&(i="✘"),`[${e}] ${n+i}${t}`}static createLogEntry({n:e,m:t,mp:s,l:r,e:o,pid:n,task:i},a){let u={level:(e=>{switch(e=e||"i"){case"e":return"error";case"w":return"warning";case"i":return"info";case"d":return"debug";default:throw new Error(`Not supported error level: "${e}"`)}})(r),eventType:(e=>{switch(e){case"TS":return"Task.Started";case"TF":return"Task.Finished";case"FC":return"Flow.StateChanged";case"FS":return"Flow.Started";case"FF":return"Flow.Finished";case"FT":return"Flow.Stopped";case"FP":return"Flow.Paused";default:return"General"}})(o),message:((e,t)=>{if(t){const s=JSON.stringify(t);return e.replace("%O",s.length>100?s.slice(0,97)+"...":s)}return e})(t,s),timestamp:new Date,extra:{pid:n,task:i,debugId:e,values:JSON.stringify(s)}};return a&&(u.objectId=a.runOptions.instanceId,u=Object.assign(a.runOptions.logFields,u)),u}log({n:e,m:t,mp:s,l:r,e:o,pid:n,task:u}){this.debug(a.formatDebugMessage({n:e,m:t,mp:s,l:r,e:o}),[s]),i.FlowManager.log(a.createLogEntry({n:e,m:t,mp:s,l:r,e:o,pid:n,task:u},this.runStatus))}}t.FlowState=a,a.builtInResolvers={"flowed::Noop":o.NoopResolver,"flowed::Echo":o.EchoResolver,"flowed::ThrowError":o.ThrowErrorResolver,"flowed::Conditional":o.ConditionalResolver,"flowed::Wait":o.WaitResolver,"flowed::SubFlow":o.SubFlowResolver,"flowed::Repeater":o.RepeaterResolver,"flowed::Loop":o.LoopResolver,"flowed::ArrayMap":o.ArrayMapResolver,"flowed::Stop":o.StopResolver,"flowed::Pause":o.PauseResolver}},784:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowStopped=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Stopped}reset(){this.setState(o.FlowStateEnum.Ready),this.runStatus.initRunStatus(this.runStatus.spec)}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowStopped=n},17:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowStopping=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Stopping}stopped(e=!1){this.setState(o.FlowStateEnum.Stopped),e?(this.log({n:this.runStatus.id,m:"Flow stopped with error.",e:"FT"}),this.execFinishReject(e)):(this.log({n:this.runStatus.id,m:"Flow stopped.",e:"FT"}),this.execFinishResolve())}postProcessFinished(e,t){this.runStatus.state.stopped(e)}}t.FlowStopping=n},871:function(e,t,s){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var o=Object.getOwnPropertyDescriptor(t,s);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,o)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),o=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||r(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),o(s(823),t),o(s(106),t),o(s(389),t),o(s(578),t),o(s(547),t),o(s(873),t),o(s(784),t),o(s(17),t)},167:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Flow=void 0;const r=s(875),o=s(865),n=s(155),i=s(871);t.Flow=class{constructor(e,t){this.runStatus=new r.FlowRunStatus(this,null!=e?e:{},t)}getStateCode(){return this.runStatus.state.getStateCode()}start(e={},t=[],s={},r={},o={}){return this.runStatus.state.start(e,t,s,r,o)}pause(){return this.runStatus.state.pause()}resume(){return this.runStatus.state.resume()}stop(){return this.runStatus.state.stop()}reset(){this.runStatus.state.reset()}getSerializableState(){return this.runStatus.state.getSerializableState()}debug(e,...t){(null==this?void 0:this.runStatus)?this.runStatus.state.debug(e,...t):(0,o.default)("init")(e,...t)}log({n:e,m:t,mp:s,l:r,e:o}){this.debug(i.FlowState.formatDebugMessage({n:e,m:t,mp:s,l:r,e:o}),[s]),n.FlowManager.log(i.FlowState.createLogEntry({n:e,m:t,mp:s,l:r,e:o},this.runStatus))}}},454:function(e,t,s){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var o=Object.getOwnPropertyDescriptor(t,s);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,o)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),o=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||r(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),o(s(155),t),o(s(167),t),o(s(580),t),o(s(413),t)},851:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProcessManager=void 0;const r=s(8);t.ProcessManager=class{constructor(){this.nextProcessId=1,this.processes=[]}createProcess(e,t,s,o,n,i,a,u){this.nextProcessId++;const l=new r.TaskProcess(this,this.nextProcessId,e,t,s,o,n,i,a,u);return this.processes.push(l),l}runningCount(){return this.processes.length}removeProcess(e){const t=this.processes.findIndex((t=>t.id===e.id));this.processes.splice(t,1)}}},580:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaskSpecMap=void 0,t.TaskSpecMap=class{}},8:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaskProcess=void 0;class s{constructor(e,t,r,o,n,i,a,u,l,c){this.manager=e,this.id=t,this.task=r,this.taskResolverExecutor=o,this.context=n,this.automapParams=i,this.automapResults=a,this.flowId=u,this.debug=l,this.log=c,this.pid=s.nextPid,s.nextPid=(s.nextPid+1)%Number.MAX_SAFE_INTEGER}getParams(){return this.params}run(){this.params=this.task.mapParamsForResolver(this.task.runStatus.solvedReqs.popAll(),this.automapParams,this.flowId,this.log);let e,t=this.taskResolverExecutor;if(this.taskResolverExecutor.prototype&&this.taskResolverExecutor.prototype.exec){const s=new this.taskResolverExecutor;t=s.exec,e=s}return new Promise(((s,r)=>{const o=e=>{this.task.runStatus.solvedResults=this.task.mapResultsFromResolver(e,this.automapResults,this.flowId,this.log),s(this.task.runStatus.solvedResults)},n=e=>{r(e)};let i;try{i=t.call(e,this.params,this.context,this.task,this.debug,this.log)}catch(e){n(e)}const a="object"==typeof i,u=i&&i.constructor&&"Promise"===i.constructor.name;if(!a)throw new Error(`Expected resolver for task '${this.task.code}' to return an object or Promise that resolves to object. Returned value is of type '${typeof i}'.`);u?i.then(o).catch(n):o(i)}))}}t.TaskProcess=s,s.nextPid=1},413:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Task=void 0;const r=s(405),o=s(829);t.Task=class{constructor(e,t){this.code=e,this.spec=t,this.parseSpec()}getResolverName(){var e;return(null!==(e=this.spec.resolver)&&void 0!==e?e:{name:"flowed::Noop"}).name}getSerializableState(){const e=JSON.parse(JSON.stringify(this.runStatus));return e.solvedReqs=this.runStatus.solvedReqs.toSerializable(),e}setSerializableState(e){this.runStatus=JSON.parse(JSON.stringify(e)),this.runStatus.solvedReqs=r.ValueQueueManager.fromSerializable(e.solvedReqs)}resetRunStatus(){var e;const t=[...null!==(e=this.spec.requires)&&void 0!==e?e:[]];this.runStatus={solvedReqs:new r.ValueQueueManager(t),solvedResults:{}}}isReadyToRun(){return this.runStatus.solvedReqs.allHaveContent()}getResults(){return this.runStatus.solvedResults}supplyReq(e,t){var s;if(-1===(null!==(s=this.spec.requires)&&void 0!==s?s:[]).indexOf(e))throw new Error(`Requirement '${e}' for task '${this.code}' is not valid.`);this.runStatus.solvedReqs.push(e,t)}supplyReqs(e){for(const[t,s]of Object.entries(e))this.supplyReq(t,s)}mapParamsForResolver(e,t,s,r){var n,i,a;const u={};let l,c=null!==(i=null===(n=this.spec.resolver)||void 0===n?void 0:n.params)&&void 0!==i?i:{};if(t){const e=(null!==(a=this.spec.requires)&&void 0!==a?a:[]).map((e=>({[e]:e}))).reduce(((e,t)=>Object.assign(e,t)),{});r({n:s,m:` ⓘ Auto-mapped resolver params in task '${this.code}': %O`,mp:e,l:"d"}),c=Object.assign(e,c)}for(const[t,s]of Object.entries(c)){if("string"==typeof s)l=e[s];else if(Object.prototype.hasOwnProperty.call(s,"value"))l=s.value;else{const t=s.transform;l=o.select(e).transformWith(t).root()}u[t]=l}return u}mapResultsFromResolver(e,t,s,r){var o,n,i;if("object"!=typeof e)throw new Error(`Expected resolver for task '${this.code}' to return an object or Promise that resolves to object. Returned value is of type '${typeof e}'.`);const a={};let u=null!==(n=(null!==(o=this.spec.resolver)&&void 0!==o?o:{}).results)&&void 0!==n?n:{};if(t){const e=(null!==(i=this.spec.provides)&&void 0!==i?i:[]).reduce(((e,t)=>Object.assign(e,{[t]:t})),{});r({n:s,m:` ⓘ Auto-mapped resolver results in task '${this.code}': %O`,mp:e,l:"d"}),u=Object.assign(e,u)}for(const[t,s]of Object.entries(u))Object.prototype.hasOwnProperty.call(e,t)&&(a[s]=e[t]);return a}parseSpec(){this.resetRunStatus()}}},405:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValueQueueManager=void 0;class s{static fromSerializable(e){const t=Object.keys(e),r=new s(t);return r.queues=e,r.nonEmptyQueues=t.reduce(((e,t)=>(r.queues[t].length>0&&e.add(t),e)),new Set),r}constructor(e){this.nonEmptyQueues=new Set,this.queueNames=[...e],this.queues=e.reduce(((e,t)=>(e[t]=[],e)),{})}push(e,t){if(!this.queueNames.includes(e))throw new Error(`Queue name ${e} does not exist in queue manager. Existing queues are: [${this.queueNames.join(", ")}].`);this.nonEmptyQueues.add(e),this.queues[e].push(t)}getEmptyQueueNames(){return this.queueNames.reduce(((e,t)=>(0===this.queues[t].length&&e.push(t),e)),[])}popAll(){return this.validateAllNonEmpty(),this.queueNames.reduce(((e,t)=>(e[t]=this.queues[t].shift(),0===this.queues[t].length&&this.nonEmptyQueues.delete(t),e)),{})}topAll(){return this.validateAllNonEmpty(),this.queueNames.reduce(((e,t)=>(e[t]=this.queues[t][0],e)),{})}toSerializable(){return JSON.parse(JSON.stringify(this.queues))}validateAllNonEmpty(){if(!this.allHaveContent())throw new Error(`Some of the queues are empty: [${this.getEmptyQueueNames().join(", ")}].`)}allHaveContent(){return this.nonEmptyQueues.size===this.queueNames.length}}t.ValueQueueManager=s},590:function(e,t,s){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var o=Object.getOwnPropertyDescriptor(t,s);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,o)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),o=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||r(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),o(s(985),t),o(s(454),t),o(s(582),t)},582:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PauseResolver=t.StopResolver=t.LoopResolver=t.ArrayMapResolver=t.RepeaterResolver=t.SubFlowResolver=t.WaitResolver=t.ConditionalResolver=t.ThrowErrorResolver=t.EchoResolver=t.NoopResolver=void 0;const r=s(454),o=s(8);t.NoopResolver=class{exec(){return{}}},t.EchoResolver=class{exec(e){return{out:e.in}}},t.ThrowErrorResolver=class{exec(e){throw new Error(void 0!==e.message?e.message:"ThrowErrorResolver resolver has thrown an error")}},t.ConditionalResolver=class{exec(e){return e.condition?{onTrue:e.trueResult}:{onFalse:e.falseResult}}},t.WaitResolver=class{exec(e){return new Promise((t=>{setTimeout((()=>{t({result:e.result})}),e.ms)}))}},t.SubFlowResolver=class{async exec(e,t){let s=e.flowResolvers;void 0===s&&(s=t.$flowed.getResolvers());let o=await r.FlowManager.run(e.flowSpec,e.flowParams,e.flowExpectedResults,s,t,t.$flowed.flow.runStatus.runOptions);return"string"==typeof e.uniqueResult&&(o=o[e.uniqueResult]),{flowResult:o}}},t.RepeaterResolver=class{async exec(e,t,s,n,i){const a=t.$flowed.getResolverByName(e.resolver);if(null===a)throw new Error(`Task resolver '${e.resolver}' for inner flowed::Repeater task has no definition.`);const u=new r.Task("task-repeat-model",e.taskSpec),l=[];let c=[];for(let s=0;st[e.outItemName]))),{outCollection:d}}},t.StopResolver=class{exec(e,t){return{promise:t.$flowed.flow.stop()}}},t.PauseResolver=class{exec(e,t){return{promise:t.$flowed.flow.pause()}}}},985:function(e,t){"use strict";var s,r;Object.defineProperty(t,"__esModule",{value:!0}),t.TaskResolverMap=t.TaskResolver=t.FlowTransitionEnum=t.FlowStateEnum=void 0,(r=t.FlowStateEnum||(t.FlowStateEnum={})).Ready="Ready",r.Running="Running",r.Finished="Finished",r.Pausing="Pausing",r.Paused="Paused",r.Stopping="Stopping",r.Stopped="Stopped",(s=t.FlowTransitionEnum||(t.FlowTransitionEnum={})).Start="Start",s.Finished="Finished",s.Reset="Reset",s.Pause="Pause",s.Paused="Paused",s.Resume="Resume",s.Stop="Stop",s.Stopped="Stopped",t.TaskResolver=class{exec(e,t,s,r,o){return{}}},t.TaskResolverMap=class{}},227:function(e,t,s){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(o=r))})),t.splice(o,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(447)(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},447:function(e,t,s){e.exports=function(e){function t(e){let s,o,n,i=null;function a(...e){if(!a.enabled)return;const r=a,o=Number(new Date),n=o-(s||o);r.diff=n,r.prev=s,r.curr=o,s=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,o)=>{if("%%"===s)return"%";i++;const n=t.formatters[o];if("function"==typeof n){const t=e[i];s=n.call(r,t),e.splice(i,1),i--}return s})),t.formatArgs.call(r,e),(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(o!==t.namespaces&&(o=t.namespaces,n=t.enabled(e)),n),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,s){const r=t(this.namespace+(void 0===s?":":s)+e);return r.log=this.log,r}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),o=r.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t0&&e.length-1 in e)},resolve:function(e,t,s){return t&&t.length>0?Function("new_val","with(this) {this"+t+"=new_val; return this;}").bind(e)(s):e=s}},r={run:function(e,t){for(var s=0;s0&&"#"===t[0][0]?{name:t.shift(),expression:t.join(" ")}:null},run:function(e,t){var n,i;if("string"==typeof e)s.is_template(e)?/\{\{([ ]*#include)[ ]*([^ ]*)\}\}/g.test(e)?(i=o.tokenize(e),n=i.expression?o.fillout(t,"{{"+i.expression+"}}",!0):e):n=o.fillout(t,e):n=e;else if(s.is_array(e))if(r.is(e))n=r.run(e,t);else{n=[];for(var a=0;a0&&(i=o.tokenize(c[0]),n=i.expression?o.fillout(e[c[0]],"{{"+i.expression+"}}",!0):e[c[0]]),e)if(s.is_template(d))if(i=o.tokenize(d)){if("#include"===i.name);else if("#let"===i.name){if(s.is_array(e[d])&&2===e[d].length){var p=e[d][0],h=e[d][1],f=o.run(p,t);for(var m in f)o.memory[m]=f[m],t[m]=f[m];n=o.run(h,t)}}else if("#concat"===i.name)s.is_array(e[d])&&(n=[],e[d].forEach((function(e){var s=o.run(e,t);n=n.concat(s)})));else if("#merge"===i.name){if(s.is_array(e[d]))if(n={},e[d].forEach((function(e){var s=o.run(e,t);for(var r in s)n[r]=s[r]})),"object"==typeof t)for(var g in delete n.$index,o.memory)delete n[g];else for(g in delete String.prototype.$index,delete Number.prototype.$index,delete Function.prototype.$index,delete Array.prototype.$index,delete Boolean.prototype.$index,o.memory)delete String.prototype[g],delete Number.prototype[g],delete Function.prototype[g],delete Array.prototype[g],delete Boolean.prototype[g]}else if("#each"===i.name){var v=o.fillout(t,"{{"+i.expression+"}}",!0);if(v&&s.is_array(v)){n=[];for(var y=0;y0&&n.select(n.$injected),n},select:function(e,t,r){var o=e;try{r&&(o=JSON.parse(e))}catch(e){}return t?(n.$selected=[],n.exec(o,"",t)):n.$selected=null,o&&(s.is_array(o)||"object"==typeof o)?(n.$progress||(s.is_array(o)?(n.$val=[],n.$selected_root=[]):(n.$val={},n.$selected_root={})),Object.keys(o).forEach((function(e){n.$val[e]=o[e],n.$selected_root[e]=o[e]}))):(n.$val=o,n.$selected_root=o),n.$progress=!0,n},transformWith:function(e,r){n.$parsed=[],n.$progress=null;var i=e;try{r&&(i=JSON.parse(e))}catch(e){}if(n.$template_root=i,String.prototype.$root=n.$selected_root,Number.prototype.$root=n.$selected_root,Function.prototype.$root=n.$selected_root,Array.prototype.$root=n.$selected_root,Boolean.prototype.$root=n.$selected_root,t=n.$selected_root,n.$selected&&n.$selected.length>0)n.$selected.sort((function(e,t){return t.path.length-e.path.length})).forEach((function(e){var t=o.run(i,e.object);n.$selected_root=s.resolve(n.$selected_root,e.path,t),e.object=t})),n.$selected.sort((function(e,t){return e.index-t.index}));else{var a=o.run(i,n.$selected_root);n.$selected_root=s.resolve(n.$selected_root,"",a)}return delete String.prototype.$root,delete Number.prototype.$root,delete Function.prototype.$root,delete Array.prototype.$root,delete Boolean.prototype.$root,n},transform:function(e,r){n.$parsed=[],n.$progress=null;var i=e;try{r&&(i=JSON.parse(e))}catch(e){}if(n.$template_root=n.$selected_root,String.prototype.$root=i,Number.prototype.$root=i,Function.prototype.$root=i,Array.prototype.$root=i,Boolean.prototype.$root=i,t=i,n.$selected&&n.$selected.length>0)n.$selected.sort((function(e,t){return t.path.length-e.path.length})).forEach((function(e){var t=o.run(e.object,i);n.$template_root=s.resolve(n.$template_root,e.path,t),n.$selected_root=n.$template_root,e.object=t})),n.$selected.sort((function(e,t){return e.index-t.index}));else{var a=o.run(n.$selected_root,i);n.$template_root=s.resolve(n.$template_root,"",a),n.$selected_root=n.$template_root}return delete String.prototype.$root,delete Number.prototype.$root,delete Function.prototype.$root,delete Array.prototype.$root,delete Boolean.prototype.$root,n},objects:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.object})):[n.$selected_root]},keys:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.key})):Array.isArray(n.$selected_root)?Object.keys(n.$selected_root).map((function(e){return parseInt(e)})):Object.keys(n.$selected_root)},paths:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.path})):Array.isArray(n.$selected_root)?Object.keys(n.$selected_root).map((function(e){return"["+e+"]"})):Object.keys(n.$selected_root).map((function(e){return'["'+e+'"]'}))},values:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.value})):Object.values(n.$selected_root)},root:function(){return n.$progress=null,n.$selected_root}},i=JSON.stringify,a=function(e,t,s){return-1!==["number","string","boolean"].indexOf(typeof e)?i(e,t,s):i(e,t||function(e,t){if(!(n.$injected&&n.$injected.length>0&&-1!==n.$injected.indexOf(e)||"$root"===e||"$index"===e||e in o.memory))return"function"==typeof t?"("+t.toString()+")":t},s)};JSON.stringify2=a;var u={TRANSFORM:o,SELECT:n,Conditional:r,Helper:s,inject:n.inject,select:n.select,transform:o.transform};e.exports&&(e.exports=u)}()},824:function(e){var t=1e3,s=60*t,r=60*s,o=24*r;function n(e,t,s,r){var o=t>=1.5*s;return Math.round(e/s)+" "+r+(o?"s":"")}e.exports=function(e,i){i=i||{};var a,u,l=typeof e;if("string"===l&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var n=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(n){var i=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*o;case"hours":case"hour":case"hrs":case"hr":case"h":return i*r;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===l&&isFinite(e))return i.long?(a=e,(u=Math.abs(a))>=o?n(a,u,o,"day"):u>=r?n(a,u,r,"hour"):u>=s?n(a,u,s,"minute"):u>=t?n(a,u,t,"second"):a+" ms"):function(e){var n=Math.abs(e);return n>=o?Math.round(e/o)+"d":n>=r?Math.round(e/r)+"h":n>=s?Math.round(e/s)+"m":n>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},673:function(){},883:function(){},316:function(){}},t={},function s(r){var o=t[r];if(void 0!==o)return o.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,s),n.exports}(590);var e,t})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Flowed=t():e.Flowed=t()}(self,(function(){return e={865:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=s(227),o={};t.default=e=>{let t=o[e];return void 0===t&&(t=(0,r.default)(`flowed:${e}`),o[e]=t),t}},155:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowManager=void 0;const r=s(673),o=s(883),n=s(316),i=s(167);class a{static run(e,t={},s=[],r={},o={},n={}){return new i.Flow(e).start(t,s,r,o,n)}static runFromString(e,t={},s=[],r={},o={},n={}){return new Promise(((i,u)=>{try{const l=JSON.parse(e);a.run(l,t,s,r,o,n).then(i,u)}catch(e){u(e)}}))}static runFromFile(e,t={},s=[],o={},n={},i={}){return new Promise(((u,l)=>{(0,r.readFile)(e,"utf8",((e,r)=>{e?l(e):a.runFromString(r,t,s,o,n,i).then(u,l)}))}))}static runFromUrl(e,t={},s=[],r={},i={},u={}){let l=null;if(e.startsWith("http://")?l=o:e.startsWith("https://")&&(l=n),null===l){let t=null;const s=e.match(/^([a-zA-Z]+):/);return Array.isArray(s)&&2===s.length?(t=s[1],Promise.reject(new Error(`Protocol not supported: ${t}. Supported protocols are: [http, https]`))):Promise.reject(new Error(`Invalid URL: ${e}`))}return new Promise(((o,n)=>{l.get(e,(e=>{var l;const{statusCode:c}=e,d=null!==(l=e.headers["content-type"])&&void 0!==l?l:"application/json";let p;if(200!==c?p=new Error(`Request failed with status code: ${c}`):/^application\/json/.test(d)||/^text\/plain/.test(d)||(p=new Error(`Invalid content-type. Expected application/json or text/plain but received ${d}`)),p)n(p);else{e.setEncoding("utf8");let l="";e.on("data",(e=>{l+=e})),e.on("end",(()=>{a.runFromString(l,t,s,r,i,u).then(o,n)}))}})).on("error",(e=>{n(e)}))}))}static installPlugin(e){if(e.resolverLibrary)for(const[t,s]of Object.entries(e.resolverLibrary))this.plugins.resolvers[t]=s}static installLogger(e){this.logger=e}static log(e){null!==a.logger&&a.logger.log(e)}}t.FlowManager=a,a.plugins={resolvers:{}},a.logger=null},875:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowRunStatus=void 0;const r=s(985),o=s(871),n=s(851),i=s(413);class a{constructor(e,t,s){this.tasksReady=[],this.tasksByReq={},this.resolvers={},this.expectedResults=[],this.results={},this.context={},this.runOptions={},this.flow=e,this.processManager=new n.ProcessManager,this.id=a.nextId,a.nextId=(a.nextId+1)%Number.MAX_SAFE_INTEGER,this.states={Ready:new o.FlowReady(this),Running:new o.FlowRunning(this),Finished:new o.FlowFinished(this),Pausing:new o.FlowPausing(this),Paused:new o.FlowPaused(this),Stopping:new o.FlowStopping(this),Stopped:new o.FlowStopped(this)},this.state=this.states[r.FlowStateEnum.Ready],this.initRunStatus(t,s)}initRunStatus(e,t){var s,r,o,n,a;this.spec=e,this.tasks={};const u=[];for(const[e,t]of Object.entries(null!==(s=this.spec.tasks)&&void 0!==s?s:{}))u.push(...null!==(r=t.provides)&&void 0!==r?r:[]),this.tasks[e]=new i.Task(e,t);this.taskProvisions=Array.from(new Set(u)),this.options=Object.assign({},null!==(o=this.spec.configs)&&void 0!==o?o:{},null!==(n=this.spec.options)&&void 0!==n?n:{}),Object.prototype.hasOwnProperty.call(this.spec,"configs")&&this.flow.log({m:"DEPRECATED: 'configs' field in flow spec. Use 'options' instead.",l:"w"}),this.tasksByReq={},this.tasksReady=[];for(const e of Object.values(this.tasks)){e.resetRunStatus(),e.isReadyToRun()&&this.tasksReady.push(e);const t=null!==(a=e.spec.requires)&&void 0!==a?a:[];for(const s of t)void 0===this.tasksByReq[s]&&(this.tasksByReq[s]={}),this.tasksByReq[s][e.code]=e}this.results={},t&&this.fromSerializable(t)}fromSerializable(e){this.id=e.id,this.processManager.nextProcessId=e.nextProcessId,this.processManager.processes=[],this.tasksReady=e.tasksReady.map((e=>this.tasks[e])),this.tasksByReq={};for(const[t,s]of Object.entries(e.tasksByReq))this.tasksByReq[t]=s.reduce(((e,t)=>(e[t]=this.tasks[t],e)),{});this.taskProvisions=JSON.parse(JSON.stringify(e.taskProvisions)),this.expectedResults=JSON.parse(JSON.stringify(e.expectedResults)),this.results=JSON.parse(JSON.stringify(e.results)),this.context=JSON.parse(JSON.stringify(e.context)),this.options=JSON.parse(JSON.stringify(e.options));for(const[t,s]of Object.entries(e.taskStatuses))this.tasks[t].setSerializableState(s)}toSerializable(){const e={id:this.id,nextProcessId:this.processManager.nextProcessId,tasksReady:this.tasksReady.map((e=>e.code)),tasksByReq:{},taskProvisions:JSON.parse(JSON.stringify(this.taskProvisions)),expectedResults:JSON.parse(JSON.stringify(this.expectedResults)),results:JSON.parse(JSON.stringify(this.results)),context:{},options:JSON.parse(JSON.stringify(this.options)),taskStatuses:{}},t=Object.assign({},this.context);delete t.$flowed,e.context=JSON.parse(JSON.stringify(t));for(const[t,s]of Object.entries(this.tasksByReq))e.tasksByReq[t]=Object.keys(s);for(const[t,s]of Object.entries(this.tasks))e.taskStatuses[t]=JSON.parse(JSON.stringify(s.getSerializableState()));return e}}t.FlowRunStatus=a,a.nextId=1},389:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowFinished=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Finished}reset(){this.setState(o.FlowStateEnum.Ready),this.runStatus.initRunStatus(this.runStatus.spec)}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowFinished=n},578:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowPaused=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Paused}resume(){return this.setState(o.FlowStateEnum.Running),this.createFinishPromise(),this.startReadyTasks(),this.runStatus.state.isRunning()||this.runStatus.state.finished(),this.runStatus.finishPromise}stop(){return this.setState(o.FlowStateEnum.Stopping),Promise.resolve(this.getResults())}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowPaused=n},547:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowPausing=void 0;const r=s(985),o=s(823);class n extends o.FlowState{getStateCode(){return r.FlowStateEnum.Pausing}paused(e){this.setState(r.FlowStateEnum.Paused),e?(this.log({n:this.runStatus.id,m:"Flow paused with error.",e:"FP"}),this.execFinishReject(e)):(this.log({n:this.runStatus.id,m:"Flow paused.",e:"FP"}),this.execFinishResolve())}postProcessFinished(e,t){this.runStatus.state.paused(e)}}t.FlowPausing=n},106:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowReady=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Ready}start(e,t,s,r,n={}){return this.setRunOptions(n),this.log({n:this.runStatus.id,m:"Flow started with params: %O",mp:e,e:"FS"}),this.setState(o.FlowStateEnum.Running),this.setExpectedResults([...t]),this.setResolvers(s),this.setContext(r),this.supplyParameters(e),this.createFinishPromise(),this.startReadyTasks(),this.runStatus.state.isRunning()||this.runStatus.state.finished(),this.runStatus.finishPromise}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowReady=n},873:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowRunning=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Running}pause(){return this.setState(o.FlowStateEnum.Pausing),this.runStatus.finishPromise}stop(){return this.setState(o.FlowStateEnum.Stopping),this.runStatus.finishPromise}finished(e=!1){this.setState(o.FlowStateEnum.Finished),e?(this.log({n:this.runStatus.id,m:"Flow finished with error. Results: %O",mp:this.getResults(),l:"e",e:"FF"}),this.execFinishReject(e)):(this.log({n:this.runStatus.id,m:"Flow finished with results: %O",mp:this.getResults(),e:"FF"}),this.execFinishResolve())}postProcessFinished(e,t){e&&t||this.runStatus.state.startReadyTasks(),this.runStatus.state.isRunning()||this.runStatus.state.finished(e)}}t.FlowRunning=n},823:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowState=void 0;const r=s(865),o=s(582),n=s(985),i=s(155);class a{constructor(e){this.runStatus=e}start(e,t,s,r,o={}){throw this.createTransitionError(n.FlowTransitionEnum.Start)}finished(e=!1){throw this.createTransitionError(n.FlowTransitionEnum.Finished)}pause(){throw this.createTransitionError(n.FlowTransitionEnum.Pause)}paused(e=!1){throw this.createTransitionError(n.FlowTransitionEnum.Paused)}resume(){throw this.createTransitionError(n.FlowTransitionEnum.Resume)}stop(){throw this.createTransitionError(n.FlowTransitionEnum.Stop)}stopped(e=!1){throw this.createTransitionError(n.FlowTransitionEnum.Stopped)}reset(){throw this.createTransitionError(n.FlowTransitionEnum.Reset)}execFinishResolve(){this.runStatus.finishResolve(this.runStatus.results)}execFinishReject(e){this.runStatus.finishReject(e)}isRunning(){return this.runStatus.processManager.runningCount()>0}setExpectedResults(e){const t=e.filter((e=>!this.runStatus.taskProvisions.includes(e)));if(t.length>0){const e=`The results [${t.join(", ")}] are not provided by any task`;if(this.runStatus.options.throwErrorOnUnsolvableResult)throw new Error(e);this.log({m:e,l:"w"})}this.runStatus.expectedResults=[...e]}getResults(){return this.runStatus.results}setResolvers(e){this.runStatus.resolvers=e}setContext(e){this.runStatus.context=Object.assign({$flowed:{getResolverByName:this.getResolverByName.bind(this),getResolvers:this.getResolvers.bind(this),processManager:this.runStatus.processManager,flow:this.runStatus.flow}},e)}setRunOptions(e){this.runStatus.runOptions=Object.assign({debugKey:"flow",instanceId:null,logFields:{}},e)}supplyParameters(e){for(const[t,s]of Object.entries(e))this.runStatus.state.supplyResult(t,s)}createFinishPromise(){this.runStatus.finishPromise=new Promise(((e,t)=>{this.runStatus.finishResolve=e,this.runStatus.finishReject=t}))}getResolverForTask(e){const t=e.getResolverName(),s=this.getResolverByName(t);if(null===s)throw new Error(`Task resolver '${t}' for task '${e.code}' has no definition. Defined custom resolvers are: [${Object.keys(this.runStatus.resolvers).join(", ")}].`);return s}getResolverByName(e){const t=this.runStatus.resolvers;return void 0!==t[e]?t[e]:void 0!==i.FlowManager.plugins.resolvers[e]?i.FlowManager.plugins.resolvers[e]:void 0!==a.builtInResolvers[e]?a.builtInResolvers[e]:null}getResolvers(){const e=this.runStatus.resolvers,t=i.FlowManager.plugins.resolvers,s=a.builtInResolvers;return Object.assign(Object.assign(Object.assign({},s),t),e)}supplyResult(e,t){if(void 0!==this.runStatus.tasksByReq[e]){const s=this.runStatus.tasksByReq[e],r=Object.keys(s);for(const o of r){const r=s[o];r.supplyReq(e,t),r.isReadyToRun()&&this.runStatus.tasksReady.push(r)}}this.runStatus.expectedResults.indexOf(e)>-1&&(this.runStatus.results[e]=t)}getStateInstance(e){return this.runStatus.states[e]}startReadyTasks(){const e=this.runStatus.tasksReady;this.runStatus.tasksReady=[];for(const t of e){const e=this.runStatus.state.getResolverForTask(t),s=this.runStatus.processManager.createProcess(t,e,this.runStatus.context,!!this.runStatus.options.resolverAutomapParams,!!this.runStatus.options.resolverAutomapResults,this.runStatus.id,this.debug,this.log.bind(this)),r=e=>{this.processFinished(s,e,!0)};s.run().then((()=>{this.processFinished(s,!1,!0)}),r).catch(r),this.log({n:this.runStatus.id,m:`Task '${t.code}(${t.getResolverName()})' started, params: %O`,mp:s.getParams(),e:"TS",pid:s.pid,task:{code:t.code,type:t.getResolverName()}})}}setState(e){const t=this.runStatus.state.getStateCode();this.runStatus.state=this.getStateInstance(e),this.log({n:this.runStatus.id,m:`Changed flow state from '${t}' to '${e}'`,l:"d",e:"FC"})}getSerializableState(){throw this.createMethodError("getSerializableState")}processFinished(e,t,s){var r;this.runStatus.processManager.removeProcess(e);const o=e.task,n=o.code,i=o.spec,a=null!==(r=i.provides)&&void 0!==r?r:[],u=o.getResults(),l=Object.prototype.hasOwnProperty.call(i,"defaultResult");t?this.log({n:this.runStatus.id,m:`Error in task '${n}', results: %O`,mp:u,l:"e",e:"TF",pid:e.pid,task:{code:o.code,type:o.getResolverName()}}):this.log({n:this.runStatus.id,m:`Finished task '${n}', results: %O`,mp:u,e:"TF",pid:e.pid,task:{code:o.code,type:o.getResolverName()}});for(const e of a)Object.prototype.hasOwnProperty.call(u,e)?this.runStatus.state.supplyResult(e,u[e]):l?this.runStatus.state.supplyResult(e,i.defaultResult):this.log({n:this.runStatus.id,m:`Expected value '${e}' was not provided by task '${n}' with resolver '${o.getResolverName()}'. Consider using the task field 'defaultResult' to provide values by default.`,l:"w"});this.runStatus.state.postProcessFinished(t,s)}postProcessFinished(e,t){}createTransitionError(e){return new Error(`Cannot execute transition ${e} in current state ${this.getStateCode()}.`)}createMethodError(e){return new Error(`Cannot execute method ${e} in current state ${this.getStateCode()}.`)}debug(e,...t){const s=(null==this?void 0:this.runStatus)&&"string"==typeof this.runStatus.runOptions.debugKey?this.runStatus.runOptions.debugKey:"init";(0,r.default)(s)(e,...t)}static formatDebugMessage({n:e,m:t,l:s,e:r}){var o;const n="w"===s?"⚠️ ":"";let i=null!==(o={FS:"▶ ",FF:"✔ ",TS:" ‣ ",TF:" ✓ ",FC:" ⓘ ",FT:"◼ ",FP:"⏸ "}[r||""])&&void 0!==o?o:"";return"TF"===r&&["e","f"].includes(s||"")?i=" ✗":"FF"===r&&["e","f"].includes(s||"")&&(i="✘"),`[${e}] ${n+i}${t}`}static createLogEntry({n:e,m:t,mp:s,l:r,e:o,pid:n,task:i},a){let u={level:(e=>{switch(e=e||"i"){case"e":return"error";case"w":return"warning";case"i":return"info";case"d":return"debug";default:throw new Error(`Not supported error level: "${e}"`)}})(r),eventType:(e=>{switch(e){case"TS":return"Task.Started";case"TF":return"Task.Finished";case"FC":return"Flow.StateChanged";case"FS":return"Flow.Started";case"FF":return"Flow.Finished";case"FT":return"Flow.Stopped";case"FP":return"Flow.Paused";default:return"General"}})(o),message:((e,t)=>{if(t){const s=JSON.stringify(t);return e.replace("%O",s.length>100?s.slice(0,97)+"...":s)}return e})(t,s),timestamp:new Date,extra:{pid:n,task:i,debugId:e,values:JSON.stringify(s)}};return a&&(u.objectId=a.runOptions.instanceId,u=Object.assign(a.runOptions.logFields,u)),u}log({n:e,m:t,mp:s,l:r,e:o,pid:n,task:u}){this.debug(a.formatDebugMessage({n:e,m:t,mp:s,l:r,e:o}),[s]),i.FlowManager.log(a.createLogEntry({n:e,m:t,mp:s,l:r,e:o,pid:n,task:u},this.runStatus))}}t.FlowState=a,a.builtInResolvers={"flowed::Noop":o.NoopResolver,"flowed::Echo":o.EchoResolver,"flowed::ThrowError":o.ThrowErrorResolver,"flowed::Conditional":o.ConditionalResolver,"flowed::Wait":o.WaitResolver,"flowed::SubFlow":o.SubFlowResolver,"flowed::Repeater":o.RepeaterResolver,"flowed::Loop":o.LoopResolver,"flowed::ArrayMap":o.ArrayMapResolver,"flowed::Stop":o.StopResolver,"flowed::Pause":o.PauseResolver}},784:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowStopped=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Stopped}reset(){this.setState(o.FlowStateEnum.Ready),this.runStatus.initRunStatus(this.runStatus.spec)}getSerializableState(){return this.runStatus.toSerializable()}}t.FlowStopped=n},17:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlowStopping=void 0;const r=s(871),o=s(985);class n extends r.FlowState{getStateCode(){return o.FlowStateEnum.Stopping}stopped(e=!1){this.setState(o.FlowStateEnum.Stopped),e?(this.log({n:this.runStatus.id,m:"Flow stopped with error.",e:"FT"}),this.execFinishReject(e)):(this.log({n:this.runStatus.id,m:"Flow stopped.",e:"FT"}),this.execFinishResolve())}postProcessFinished(e,t){this.runStatus.state.stopped(e)}}t.FlowStopping=n},871:function(e,t,s){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var o=Object.getOwnPropertyDescriptor(t,s);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,o)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),o=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||r(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),o(s(823),t),o(s(106),t),o(s(389),t),o(s(578),t),o(s(547),t),o(s(873),t),o(s(784),t),o(s(17),t)},167:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Flow=void 0;const r=s(875),o=s(865),n=s(155),i=s(871);t.Flow=class{constructor(e,t){this.runStatus=new r.FlowRunStatus(this,null!=e?e:{},t)}getStateCode(){return this.runStatus.state.getStateCode()}start(e={},t=[],s={},r={},o={}){return this.runStatus.state.start(e,t,s,r,o)}pause(){return this.runStatus.state.pause()}resume(){return this.runStatus.state.resume()}stop(){return this.runStatus.state.stop()}reset(){this.runStatus.state.reset()}getSerializableState(){return this.runStatus.state.getSerializableState()}debug(e,...t){(null==this?void 0:this.runStatus)?this.runStatus.state.debug(e,...t):(0,o.default)("init")(e,...t)}log({n:e,m:t,mp:s,l:r,e:o}){this.debug(i.FlowState.formatDebugMessage({n:e,m:t,mp:s,l:r,e:o}),[s]),n.FlowManager.log(i.FlowState.createLogEntry({n:e,m:t,mp:s,l:r,e:o},this.runStatus))}}},454:function(e,t,s){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var o=Object.getOwnPropertyDescriptor(t,s);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,o)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),o=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||r(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),o(s(155),t),o(s(167),t),o(s(580),t),o(s(413),t)},851:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProcessManager=void 0;const r=s(8);t.ProcessManager=class{constructor(){this.nextProcessId=1,this.processes=[]}createProcess(e,t,s,o,n,i,a,u){this.nextProcessId++;const l=new r.TaskProcess(this,this.nextProcessId,e,t,s,o,n,i,a,u);return this.processes.push(l),l}runningCount(){return this.processes.length}removeProcess(e){const t=this.processes.findIndex((t=>t.id===e.id));this.processes.splice(t,1)}}},580:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaskSpecMap=void 0,t.TaskSpecMap=class{}},8:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaskProcess=void 0;class s{constructor(e,t,r,o,n,i,a,u,l,c){this.manager=e,this.id=t,this.task=r,this.taskResolverExecutor=o,this.context=n,this.automapParams=i,this.automapResults=a,this.flowId=u,this.debug=l,this.log=c,this.pid=s.nextPid,s.nextPid=(s.nextPid+1)%Number.MAX_SAFE_INTEGER}getParams(){return this.params}run(){this.params=this.task.mapParamsForResolver(this.task.runStatus.solvedReqs.popAll(),this.automapParams,this.flowId,this.log);let e,t=this.taskResolverExecutor;if(this.taskResolverExecutor.prototype&&this.taskResolverExecutor.prototype.exec){const s=new this.taskResolverExecutor;t=s.exec,e=s}return new Promise(((s,r)=>{const o=e=>{this.task.runStatus.solvedResults=this.task.mapResultsFromResolver(e,this.automapResults,this.flowId,this.log),s(this.task.runStatus.solvedResults)},n=e=>{r(e)};let i;try{i=t.call(e,this.params,this.context,this.task,this.debug,this.log)}catch(e){n(e)}const a="object"==typeof i,u=i&&i.constructor&&"Promise"===i.constructor.name;if(!a)throw new Error(`Expected resolver for task '${this.task.code}' to return an object or Promise that resolves to object. Returned value is of type '${typeof i}'.`);u?i.then(o).catch(n):o(i)}))}}t.TaskProcess=s,s.nextPid=1},413:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Task=void 0;const r=s(405),o=s(829);t.Task=class{constructor(e,t){this.code=e,this.spec=t,this.parseSpec()}getResolverName(){var e;return(null!==(e=this.spec.resolver)&&void 0!==e?e:{name:"flowed::Noop"}).name}getSerializableState(){const e=JSON.parse(JSON.stringify(this.runStatus));return e.solvedReqs=this.runStatus.solvedReqs.toSerializable(),e}setSerializableState(e){this.runStatus=JSON.parse(JSON.stringify(e)),this.runStatus.solvedReqs=r.ValueQueueManager.fromSerializable(e.solvedReqs)}resetRunStatus(){var e;const t=[...null!==(e=this.spec.requires)&&void 0!==e?e:[]];this.runStatus={solvedReqs:new r.ValueQueueManager(t),solvedResults:{}}}isReadyToRun(){return this.runStatus.solvedReqs.allHaveContent()}getResults(){return this.runStatus.solvedResults}supplyReq(e,t){var s;if(-1===(null!==(s=this.spec.requires)&&void 0!==s?s:[]).indexOf(e))throw new Error(`Requirement '${e}' for task '${this.code}' is not valid.`);this.runStatus.solvedReqs.push(e,t)}supplyReqs(e){for(const[t,s]of Object.entries(e))this.supplyReq(t,s)}mapParamsForResolver(e,t,s,r){var n,i,a;const u={};let l,c=null!==(i=null===(n=this.spec.resolver)||void 0===n?void 0:n.params)&&void 0!==i?i:{};if(t){const e=(null!==(a=this.spec.requires)&&void 0!==a?a:[]).map((e=>({[e]:e}))).reduce(((e,t)=>Object.assign(e,t)),{});r({n:s,m:` ⓘ Auto-mapped resolver params in task '${this.code}': %O`,mp:e,l:"d"}),c=Object.assign(e,c)}for(const[t,s]of Object.entries(c)){if("string"==typeof s)l=e[s];else if(Object.prototype.hasOwnProperty.call(s,"value"))l=s.value;else{const t=s.transform;l=o.select(e).transformWith(t).root()}u[t]=l}return u}mapResultsFromResolver(e,t,s,r){var o,n,i;if("object"!=typeof e)throw new Error(`Expected resolver for task '${this.code}' to return an object or Promise that resolves to object. Returned value is of type '${typeof e}'.`);const a={};let u=null!==(n=(null!==(o=this.spec.resolver)&&void 0!==o?o:{}).results)&&void 0!==n?n:{};if(t){const e=(null!==(i=this.spec.provides)&&void 0!==i?i:[]).reduce(((e,t)=>Object.assign(e,{[t]:t})),{});r({n:s,m:` ⓘ Auto-mapped resolver results in task '${this.code}': %O`,mp:e,l:"d"}),u=Object.assign(e,u)}for(const[t,s]of Object.entries(u))Object.prototype.hasOwnProperty.call(e,t)&&(a[s]=e[t]);return a}parseSpec(){this.resetRunStatus()}}},405:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValueQueueManager=void 0;class s{static fromSerializable(e){const t=Object.keys(e),r=new s(t);return r.queues=e,r.nonEmptyQueues=t.reduce(((e,t)=>(r.queues[t].length>0&&e.add(t),e)),new Set),r}constructor(e){this.nonEmptyQueues=new Set,this.queueNames=[...e],this.queues=e.reduce(((e,t)=>(e[t]=[],e)),{})}push(e,t){if(!this.queueNames.includes(e))throw new Error(`Queue name ${e} does not exist in queue manager. Existing queues are: [${this.queueNames.join(", ")}].`);this.nonEmptyQueues.add(e),this.queues[e].push(t)}getEmptyQueueNames(){return this.queueNames.reduce(((e,t)=>(0===this.queues[t].length&&e.push(t),e)),[])}popAll(){return this.validateAllNonEmpty(),this.queueNames.reduce(((e,t)=>(e[t]=this.queues[t].shift(),0===this.queues[t].length&&this.nonEmptyQueues.delete(t),e)),{})}topAll(){return this.validateAllNonEmpty(),this.queueNames.reduce(((e,t)=>(e[t]=this.queues[t][0],e)),{})}toSerializable(){return JSON.parse(JSON.stringify(this.queues))}validateAllNonEmpty(){if(!this.allHaveContent())throw new Error(`Some of the queues are empty: [${this.getEmptyQueueNames().join(", ")}].`)}allHaveContent(){return this.nonEmptyQueues.size===this.queueNames.length}}t.ValueQueueManager=s},590:function(e,t,s){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,s,r){void 0===r&&(r=s);var o=Object.getOwnPropertyDescriptor(t,s);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[s]}}),Object.defineProperty(e,r,o)}:function(e,t,s,r){void 0===r&&(r=s),e[r]=t[s]}),o=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||r(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),o(s(985),t),o(s(454),t),o(s(582),t)},582:function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PauseResolver=t.StopResolver=t.LoopResolver=t.ArrayMapResolver=t.RepeaterResolver=t.SubFlowResolver=t.WaitResolver=t.ConditionalResolver=t.ThrowErrorResolver=t.EchoResolver=t.NoopResolver=void 0;const r=s(454),o=s(8);t.NoopResolver=class{exec(){return{}}},t.EchoResolver=class{exec(e){return{out:e.in}}},t.ThrowErrorResolver=class{exec(e){throw new Error(void 0!==e.message?e.message:"ThrowErrorResolver resolver has thrown an error")}},t.ConditionalResolver=class{exec(e){return e.condition?{onTrue:e.trueResult}:{onFalse:e.falseResult}}},t.WaitResolver=class{exec(e){return new Promise((t=>{setTimeout((()=>{t({result:e.result})}),e.ms)}))}},t.SubFlowResolver=class{async exec(e,t){let s=e.flowResolvers;void 0===s&&(s=t.$flowed.getResolvers());let o=await r.FlowManager.run(e.flowSpec,e.flowParams,e.flowExpectedResults,s,t,t.$flowed.flow.runStatus.runOptions);return"string"==typeof e.uniqueResult&&(o=o[e.uniqueResult]),{flowResult:o}}},t.RepeaterResolver=class{async exec(e,t,s,n,i){const a=t.$flowed.getResolverByName(e.resolver);if(null===a)throw new Error(`Task resolver '${e.resolver}' for inner flowed::Repeater task has no definition.`);const u=new r.Task("task-repeat-model",e.taskSpec),l=[];let c=[];for(let s=0;st[e.outItemName]))),{outCollection:d}}},t.StopResolver=class{exec(e,t){return{promise:t.$flowed.flow.stop()}}},t.PauseResolver=class{exec(e,t){return{promise:t.$flowed.flow.pause()}}}},985:function(e,t){"use strict";var s,r;Object.defineProperty(t,"__esModule",{value:!0}),t.TaskResolverMap=t.TaskResolver=t.FlowTransitionEnum=t.FlowStateEnum=void 0,(r=t.FlowStateEnum||(t.FlowStateEnum={})).Ready="Ready",r.Running="Running",r.Finished="Finished",r.Pausing="Pausing",r.Paused="Paused",r.Stopping="Stopping",r.Stopped="Stopped",(s=t.FlowTransitionEnum||(t.FlowTransitionEnum={})).Start="Start",s.Finished="Finished",s.Reset="Reset",s.Pause="Pause",s.Paused="Paused",s.Resume="Resume",s.Stop="Stop",s.Stopped="Stopped",t.TaskResolver=class{exec(e,t,s,r,o){return{}}},t.TaskResolverMap=class{}},227:function(e,t,s){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(o=r))})),t.splice(o,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(447)(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},447:function(e,t,s){e.exports=function(e){function t(e){let s,o,n,i=null;function a(...e){if(!a.enabled)return;const r=a,o=Number(new Date),n=o-(s||o);r.diff=n,r.prev=s,r.curr=o,s=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,o)=>{if("%%"===s)return"%";i++;const n=t.formatters[o];if("function"==typeof n){const t=e[i];s=n.call(r,t),e.splice(i,1),i--}return s})),t.formatArgs.call(r,e),(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(o!==t.namespaces&&(o=t.namespaces,n=t.enabled(e)),n),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,s){const r=t(this.namespace+(void 0===s?":":s)+e);return r.log=this.log,r}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),o=r.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t0&&e.length-1 in e)},resolve:function(e,t,s){return t&&t.length>0?Function("new_val","with(this) {this"+t+"=new_val; return this;}").bind(e)(s):e=s}},r={run:function(e,t){for(var s=0;s0&&"#"===t[0][0]?{name:t.shift(),expression:t.join(" ")}:null},run:function(e,t){var n,i;if("string"==typeof e)s.is_template(e)?/\{\{([ ]*#include)[ ]*([^ ]*)\}\}/g.test(e)?(i=o.tokenize(e),n=i.expression?o.fillout(t,"{{"+i.expression+"}}",!0):e):n=o.fillout(t,e):n=e;else if(s.is_array(e))if(r.is(e))n=r.run(e,t);else{n=[];for(var a=0;a0&&(i=o.tokenize(c[0]),n=i.expression?o.fillout(e[c[0]],"{{"+i.expression+"}}",!0):e[c[0]]),e)if(s.is_template(d))if(i=o.tokenize(d)){if("#include"===i.name);else if("#let"===i.name){if(s.is_array(e[d])&&2===e[d].length){var p=e[d][0],h=e[d][1],f=o.run(p,t);for(var m in f)o.memory[m]=f[m],t[m]=f[m];n=o.run(h,t)}}else if("#concat"===i.name)s.is_array(e[d])&&(n=[],e[d].forEach((function(e){var s=o.run(e,t);n=n.concat(s)})));else if("#merge"===i.name){if(s.is_array(e[d]))if(n={},e[d].forEach((function(e){var s=o.run(e,t);for(var r in s)n[r]=s[r]})),"object"==typeof t)for(var g in delete n.$index,o.memory)delete n[g];else for(g in delete String.prototype.$index,delete Number.prototype.$index,delete Function.prototype.$index,delete Array.prototype.$index,delete Boolean.prototype.$index,o.memory)delete String.prototype[g],delete Number.prototype[g],delete Function.prototype[g],delete Array.prototype[g],delete Boolean.prototype[g]}else if("#each"===i.name){var v=o.fillout(t,"{{"+i.expression+"}}",!0);if(v&&s.is_array(v)){n=[];for(var y=0;y0&&n.select(n.$injected),n},select:function(e,t,r){var o=e;try{r&&(o=JSON.parse(e))}catch(e){}return t?(n.$selected=[],n.exec(o,"",t)):n.$selected=null,o&&(s.is_array(o)||"object"==typeof o)?(n.$progress||(s.is_array(o)?(n.$val=[],n.$selected_root=[]):(n.$val={},n.$selected_root={})),Object.keys(o).forEach((function(e){n.$val[e]=o[e],n.$selected_root[e]=o[e]}))):(n.$val=o,n.$selected_root=o),n.$progress=!0,n},transformWith:function(e,r){n.$parsed=[],n.$progress=null;var i=e;try{r&&(i=JSON.parse(e))}catch(e){}if(n.$template_root=i,String.prototype.$root=n.$selected_root,Number.prototype.$root=n.$selected_root,Function.prototype.$root=n.$selected_root,Array.prototype.$root=n.$selected_root,Boolean.prototype.$root=n.$selected_root,t=n.$selected_root,n.$selected&&n.$selected.length>0)n.$selected.sort((function(e,t){return t.path.length-e.path.length})).forEach((function(e){var t=o.run(i,e.object);n.$selected_root=s.resolve(n.$selected_root,e.path,t),e.object=t})),n.$selected.sort((function(e,t){return e.index-t.index}));else{var a=o.run(i,n.$selected_root);n.$selected_root=s.resolve(n.$selected_root,"",a)}return delete String.prototype.$root,delete Number.prototype.$root,delete Function.prototype.$root,delete Array.prototype.$root,delete Boolean.prototype.$root,n},transform:function(e,r){n.$parsed=[],n.$progress=null;var i=e;try{r&&(i=JSON.parse(e))}catch(e){}if(n.$template_root=n.$selected_root,String.prototype.$root=i,Number.prototype.$root=i,Function.prototype.$root=i,Array.prototype.$root=i,Boolean.prototype.$root=i,t=i,n.$selected&&n.$selected.length>0)n.$selected.sort((function(e,t){return t.path.length-e.path.length})).forEach((function(e){var t=o.run(e.object,i);n.$template_root=s.resolve(n.$template_root,e.path,t),n.$selected_root=n.$template_root,e.object=t})),n.$selected.sort((function(e,t){return e.index-t.index}));else{var a=o.run(n.$selected_root,i);n.$template_root=s.resolve(n.$template_root,"",a),n.$selected_root=n.$template_root}return delete String.prototype.$root,delete Number.prototype.$root,delete Function.prototype.$root,delete Array.prototype.$root,delete Boolean.prototype.$root,n},objects:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.object})):[n.$selected_root]},keys:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.key})):Array.isArray(n.$selected_root)?Object.keys(n.$selected_root).map((function(e){return parseInt(e)})):Object.keys(n.$selected_root)},paths:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.path})):Array.isArray(n.$selected_root)?Object.keys(n.$selected_root).map((function(e){return"["+e+"]"})):Object.keys(n.$selected_root).map((function(e){return'["'+e+'"]'}))},values:function(){return n.$progress=null,n.$selected?n.$selected.map((function(e){return e.value})):Object.values(n.$selected_root)},root:function(){return n.$progress=null,n.$selected_root}},i=JSON.stringify,a=function(e,t,s){return-1!==["number","string","boolean"].indexOf(typeof e)?i(e,t,s):i(e,t||function(e,t){if(!(n.$injected&&n.$injected.length>0&&-1!==n.$injected.indexOf(e)||"$root"===e||"$index"===e||e in o.memory))return"function"==typeof t?"("+t.toString()+")":t},s)};JSON.stringify2=a;var u={TRANSFORM:o,SELECT:n,Conditional:r,Helper:s,inject:n.inject,select:n.select,transform:o.transform};e.exports&&(e.exports=u)}()},824:function(e){var t=1e3,s=60*t,r=60*s,o=24*r;function n(e,t,s,r){var o=t>=1.5*s;return Math.round(e/s)+" "+r+(o?"s":"")}e.exports=function(e,i){i=i||{};var a,u,l=typeof e;if("string"===l&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var n=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(n){var i=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*o;case"hours":case"hour":case"hrs":case"hr":case"h":return i*r;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===l&&isFinite(e))return i.long?(a=e,(u=Math.abs(a))>=o?n(a,u,o,"day"):u>=r?n(a,u,r,"hour"):u>=s?n(a,u,s,"minute"):u>=t?n(a,u,t,"second"):a+" ms"):function(e){var n=Math.abs(e);return n>=o?Math.round(e/o)+"d":n>=r?Math.round(e/r)+"h":n>=s?Math.round(e/s)+"m":n>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},673:function(){},883:function(){},316:function(){}},t={},function s(r){var o=t[r];if(void 0!==o)return o.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,s),n.exports}(590);var e,t})); \ No newline at end of file