diff --git a/apps/exec-graph/src/index.ts b/apps/exec-graph/src/index.ts index b655e0e5..9ff9ce92 100644 --- a/apps/exec-graph/src/index.ts +++ b/apps/exec-graph/src/index.ts @@ -4,18 +4,14 @@ import process from 'node:process'; import { DefaultLogger, Engine, + getCoreNodeDefinitions, + getCoreValueTypes, Logger, ManualLifecycleEventEmitter, parseSafeFloat, readGraphFromJSON, - registerCoreProfile, - registerLifecycleEventEmitter, - registerLogger, - registerSceneProfile, - Registry, validateGraph, - validateRegistry, - writeGraphToJSON + validateRegistry } from '@behave-graph/core'; import { program } from 'commander'; import { createRequire } from 'module'; @@ -40,28 +36,30 @@ async function execGraph({ jsonPattern: string; programOptions: ProgramOptions; }) { - const registry = new Registry(); - const manualLifecycleEventEmitter = new ManualLifecycleEventEmitter(); + const lifecycleEventEmitter = new ManualLifecycleEventEmitter(); const logger = new DefaultLogger(); - registerCoreProfile(registry); - registerSceneProfile(registry); - registerLogger(registry.dependencies, logger); - registerLifecycleEventEmitter( - registry.dependencies, - manualLifecycleEventEmitter - ); + const valueTypeMap = getCoreValueTypes(); + const nodeDefinitionMap = getCoreNodeDefinitions(valueTypeMap); const graphJsonPath = jsonPattern; Logger.verbose(`reading behavior graph: ${graphJsonPath}`); const textFile = await fs.readFile(graphJsonPath); - const graph = readGraphFromJSON( - JSON.parse(textFile.toString('utf8')), - registry - ); + const graph = readGraphFromJSON({ + graphJson: JSON.parse(textFile.toString('utf8')), + nodes: nodeDefinitionMap, + values: valueTypeMap, + dependencies: { + logger, + lifecycleEventEmitter + } + }); graph.name = graphJsonPath; const errorList: string[] = []; - errorList.push(...validateRegistry(registry), ...validateGraph(graph)); + errorList.push( + ...validateRegistry({ nodes: nodeDefinitionMap, values: valueTypeMap }), + ...validateGraph(graph) + ); if (errorList.length > 0) { Logger.error(`${errorList.length} errors found:`); @@ -71,13 +69,13 @@ async function execGraph({ return; } - if (programOptions.upgrade) { + /* if (programOptions.upgrade) { const newGraphJson = writeGraphToJSON(graph); await fs.writeFile(graphJsonPath, JSON.stringify(newGraphJson, null, 2)); - } + }*/ Logger.verbose('creating behavior graph'); - const engine = new Engine(graph); + const engine = new Engine(graph.nodes); if (programOptions.trace) { engine.onNodeExecutionStart.addListener((node) => @@ -93,19 +91,19 @@ async function execGraph({ } const startTime = Date.now(); - if (manualLifecycleEventEmitter.startEvent.listenerCount > 0) { + if (lifecycleEventEmitter.startEvent.listenerCount > 0) { Logger.verbose('triggering start event'); - manualLifecycleEventEmitter.startEvent.emit(); + lifecycleEventEmitter.startEvent.emit(); Logger.verbose('executing all (async)'); await engine.executeAllAsync(5); } - if (manualLifecycleEventEmitter.tickEvent.listenerCount > 0) { + if (lifecycleEventEmitter.tickEvent.listenerCount > 0) { const iterations = parseSafeFloat(programOptions.iterations, 5); for (let tick = 0; tick < iterations; tick++) { Logger.verbose(`triggering tick (${tick} of ${iterations})`); - manualLifecycleEventEmitter.tickEvent.emit(); + lifecycleEventEmitter.tickEvent.emit(); Logger.verbose('executing all (async)'); // eslint-disable-next-line no-await-in-loop @@ -113,9 +111,9 @@ async function execGraph({ } } - if (manualLifecycleEventEmitter.endEvent.listenerCount > 0) { + if (lifecycleEventEmitter.endEvent.listenerCount > 0) { Logger.verbose('triggering end event'); - manualLifecycleEventEmitter.endEvent.emit(); + lifecycleEventEmitter.endEvent.emit(); Logger.verbose('executing all (async)'); await engine.executeAllAsync(5); diff --git a/apps/export-node-spec/package.json b/apps/export-node-spec/package.json index d735641d..a0b6dc21 100644 --- a/apps/export-node-spec/package.json +++ b/apps/export-node-spec/package.json @@ -1,6 +1,7 @@ { "name": "export-node-spec", "version": "0.0.1", + "private": true, "type": "module", "bin": "./bin/cli.js", "types": "./dist/index.d.ts", diff --git a/apps/export-node-spec/src/index.ts b/apps/export-node-spec/src/index.ts index a139e76b..82baa121 100644 --- a/apps/export-node-spec/src/index.ts +++ b/apps/export-node-spec/src/index.ts @@ -1,10 +1,11 @@ import { promises as fs } from 'node:fs'; import { + DefaultLogger, + getCoreNodeDefinitions, + getCoreValueTypes, Logger, - registerCoreProfile, - registerSceneProfile, - Registry, + ManualLifecycleEventEmitter, validateNodeRegistry, writeNodeSpecsToJSON } from '@behave-graph/core'; @@ -34,12 +35,15 @@ export const main = async () => { throw new Error('no path specified'); } - const registry = new Registry(); - registerCoreProfile(registry); - registerSceneProfile(registry); + const lifecycleEventEmitter = new ManualLifecycleEventEmitter(); + const logger = new DefaultLogger(); + const valueTypeMap = getCoreValueTypes(); + const nodeDefinitionMap = getCoreNodeDefinitions(valueTypeMap); const errorList: string[] = []; - errorList.push(...validateNodeRegistry(registry)); + errorList.push( + ...validateNodeRegistry({ nodes: nodeDefinitionMap, values: valueTypeMap }) + ); if (errorList.length > 0) { Logger.error(`${errorList.length} errors found:`); errorList.forEach((errorText, errorIndex) => { @@ -48,7 +52,14 @@ export const main = async () => { return; } - const nodeSpecJson = writeNodeSpecsToJSON(registry); + const nodeSpecJson = writeNodeSpecsToJSON({ + nodes: nodeDefinitionMap, + values: valueTypeMap, + dependencies: { + logger, + lifecycleEventEmitter + } + }); nodeSpecJson.sort((a, b) => a.type.localeCompare(b.type)); const jsonOutput = JSON.stringify(nodeSpecJson, null, ' '); if (programOptions.csv) { diff --git a/apps/graph-editor/package.json b/apps/graph-editor/package.json index 6f04d79c..1b19180a 100644 --- a/apps/graph-editor/package.json +++ b/apps/graph-editor/package.json @@ -1,6 +1,7 @@ { "name": "graph-editor", "version": "1.0.0", + "private": true, "type": "module", "scripts": { "build": "tsc --noEmit && esbuild src/index.tsx --target=es2020 --bundle --minify --outfile=public/js/index.js", @@ -9,7 +10,9 @@ "dependencies": { "@behave-graph/core": "*", "@behave-graph/flow": "*", - "three": "^0.145.0" + "@types/three": "0.152.1", + "three": "0.152.2", + "three-stdlib": "^2.22.4" }, "devDependencies": { "@vitejs/plugin-react": "^2.2.0", diff --git a/apps/graph-editor/src/index.tsx b/apps/graph-editor/src/index.tsx index 4050286f..6476557f 100644 --- a/apps/graph-editor/src/index.tsx +++ b/apps/graph-editor/src/index.tsx @@ -6,20 +6,19 @@ import { Examples, Flow } from '@behave-graph/flow'; import React from 'react'; import ReactDOM from 'react-dom/client'; +import Branch from '../../../graphs/core/flow/Branch.json'; +import HelloWorld from '../../../graphs/core/HelloWorld.json'; +import Polynomial from '../../../graphs/core/logic/Polynomial.json'; +import Delay from '../../../graphs/core/time/Delay.json'; +import SetGet from '../../../graphs/core/variables/SetGet.json'; import rawGraph from './graph.json'; -const graph = rawGraph as any as GraphJSON; +const graph = rawGraph as unknown as GraphJSON; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement ); -import HelloWorld from '../../../graphs/core//HelloWorld.json'; -import Branch from '../../../graphs/core/flow/Branch.json'; -import Polynomial from '../../../graphs/core/logic/Polynomial.json'; -import Delay from '../../../graphs/core/time/Delay.json'; -import SetGet from '../../../graphs/core/variables/SetGet.json'; - // TODO remove when json types fixed in behave-graph const examples: Examples = { branch: Branch as unknown as GraphJSON, @@ -31,6 +30,6 @@ const examples: Examples = { root.render( - + ); diff --git a/apps/three-viewer/package.json b/apps/three-viewer/package.json index b15c323f..6df4294c 100644 --- a/apps/three-viewer/package.json +++ b/apps/three-viewer/package.json @@ -1,6 +1,7 @@ { "name": "three-viewer", "version": "1.0.0", + "private": true, "type": "module", "scripts": { "build": "tsc --noEmit && esbuild src/index.ts --target=es2020 --bundle --minify --outfile=public/js/index.js", diff --git a/package-lock.json b/package-lock.json index c7bc1b97..4db34f7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -76,7 +76,9 @@ "dependencies": { "@behave-graph/core": "*", "@behave-graph/flow": "*", - "three": "^0.145.0" + "@types/three": "0.152.1", + "three": "0.152.2", + "three-stdlib": "^2.22.4" }, "devDependencies": { "@vitejs/plugin-react": "^2.2.0", @@ -97,6 +99,11 @@ "@types/three": "^0.152.1" } }, + "apps/three-viewer/node_modules/three": { + "version": "0.145.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.145.0.tgz", + "integrity": "sha512-EKoHQEtEJ4CB6b2BGMBgLZrfwLjXcSUfoI/MiIXUuRpeYsfK5aPWbYhdtIVWOH+x6X0TouldHKHBuc/LAiFzAw==" + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "dev": true, @@ -696,10 +703,15 @@ "resolved": "packages/flow", "link": true }, + "node_modules/@behave-graph/scene": { + "resolved": "packages/scene", + "link": true + }, "node_modules/@changesets/apply-release-plan": { "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.4.tgz", + "integrity": "sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/config": "^2.3.1", @@ -718,8 +730,9 @@ }, "node_modules/@changesets/assemble-release-plan": { "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.4.tgz", + "integrity": "sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/errors": "^0.1.4", @@ -731,16 +744,18 @@ }, "node_modules/@changesets/changelog-git": { "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.14.tgz", + "integrity": "sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==", "dev": true, - "license": "MIT", "dependencies": { "@changesets/types": "^5.2.1" } }, "node_modules/@changesets/cli": { "version": "2.26.2", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.26.2.tgz", + "integrity": "sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/apply-release-plan": "^6.1.4", @@ -782,8 +797,9 @@ }, "node_modules/@changesets/config": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-2.3.1.tgz", + "integrity": "sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==", "dev": true, - "license": "MIT", "dependencies": { "@changesets/errors": "^0.1.4", "@changesets/get-dependents-graph": "^1.3.6", @@ -796,16 +812,18 @@ }, "node_modules/@changesets/errors": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.1.4.tgz", + "integrity": "sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==", "dev": true, - "license": "MIT", "dependencies": { "extendable-error": "^0.1.5" } }, "node_modules/@changesets/get-dependents-graph": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.6.tgz", + "integrity": "sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==", "dev": true, - "license": "MIT", "dependencies": { "@changesets/types": "^5.2.1", "@manypkg/get-packages": "^1.1.3", @@ -816,8 +834,9 @@ }, "node_modules/@changesets/get-release-plan": { "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.17.tgz", + "integrity": "sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/assemble-release-plan": "^5.2.4", @@ -830,13 +849,15 @@ }, "node_modules/@changesets/get-version-range-type": { "version": "0.3.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz", + "integrity": "sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==", + "dev": true }, "node_modules/@changesets/git": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-2.0.0.tgz", + "integrity": "sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/errors": "^0.1.4", @@ -849,16 +870,18 @@ }, "node_modules/@changesets/logger": { "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.0.5.tgz", + "integrity": "sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^2.1.0" } }, "node_modules/@changesets/parse": { "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.16.tgz", + "integrity": "sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==", "dev": true, - "license": "MIT", "dependencies": { "@changesets/types": "^5.2.1", "js-yaml": "^3.13.1" @@ -866,8 +889,9 @@ }, "node_modules/@changesets/pre": { "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.14.tgz", + "integrity": "sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/errors": "^0.1.4", @@ -878,8 +902,9 @@ }, "node_modules/@changesets/read": { "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.5.9.tgz", + "integrity": "sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/git": "^2.0.0", @@ -893,13 +918,15 @@ }, "node_modules/@changesets/types": { "version": "5.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-5.2.1.tgz", + "integrity": "sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==", + "dev": true }, "node_modules/@changesets/write": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.2.3.tgz", + "integrity": "sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.1", "@changesets/types": "^5.2.1", @@ -908,6 +935,35 @@ "prettier": "^2.7.1" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.5.0.tgz", + "integrity": "sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==", + "dependencies": { + "@chevrotain/gast": "10.5.0", + "@chevrotain/types": "10.5.0", + "lodash": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-10.5.0.tgz", + "integrity": "sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==", + "dependencies": { + "@chevrotain/types": "10.5.0", + "lodash": "4.17.21" + } + }, + "node_modules/@chevrotain/types": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-10.5.0.tgz", + "integrity": "sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==" + }, + "node_modules/@chevrotain/utils": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-10.5.0.tgz", + "integrity": "sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==" + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "dev": true, @@ -933,193 +989,534 @@ "dev": true, "license": "MIT" }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/android-arm": { "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.3.tgz", + "integrity": "sha512-QOn3VIlL6Qv1eHBpQB/s7simaZgGss2ASyxDOwYSLmc6vD0uuizZkuYawHmuLjWEm5wPwp0JQWhbpaYwwGevYw==", "cpu": [ - "arm64" + "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "darwin" + "android" ], "engines": { "node": ">=12" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", + "node_modules/@esbuild/android-arm64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.3.tgz", + "integrity": "sha512-PgabCsoaEEnnOiF6rUhOBXgYoLFIrHWP6mfLOzuQ1oZ1lwBdTL0hp5ivC4K3Kvz3BD8EipjeQo6l0aty3nr4qQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=12" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", + "node_modules/@esbuild/android-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.3.tgz", + "integrity": "sha512-1OkJf8wNX1W5ucbp5HrK+z42b9DINb4ix59oJH/PIsh9cyFMqjgRKtCBXg0zEWhkmP1k3egdfrnS7cDTpLH43g==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.3.tgz", + "integrity": "sha512-57aofORpY7wDAuMs6DeqpmgSnVfZ63RgGbR/BHdOSTqJgYvHDCMY7/o1myFntl3k0YxtLE3WAm56nMf4qy3UDw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.3.tgz", + "integrity": "sha512-NVBqMnxT9qvgu7Z322LUDlwjh4GDk6wEePyAQnHF9noxik/WvLFmr5v3Vgz5LSvqFducLCxsdmLztKhdpFW0Gg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@eslint/js": { - "version": "8.43.0", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.3.tgz", + "integrity": "sha512-XiLK1AsCk2wKxN7j8h9GXXCs8FPZhp07U0rnpwRkAVSVGgLaIWYSqpTRzKjAfqJiZlp+XKo1HwsmDdICEKB3Dg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.4.0", - "hasInstallScript": true, - "license": "MIT", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.3.tgz", + "integrity": "sha512-xyITfrF0G3l1gwR79hvNCCWKQ/16uK14xNNPFgzjbIqF4EpBvhO6l3jrWxXFUW51z6dVIl2Szh3x3uIbBWzH1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.4.0", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" - }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.3.tgz", + "integrity": "sha512-fc/T0QHMzvmnlF+kfD6bHLB8u+17gg13260p/E86yYjVoKNFjonL/+Y0GGQjMbFUas9QijqOa7pcR00a9RNkwg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.4.0", - "hasInstallScript": true, - "license": "(CC-BY-4.0 AND MIT)", - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.0" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.3.tgz", + "integrity": "sha512-lsKUYVd8L/j2uNs8dhMjMsKC5MHYh77gR9EThu7YCeeFz1XpIkx1I4a7mhoVfPS2VPVD1pMCh+PgxuAHUcEmXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/react-fontawesome": { - "version": "0.2.0", - "license": "MIT", - "dependencies": { - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "@fortawesome/fontawesome-svg-core": "~1 || ~6", - "react": ">=16.3" + "node": ">=12" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.3.tgz", + "integrity": "sha512-EyfGWeOwRqK5Xj18vok0qv8IFBZ1/+hKV+cqD44oVhGsxHo9TmPtoSiDrWn8Sa2swq/VuO5Aiog6YPDj81oIkA==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.10.0" + "node": ">=12" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.3.tgz", + "integrity": "sha512-PwXkcl3t0kSeYH5RuJIeh/fHOzKZd+ZdifAWzpVO+9TLWArutTFBJvOSkTZ3CcqQqNrTj1Qyo6nqE8MQj/a7cQ==", + "cpu": [ + "loong64" + ], "dev": true, - "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=12" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.3.tgz", + "integrity": "sha512-CRVkkSXf5GQcq7Am2a2tdIn85oqi/bkjuPvhNqcdeTgI0xgNbqLnEPRy2AEGkRuaJWB5uCX1IC4sqnY8ET14Yg==", + "cpu": [ + "mips64el" + ], "dev": true, - "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.3.tgz", + "integrity": "sha512-t7zK1Cheh0xvzfZbimztiE0wGnpV+YRsBg3tefcEBN3O4GzgLu6fFpA5HxEyVm3hHZW1jAC4OhoGEp7C5Ii6Eg==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.3.tgz", + "integrity": "sha512-fUZPtyCYih6y4lDYdSM4Yoax4nS7aH0/XixJStys+9tfp5cAlIAZhEVKOOdeGXmQn0IEyiUtlIsPnfObbeDQfQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.3.tgz", + "integrity": "sha512-oIcK2LqHWqfMERqjvaKJ3QJmycHn723HsXIv5gH4iGfmePfSj+gi0ZQv2h4bHUg2bs2gJtV0DlIjGhEuvdgxLw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.3.tgz", + "integrity": "sha512-RW9lpfZ6XZ6f5to2DJPvt0f/4RXEW229Xf++quVoW+YbnPrcapIJChtD/AmZ8cK3hglO/hXxJjs21pV0/l7L5w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.3.tgz", + "integrity": "sha512-piZ2oBoaq58pKZvhgdV6PemlL30Uhd9GmmOkIGZYgChwNcyVSSl6iMEJxMzU7x44Lk9q+hJ6a343M/iVEMEvxA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.3.tgz", + "integrity": "sha512-vaMfouYTz/4tKdQsXDccqhV6wgPEr+hfuxdNU5Pl/vQxYTsqcXv5DYEa5Z1RAxCoua5aEB+Uj5V7VT/bM92wxw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.3.tgz", + "integrity": "sha512-Fa3rNQQ9q1qwy9u2cdDvuGKy3jmPnPPMDdyy/qbn5d395Pb9hjLYiPzX9BozXMPJDlCNofSY7jN3miM9gyAdHA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.3.tgz", + "integrity": "sha512-LPJC8ub+9uzyC6ygVmp00dAqet1q1DsZ/OldGIIBt+y+Ctd1OfnKNlzQgXK8nxwY1G8fAhklFSeSRRgAUJnR0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.3.tgz", + "integrity": "sha512-WtUyRspyxZR6NTc2HG4xd9Wvz8lP4C6OUY1gAqisrf151HvXIxsK0mfAacFJNS7EN2wvPTgjP+SM8vgBOx5+zA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.3.tgz", + "integrity": "sha512-Z8qCK4BkBm40j5KUM4NrkxYQS0R12cBO1NBVtI4vws6uwh1n/VaNu31Hm+n2cJUWdFbfH57PBghkhm9yLgmPfw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", "dev": true, "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.43.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.0", + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.4.0", + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { "node": ">=12" }, @@ -1129,8 +1526,9 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -1140,13 +1538,15 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1161,8 +1561,9 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1175,8 +1576,9 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1191,8 +1593,9 @@ }, "node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -1870,8 +2273,9 @@ }, "node_modules/@lerna/child-process": { "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-6.6.2.tgz", + "integrity": "sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "execa": "^5.0.0", @@ -1883,8 +2287,9 @@ }, "node_modules/@lerna/child-process/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1897,8 +2302,9 @@ }, "node_modules/@lerna/child-process/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1912,8 +2318,9 @@ }, "node_modules/@lerna/child-process/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1923,21 +2330,24 @@ }, "node_modules/@lerna/child-process/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@lerna/child-process/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@lerna/child-process/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1947,8 +2357,9 @@ }, "node_modules/@lerna/create": { "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-6.6.2.tgz", + "integrity": "sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ==", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "6.6.2", "dedent": "^0.7.0", @@ -1970,8 +2381,9 @@ }, "node_modules/@lerna/create/node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -1984,8 +2396,9 @@ }, "node_modules/@lerna/create/node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -1995,16 +2408,18 @@ }, "node_modules/@lerna/create/node_modules/universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/@lerna/legacy-package-management": { "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz", + "integrity": "sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg==", "dev": true, - "license": "MIT", "dependencies": { "@npmcli/arborist": "6.2.3", "@npmcli/run-script": "4.1.7", @@ -2075,8 +2490,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2089,8 +2505,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2104,13 +2521,15 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/ci-info": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, "node_modules/@lerna/legacy-package-management/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2120,13 +2539,15 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/@lerna/legacy-package-management/node_modules/execa": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -2147,8 +2568,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -2162,8 +2584,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -2176,8 +2599,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/get-stream": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2187,8 +2611,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2198,21 +2623,24 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/@lerna/legacy-package-management/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@lerna/legacy-package-management/node_modules/inquirer": { "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -2236,8 +2664,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/inquirer/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2251,8 +2680,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/is-ci": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, - "license": "MIT", "dependencies": { "ci-info": "^2.0.0" }, @@ -2262,16 +2692,18 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/is-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@lerna/legacy-package-management/node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -2281,8 +2713,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -2295,8 +2728,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -2306,8 +2740,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2317,16 +2752,18 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/minipass": { "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch": { "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^11.0.0", "minipass": "^4.0.0", @@ -2342,8 +2779,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -2356,8 +2794,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2370,8 +2809,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -2384,8 +2824,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/pretty-format": { "version": "29.4.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", + "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.4.3", "ansi-styles": "^5.0.0", @@ -2397,8 +2838,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2408,8 +2850,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/semver": { "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2422,8 +2865,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2433,16 +2877,18 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/@lerna/legacy-package-management/node_modules/validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -2452,8 +2898,9 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/write-file-atomic": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -2464,13 +2911,15 @@ }, "node_modules/@lerna/legacy-package-management/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/@lerna/legacy-package-management/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -2486,8 +2935,9 @@ }, "node_modules/@manypkg/find-root": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "@types/node": "^12.7.1", @@ -2497,13 +2947,15 @@ }, "node_modules/@manypkg/find-root/node_modules/@types/node": { "version": "12.20.55", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true }, "node_modules/@manypkg/find-root/node_modules/fs-extra": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -2515,8 +2967,9 @@ }, "node_modules/@manypkg/get-packages": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "@changesets/types": "^4.0.1", @@ -2528,13 +2981,15 @@ }, "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { "version": "4.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", + "dev": true }, "node_modules/@manypkg/get-packages/node_modules/fs-extra": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -2578,8 +3033,9 @@ }, "node_modules/@npmcli/arborist": { "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-6.2.3.tgz", + "integrity": "sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==", "dev": true, - "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.0", @@ -2624,8 +3080,9 @@ }, "node_modules/@npmcli/arborist/node_modules/@npmcli/run-script": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/promise-spawn": "^6.0.0", @@ -2639,8 +3096,9 @@ }, "node_modules/@npmcli/arborist/node_modules/are-we-there-yet": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz", + "integrity": "sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^4.1.0" @@ -2651,14 +3109,17 @@ }, "node_modules/@npmcli/arborist/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@npmcli/arborist/node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -2674,7 +3135,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -2682,8 +3142,9 @@ }, "node_modules/@npmcli/arborist/node_modules/gauge": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", + "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -2700,8 +3161,9 @@ }, "node_modules/@npmcli/arborist/node_modules/minimatch": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2714,8 +3176,9 @@ }, "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -2728,8 +3191,9 @@ }, "node_modules/@npmcli/arborist/node_modules/npmlog": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "^4.0.0", "console-control-strings": "^1.1.0", @@ -2741,14 +3205,16 @@ } }, "node_modules/@npmcli/arborist/node_modules/readable-stream": { - "version": "4.4.1", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", "dev": true, - "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", - "process": "^0.11.10" + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2756,8 +3222,9 @@ }, "node_modules/@npmcli/arborist/node_modules/signal-exit": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -2767,8 +3234,9 @@ }, "node_modules/@npmcli/arborist/node_modules/ssri": { "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -2778,8 +3246,9 @@ }, "node_modules/@npmcli/arborist/node_modules/validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -2789,8 +3258,9 @@ }, "node_modules/@npmcli/arborist/node_modules/which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2803,8 +3273,9 @@ }, "node_modules/@npmcli/fs": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, - "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -2814,8 +3285,9 @@ }, "node_modules/@npmcli/git": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^6.0.0", "lru-cache": "^7.4.4", @@ -2832,16 +3304,18 @@ }, "node_modules/@npmcli/git/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/@npmcli/git/node_modules/which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2854,8 +3328,9 @@ }, "node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -2869,8 +3344,9 @@ }, "node_modules/@npmcli/map-workspaces": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/name-from-folder": "^2.0.0", "glob": "^10.2.2", @@ -2883,37 +3359,18 @@ }, "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "10.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "9.0.2", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2926,8 +3383,9 @@ }, "node_modules/@npmcli/metavuln-calculator": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz", + "integrity": "sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==", "dev": true, - "license": "ISC", "dependencies": { "cacache": "^17.0.0", "json-parse-even-better-errors": "^3.0.0", @@ -2940,8 +3398,10 @@ }, "node_modules/@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -2952,24 +3412,27 @@ }, "node_modules/@npmcli/name-from-folder": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/node-gyp": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/package-json": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-3.1.1.tgz", + "integrity": "sha512-+UW0UWOYFKCkvszLoTwrYGrjNrT8tI5Ckeb/h+Z1y1fsNJEctl7HmerA5j2FgmoqFaLI2gsA1X9KgMFqx/bRmA==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^4.1.0", "glob": "^10.2.2", @@ -2982,53 +3445,11 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "9.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@npmcli/promise-spawn": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "dev": true, - "license": "ISC", "dependencies": { "which": "^3.0.0" }, @@ -3038,8 +3459,9 @@ }, "node_modules/@npmcli/promise-spawn/node_modules/which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3052,8 +3474,9 @@ }, "node_modules/@npmcli/query": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.0.tgz", + "integrity": "sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -3063,8 +3486,9 @@ }, "node_modules/@npmcli/run-script": { "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.1.7.tgz", + "integrity": "sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", @@ -3078,16 +3502,18 @@ }, "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@npmcli/run-script/node_modules/@npmcli/promise-spawn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, - "license": "ISC", "dependencies": { "infer-owner": "^1.0.4" }, @@ -3097,18 +3523,21 @@ }, "node_modules/@npmcli/run-script/node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/@npmcli/run-script/node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true }, "node_modules/@npmcli/run-script/node_modules/read-package-json-fast": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" @@ -3119,16 +3548,18 @@ }, "node_modules/@nrwl/cli": { "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.4.tgz", + "integrity": "sha512-FoiGFCLpb/r4HXCM3KYqT0xteP+MRV6bIHjz3bdPHIDLmBNQQnRRaV2K47jtJ6zjh1eOU5UHKyDtDDYf80Idpw==", "dev": true, - "license": "MIT", "dependencies": { "nx": "15.9.4" } }, "node_modules/@nrwl/devkit": { "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-15.9.4.tgz", + "integrity": "sha512-mUX1kXTuPMdTzFxIzH+MsSNvdppOmstPDOEtiGFZJTuJ625ki0HhNJILO3N2mJ7MeMrLqIlAiNdvelQaObxYsQ==", "dev": true, - "license": "MIT", "dependencies": { "ejs": "^3.1.7", "ignore": "^5.0.4", @@ -3142,8 +3573,9 @@ }, "node_modules/@nrwl/devkit/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3153,8 +3585,9 @@ }, "node_modules/@nrwl/devkit/node_modules/semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3167,8 +3600,9 @@ }, "node_modules/@nrwl/devkit/node_modules/tmp": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, - "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -3178,11 +3612,14 @@ }, "node_modules/@nrwl/devkit/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/@nrwl/nx-darwin-arm64": { "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.4.tgz", + "integrity": "sha512-XnvrnT9BJsgThY/4xUcYtE077ERq/img8CkRj7MOOBNOh0/nVcR4LGbBKDHtwE3HPk0ikyS/SxRyNa9msvi3QQ==", "cpu": [ "arm64" ], @@ -3195,10 +3632,139 @@ "node": ">= 10" } }, + "node_modules/@nrwl/nx-darwin-x64": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.4.tgz", + "integrity": "sha512-WKSfSlpVMLchpXkax0geeUNyhvNxwO7qUz/s0/HJWBekt8fizwKDwDj1gP7fOu+YWb/tHiSscbR1km8PtdjhQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-arm-gnueabihf": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.4.tgz", + "integrity": "sha512-a/b4PP7lP/Cgrh0LjC4O2YTt5pyf4DQTGtuE8qlo8o486UiofCtk4QGJX72q80s23L0ejCaKY2ULKx/3zMLjuA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-arm64-gnu": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.4.tgz", + "integrity": "sha512-ibBV8fMhSfLVd/2WzcDuUm32BoZsattuKkvMmOoyU6Pzoznc3AqyDjJR4xCIoAn5Rf+Nu1oeQONr5FAtb1Ugow==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-arm64-musl": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.4.tgz", + "integrity": "sha512-iIjvVYd7+uM4jVD461+PvU5XTALgSvJOODUaMRGOoDl0KlMuTe6pQZlw0eXjl5rcTd6paKaVFWT5j6awr8kj7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-x64-gnu": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.4.tgz", + "integrity": "sha512-q4OyH72mdrE4KellBWtwpr5EwfxHKNoFP9//7FAILO68ROh0rpMd7YQMlTB7T04UEUHjKEEsFGTlVXIee3Viwg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-linux-x64-musl": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.4.tgz", + "integrity": "sha512-67+/XNMR1CgLPyeGX8jqSG6l8yYD0iiwUgcu1Vaxq6N05WwnqVisIW8XzLSRUtKt4WyVQgOWk3aspImpMVOG3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-win32-arm64-msvc": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.4.tgz", + "integrity": "sha512-2rEsq3eOGVCYpYJn2tTJkOGNJm/U8rP/FmqtZXYa6VJv/00XP3Gl00IXFEDaYV6rZo7SWqLxtEPUbjK5LwPzZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nrwl/nx-win32-x64-msvc": { + "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.4.tgz", + "integrity": "sha512-bogVju4Z/hy1jbppqaTNbmV1R4Kg0R5fKxXAXC2LaL7FL0dup31wPumdV+mXttXBNOBDjV8V/Oz1ZqdmxpOJUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nrwl/tao": { "version": "15.9.4", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.4.tgz", + "integrity": "sha512-m90iz8UsXx1rgPm1dxsBQjSrCViWYZIrp8bpwjSCW24j3kifyilYSXGuKaRwZwUn7eNmH/kZcI9/8qeGIPF4Sg==", "dev": true, - "license": "MIT", "dependencies": { "nx": "15.9.4" }, @@ -3208,16 +3774,18 @@ }, "node_modules/@octokit/auth-token": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", + "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@octokit/core": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", + "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/auth-token": "^3.0.0", "@octokit/graphql": "^5.0.0", @@ -3233,8 +3801,9 @@ }, "node_modules/@octokit/endpoint": { "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -3246,8 +3815,9 @@ }, "node_modules/@octokit/graphql": { "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", + "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/request": "^6.0.0", "@octokit/types": "^9.0.0", @@ -3259,18 +3829,21 @@ }, "node_modules/@octokit/openapi-types": { "version": "18.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true }, "node_modules/@octokit/plugin-enterprise-rest": { "version": "6.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz", + "integrity": "sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^6.41.0" }, @@ -3283,29 +3856,33 @@ }, "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { "version": "12.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true }, "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/openapi-types": "^12.11.0" } }, "node_modules/@octokit/plugin-request-log": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, - "license": "MIT", "peerDependencies": { "@octokit/core": ">=3" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz", + "integrity": "sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^8.1.1", "deprecation": "^2.3.1" @@ -3319,21 +3896,24 @@ }, "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { "version": "14.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==", + "dev": true }, "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/openapi-types": "^14.0.0" } }, "node_modules/@octokit/request": { "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -3348,8 +3928,9 @@ }, "node_modules/@octokit/request-error": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "deprecation": "^2.0.0", @@ -3361,8 +3942,9 @@ }, "node_modules/@octokit/rest": { "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.3.tgz", + "integrity": "sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/core": "^4.0.0", "@octokit/plugin-paginate-rest": "^3.0.0", @@ -3375,17 +3957,19 @@ }, "node_modules/@octokit/types": { "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, - "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@parcel/watcher": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "node-addon-api": "^3.2.1", "node-gyp-build": "^4.3.0" @@ -3400,8 +3984,9 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -3410,6 +3995,7 @@ "node_modules/@reactflow/background": { "version": "11.2.4", "license": "MIT", + "peer": true, "dependencies": { "@reactflow/core": "11.7.4", "classcat": "^5.0.3", @@ -3423,6 +4009,7 @@ "node_modules/@reactflow/controls": { "version": "11.1.15", "license": "MIT", + "peer": true, "dependencies": { "@reactflow/core": "11.7.4", "classcat": "^5.0.3", @@ -3436,6 +4023,7 @@ "node_modules/@reactflow/core": { "version": "11.7.4", "license": "MIT", + "peer": true, "dependencies": { "@types/d3": "^7.4.0", "@types/d3-drag": "^3.0.1", @@ -3455,6 +4043,7 @@ "node_modules/@reactflow/minimap": { "version": "11.5.4", "license": "MIT", + "peer": true, "dependencies": { "@reactflow/core": "11.7.4", "@types/d3-selection": "^3.0.3", @@ -3472,6 +4061,7 @@ "node_modules/@reactflow/node-resizer": { "version": "2.1.1", "license": "MIT", + "peer": true, "dependencies": { "@reactflow/core": "^11.6.0", "classcat": "^5.0.4", @@ -3487,6 +4077,7 @@ "node_modules/@reactflow/node-toolbar": { "version": "1.2.3", "license": "MIT", + "peer": true, "dependencies": { "@reactflow/core": "11.7.4", "classcat": "^5.0.3", @@ -3511,20 +4102,21 @@ }, "node_modules/@sigstore/protobuf-specs": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", + "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@sigstore/tuf": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.2.tgz", + "integrity": "sha512-vjwcYePJzM01Ha6oWWZ9gNcdIgnzyFxfqfWzph483DPJTH8Tb7f7bQRRll3CYVkyH56j0AgcPAcl6Vg95DPF+Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.1.0", - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.1.3" + "tuf-js": "^1.1.7" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -3899,8 +4491,9 @@ }, "node_modules/@tootallnate/once": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } @@ -3927,16 +4520,18 @@ }, "node_modules/@tufjs/canonical-json": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", "dev": true, - "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", "dev": true, - "license": "MIT", "dependencies": { "@tufjs/canonical-json": "1.0.0", "minimatch": "^9.0.0" @@ -3947,16 +4542,18 @@ }, "node_modules/@tufjs/models/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.2", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3969,7 +4566,6 @@ }, "node_modules/@tweenjs/tween.js": { "version": "18.6.4", - "dev": true, "license": "MIT" }, "node_modules/@types/aria-query": { @@ -4017,6 +4613,7 @@ "node_modules/@types/d3": { "version": "7.4.0", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", @@ -4052,11 +4649,13 @@ }, "node_modules/@types/d3-array": { "version": "3.0.5", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-axis": { "version": "3.0.2", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-selection": "*" } @@ -4064,21 +4663,25 @@ "node_modules/@types/d3-brush": { "version": "3.0.2", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-chord": { "version": "3.0.2", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-color": { "version": "3.1.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-contour": { "version": "3.0.2", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" @@ -4086,113 +4689,136 @@ }, "node_modules/@types/d3-delaunay": { "version": "6.0.1", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-dispatch": { "version": "3.0.2", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-drag": { "version": "3.0.2", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-dsv": { "version": "3.0.1", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-ease": { "version": "3.0.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-fetch": { "version": "3.0.2", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-dsv": "*" } }, "node_modules/@types/d3-force": { "version": "3.0.4", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-format": { "version": "3.0.1", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-geo": { "version": "3.0.3", "license": "MIT", + "peer": true, "dependencies": { "@types/geojson": "*" } }, "node_modules/@types/d3-hierarchy": { "version": "3.1.2", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-interpolate": { "version": "3.0.1", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-color": "*" } }, "node_modules/@types/d3-path": { "version": "3.0.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-polygon": { "version": "3.0.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-quadtree": { "version": "3.0.2", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-random": { "version": "3.0.1", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-scale": { "version": "4.0.3", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { "version": "3.0.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-selection": { "version": "3.0.5", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-shape": { "version": "3.1.1", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { "version": "3.0.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-time-format": { "version": "4.0.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-timer": { "version": "3.0.0", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/d3-transition": { "version": "3.0.3", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-selection": "*" } @@ -4200,11 +4826,17 @@ "node_modules/@types/d3-zoom": { "version": "3.0.3", "license": "MIT", + "peer": true, "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, + "node_modules/@types/draco3d": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.2.tgz", + "integrity": "sha512-goh23EGr6CLV6aKPwN1p8kBD/7tT5V/bLpToSbarKrwVejqNrspVrv8DhliteYkkhZYrlq/fwKZRRUzH4XN88w==" + }, "node_modules/@types/eslint": { "version": "8.40.2", "dev": true, @@ -4221,7 +4853,18 @@ }, "node_modules/@types/geojson": { "version": "7946.0.10", - "license": "MIT" + "license": "MIT", + "peer": true + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } }, "node_modules/@types/graceful-fs": { "version": "4.1.6", @@ -4233,8 +4876,9 @@ }, "node_modules/@types/is-ci": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==", "dev": true, - "license": "MIT", "dependencies": { "ci-info": "^3.1.0" } @@ -4279,10 +4923,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true }, "node_modules/@types/node": { "version": "18.16.18", @@ -4294,10 +4945,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/offscreencanvas": { + "version": "2019.7.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", + "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==" + }, "node_modules/@types/parse-json": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, "node_modules/@types/prettier": { "version": "2.7.3", @@ -4344,7 +5001,6 @@ }, "node_modules/@types/stats.js": { "version": "0.17.0", - "dev": true, "license": "MIT" }, "node_modules/@types/testing-library__jest-dom": { @@ -4357,7 +5013,6 @@ }, "node_modules/@types/three": { "version": "0.152.1", - "dev": true, "license": "MIT", "dependencies": { "@tweenjs/tween.js": "~18.6.4", @@ -4374,7 +5029,6 @@ }, "node_modules/@types/webxr": { "version": "0.5.2", - "dev": true, "license": "MIT" }, "node_modules/@types/yargs": { @@ -4592,13 +5246,15 @@ }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.47.1", + "version": "3.0.0-rc.48.1", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.48.1.tgz", + "integrity": "sha512-qEewJouhRvaecGjbkjz9kMKn96UASbDodNrE5MYy2TrXkHcisIkbMxZdGBYfAq+s1dFtCSx/5H4k5bEkfakM+A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "js-yaml": "^3.10.0", "tslib": "^2.4.0" @@ -4606,8 +5262,9 @@ }, "node_modules/@zkochan/js-yaml": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4617,21 +5274,24 @@ }, "node_modules/@zkochan/js-yaml/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/abbrev": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/abort-controller": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, - "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -4668,13 +5328,15 @@ }, "node_modules/add-stream": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true }, "node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -4684,8 +5346,9 @@ }, "node_modules/agentkeepalive": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "depd": "^2.0.0", @@ -4697,8 +5360,9 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4724,8 +5388,9 @@ }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -4793,13 +5458,15 @@ }, "node_modules/aproba": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, "node_modules/are-we-there-yet": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -4843,16 +5510,18 @@ }, "node_modules/array-differ": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array-ify": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true }, "node_modules/array-includes": { "version": "3.1.6", @@ -4916,8 +5585,9 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -4928,26 +5598,30 @@ }, "node_modules/arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/async": { "version": "3.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true }, "node_modules/asynckit": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 4.0.0" } @@ -4997,8 +5671,9 @@ }, "node_modules/axios": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dev": true, - "license": "MIT", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -5162,6 +5837,8 @@ }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, "funding": [ { @@ -5176,18 +5853,19 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/before-after-hook": { "version": "2.2.3", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true }, "node_modules/better-path-resolve": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", + "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", "dev": true, - "license": "MIT", "dependencies": { "is-windows": "^1.0.0" }, @@ -5197,8 +5875,9 @@ }, "node_modules/bin-links": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.1.tgz", + "integrity": "sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==", "dev": true, - "license": "ISC", "dependencies": { "cmd-shim": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -5211,24 +5890,27 @@ }, "node_modules/bin-links/node_modules/cmd-shim": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/bin-links/node_modules/read-cmd-shim": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/bin-links/node_modules/signal-exit": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -5238,8 +5920,9 @@ }, "node_modules/bin-links/node_modules/write-file-atomic": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -5258,8 +5941,9 @@ }, "node_modules/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -5288,8 +5972,9 @@ }, "node_modules/breakword": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/breakword/-/breakword-1.0.6.tgz", + "integrity": "sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==", "dev": true, - "license": "MIT", "dependencies": { "wcwidth": "^1.0.1" } @@ -5346,6 +6031,8 @@ }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -5361,7 +6048,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -5374,24 +6060,27 @@ }, "node_modules/builtins": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.0.0" } }, "node_modules/byte-size": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz", + "integrity": "sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/cacache": { "version": "17.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", + "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -5410,61 +6099,20 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/cacache/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/cacache/node_modules/ssri": { "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -5510,8 +6158,9 @@ }, "node_modules/camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -5566,8 +6215,22 @@ }, "node_modules/chardet": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chevrotain": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-10.5.0.tgz", + "integrity": "sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==", + "dependencies": { + "@chevrotain/cst-dts-gen": "10.5.0", + "@chevrotain/gast": "10.5.0", + "@chevrotain/types": "10.5.0", + "@chevrotain/utils": "10.5.0", + "lodash": "4.17.21", + "regexp-to-ast": "0.5.0" + } }, "node_modules/chokidar": { "version": "3.5.3", @@ -5608,8 +6271,9 @@ }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } @@ -5635,7 +6299,8 @@ }, "node_modules/classcat": { "version": "5.0.4", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/classnames": { "version": "2.3.2", @@ -5643,16 +6308,18 @@ }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -5662,8 +6329,9 @@ }, "node_modules/cli-spinners": { "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -5673,16 +6341,18 @@ }, "node_modules/cli-width": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "license": "ISC", "engines": { "node": ">= 10" } }, "node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -5691,16 +6361,18 @@ }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -5712,8 +6384,9 @@ }, "node_modules/clone-deep/node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -5723,8 +6396,9 @@ }, "node_modules/cmd-shim": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", + "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "dev": true, - "license": "ISC", "dependencies": { "mkdirp-infer-owner": "^2.0.0" }, @@ -5761,16 +6435,18 @@ }, "node_modules/color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/columnify": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, - "license": "MIT", "dependencies": { "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" @@ -5781,8 +6457,9 @@ }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5799,13 +6476,15 @@ }, "node_modules/common-ancestor-path": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true }, "node_modules/compare-func": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" @@ -5813,8 +6492,9 @@ }, "node_modules/compare-func/node_modules/dot-prop": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, - "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -5833,11 +6513,12 @@ }, "node_modules/concat-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "engines": [ "node >= 6.0" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -5847,6 +6528,8 @@ }, "node_modules/config-chain": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "dev": true, "dependencies": { "ini": "^1.3.4", @@ -5855,13 +6538,15 @@ }, "node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/conventional-changelog-angular": { "version": "5.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", + "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", "dev": true, - "license": "ISC", "dependencies": { "compare-func": "^2.0.0", "q": "^1.5.1" @@ -5872,8 +6557,9 @@ }, "node_modules/conventional-changelog-core": { "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", "dev": true, - "license": "MIT", "dependencies": { "add-stream": "^1.0.0", "conventional-changelog-writer": "^5.0.0", @@ -5896,8 +6582,9 @@ }, "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5907,8 +6594,9 @@ }, "node_modules/conventional-changelog-core/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5918,8 +6606,9 @@ }, "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -5932,21 +6621,24 @@ }, "node_modules/conventional-changelog-core/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/conventional-changelog-preset-loader": { "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/conventional-changelog-writer": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, - "license": "MIT", "dependencies": { "conventional-commits-filter": "^2.0.7", "dateformat": "^3.0.0", @@ -5967,8 +6659,9 @@ }, "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5978,8 +6671,9 @@ }, "node_modules/conventional-changelog-writer/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5989,8 +6683,9 @@ }, "node_modules/conventional-changelog-writer/node_modules/meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -6013,8 +6708,9 @@ }, "node_modules/conventional-changelog-writer/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -6026,9 +6722,10 @@ } }, "node_modules/conventional-changelog-writer/node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.3", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6041,8 +6738,9 @@ }, "node_modules/conventional-changelog-writer/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -6055,8 +6753,9 @@ }, "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -6071,21 +6770,24 @@ }, "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -6095,32 +6797,36 @@ }, "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/conventional-changelog-writer/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/conventional-changelog-writer/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -6130,13 +6836,15 @@ }, "node_modules/conventional-changelog-writer/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/conventional-commits-filter": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, - "license": "MIT", "dependencies": { "lodash.ismatch": "^4.4.0", "modify-values": "^1.0.0" @@ -6147,8 +6855,9 @@ }, "node_modules/conventional-commits-parser": { "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, - "license": "MIT", "dependencies": { "is-text-path": "^1.0.1", "JSONStream": "^1.0.4", @@ -6166,8 +6875,9 @@ }, "node_modules/conventional-commits-parser/node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6177,8 +6887,9 @@ }, "node_modules/conventional-commits-parser/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6188,8 +6899,9 @@ }, "node_modules/conventional-commits-parser/node_modules/meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -6212,8 +6924,9 @@ }, "node_modules/conventional-commits-parser/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -6226,8 +6939,9 @@ }, "node_modules/conventional-commits-parser/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -6240,8 +6954,9 @@ }, "node_modules/conventional-commits-parser/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -6256,21 +6971,24 @@ }, "node_modules/conventional-commits-parser/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -6280,24 +6998,27 @@ }, "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/conventional-commits-parser/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -6307,13 +7028,15 @@ }, "node_modules/conventional-commits-parser/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/conventional-recommended-bump": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", "dev": true, - "license": "MIT", "dependencies": { "concat-stream": "^2.0.0", "conventional-changelog-preset-loader": "^2.3.4", @@ -6333,8 +7056,9 @@ }, "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6344,8 +7068,9 @@ }, "node_modules/conventional-recommended-bump/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -6355,8 +7080,9 @@ }, "node_modules/conventional-recommended-bump/node_modules/meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -6379,8 +7105,9 @@ }, "node_modules/conventional-recommended-bump/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -6393,8 +7120,9 @@ }, "node_modules/conventional-recommended-bump/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -6407,8 +7135,9 @@ }, "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -6423,21 +7152,24 @@ }, "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -6447,24 +7179,27 @@ }, "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/conventional-recommended-bump/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -6474,8 +7209,9 @@ }, "node_modules/conventional-recommended-bump/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/convert-source-map": { "version": "2.0.0", @@ -6484,13 +7220,15 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "node_modules/cosmiconfig": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -6522,8 +7260,9 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -6551,8 +7290,9 @@ }, "node_modules/csv": { "version": "5.5.3", + "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", + "integrity": "sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==", "dev": true, - "license": "MIT", "dependencies": { "csv-generate": "^3.4.3", "csv-parse": "^4.16.3", @@ -6565,22 +7305,26 @@ }, "node_modules/csv-generate": { "version": "3.4.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz", + "integrity": "sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==", + "dev": true }, "node_modules/csv-parse": { "version": "4.16.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true }, "node_modules/csv-stringify": { "version": "5.6.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", + "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==", + "dev": true }, "node_modules/d3-color": { "version": "3.1.0", "license": "ISC", + "peer": true, "engines": { "node": ">=12" } @@ -6588,6 +7332,7 @@ "node_modules/d3-dispatch": { "version": "3.0.1", "license": "ISC", + "peer": true, "engines": { "node": ">=12" } @@ -6595,6 +7340,7 @@ "node_modules/d3-drag": { "version": "3.0.0", "license": "ISC", + "peer": true, "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -6606,6 +7352,7 @@ "node_modules/d3-ease": { "version": "3.0.1", "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">=12" } @@ -6613,6 +7360,7 @@ "node_modules/d3-interpolate": { "version": "3.0.1", "license": "ISC", + "peer": true, "dependencies": { "d3-color": "1 - 3" }, @@ -6623,6 +7371,7 @@ "node_modules/d3-selection": { "version": "3.0.0", "license": "ISC", + "peer": true, "engines": { "node": ">=12" } @@ -6630,6 +7379,7 @@ "node_modules/d3-timer": { "version": "3.0.1", "license": "ISC", + "peer": true, "engines": { "node": ">=12" } @@ -6637,6 +7387,7 @@ "node_modules/d3-transition": { "version": "3.0.1", "license": "ISC", + "peer": true, "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -6654,6 +7405,7 @@ "node_modules/d3-zoom": { "version": "3.0.0", "license": "ISC", + "peer": true, "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -6667,16 +7419,18 @@ }, "node_modules/dargs": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/dateformat": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -6699,16 +7453,18 @@ }, "node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, - "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -6722,8 +7478,9 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6781,8 +7538,9 @@ }, "node_modules/defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, - "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -6792,8 +7550,9 @@ }, "node_modules/define-lazy-prop": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -6815,8 +7574,9 @@ }, "node_modules/del": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, - "license": "MIT", "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", @@ -6836,34 +7596,39 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, "node_modules/depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/deprecation": { "version": "2.3.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true }, "node_modules/detect-indent": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -6931,8 +7696,9 @@ }, "node_modules/dot-prop": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, - "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -6945,8 +7711,9 @@ }, "node_modules/dotenv": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=10" } @@ -6969,20 +7736,28 @@ "version": "17.0.2", "license": "MIT" }, + "node_modules/draco3d": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.6.tgz", + "integrity": "sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==" + }, "node_modules/duplexer": { "version": "0.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true }, "node_modules/eastasianwidth": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/ejs": { "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -7016,8 +7791,9 @@ }, "node_modules/encoding": { "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -7025,8 +7801,9 @@ }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -7037,16 +7814,18 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -7056,16 +7835,18 @@ }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/envinfo": { "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -7075,8 +7856,9 @@ }, "node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/error-ex": { "version": "1.3.2", @@ -7127,118 +7909,404 @@ "which-typed-array": "^1.1.9" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.3.tgz", + "integrity": "sha512-eadWJC4CRpj93+miO5ZBlvCv+m2x6pzyNBznTvUeLFObMmxs1IMd8cCf6qiDVEZuDL6W8W7u+ZNW3GKEfOdDsA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.3", + "@esbuild/android-arm64": "0.18.3", + "@esbuild/android-x64": "0.18.3", + "@esbuild/darwin-arm64": "0.18.3", + "@esbuild/darwin-x64": "0.18.3", + "@esbuild/freebsd-arm64": "0.18.3", + "@esbuild/freebsd-x64": "0.18.3", + "@esbuild/linux-arm": "0.18.3", + "@esbuild/linux-arm64": "0.18.3", + "@esbuild/linux-ia32": "0.18.3", + "@esbuild/linux-loong64": "0.18.3", + "@esbuild/linux-mips64el": "0.18.3", + "@esbuild/linux-ppc64": "0.18.3", + "@esbuild/linux-riscv64": "0.18.3", + "@esbuild/linux-s390x": "0.18.3", + "@esbuild/linux-x64": "0.18.3", + "@esbuild/netbsd-x64": "0.18.3", + "@esbuild/openbsd-x64": "0.18.3", + "@esbuild/sunos-x64": "0.18.3", + "@esbuild/win32-arm64": "0.18.3", + "@esbuild/win32-ia32": "0.18.3", + "@esbuild/win32-x64": "0.18.3" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/esbuild": { - "version": "0.18.3", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], "engines": { "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.3", - "@esbuild/android-arm64": "0.18.3", - "@esbuild/android-x64": "0.18.3", - "@esbuild/darwin-arm64": "0.18.3", - "@esbuild/darwin-x64": "0.18.3", - "@esbuild/freebsd-arm64": "0.18.3", - "@esbuild/freebsd-x64": "0.18.3", - "@esbuild/linux-arm": "0.18.3", - "@esbuild/linux-arm64": "0.18.3", - "@esbuild/linux-ia32": "0.18.3", - "@esbuild/linux-loong64": "0.18.3", - "@esbuild/linux-mips64el": "0.18.3", - "@esbuild/linux-ppc64": "0.18.3", - "@esbuild/linux-riscv64": "0.18.3", - "@esbuild/linux-s390x": "0.18.3", - "@esbuild/linux-x64": "0.18.3", - "@esbuild/netbsd-x64": "0.18.3", - "@esbuild/openbsd-x64": "0.18.3", - "@esbuild/sunos-x64": "0.18.3", - "@esbuild/win32-arm64": "0.18.3", - "@esbuild/win32-ia32": "0.18.3", - "@esbuild/win32-x64": "0.18.3" } }, - "node_modules/esbuild-darwin-arm64": { + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=12" @@ -7456,8 +8524,9 @@ }, "node_modules/eslint-plugin-react": { "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", @@ -7484,8 +8553,9 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -7495,8 +8565,9 @@ }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7506,8 +8577,9 @@ }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -7522,16 +8594,18 @@ }, "node_modules/eslint-plugin-react/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-simple-import-sort": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", "dev": true, - "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0" } @@ -7831,21 +8905,24 @@ }, "node_modules/event-target-shim": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/eventemitter3": { "version": "4.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -7900,8 +8977,9 @@ }, "node_modules/exponential-backoff": { "version": "3.1.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true }, "node_modules/export-node-spec": { "resolved": "apps/export-node-spec", @@ -7909,13 +8987,15 @@ }, "node_modules/extendable-error": { "version": "0.1.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", + "dev": true }, "node_modules/external-editor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -7989,13 +9069,13 @@ }, "node_modules/fflate": { "version": "0.6.10", - "dev": true, "license": "MIT" }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -8019,32 +9099,36 @@ }, "node_modules/file-url": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", + "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8077,8 +9161,9 @@ }, "node_modules/find-yarn-workspace-root2": { "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "micromatch": "^4.0.2", "pkg-dir": "^4.2.0" @@ -8086,8 +9171,9 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -8111,6 +9197,8 @@ }, "node_modules/follow-redirects": { "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -8118,7 +9206,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -8138,8 +9225,9 @@ }, "node_modules/foreground-child": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -8153,8 +9241,9 @@ }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -8164,8 +9253,9 @@ }, "node_modules/form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -8189,13 +9279,15 @@ }, "node_modules/fs-constants": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/fs-extra": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -8207,8 +9299,9 @@ }, "node_modules/fs-minipass": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -8263,8 +9356,9 @@ }, "node_modules/gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -8319,8 +9413,9 @@ }, "node_modules/get-pkg-repo": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, - "license": "MIT", "dependencies": { "@hutson/parse-repository-url": "^3.0.0", "hosted-git-info": "^4.0.0", @@ -8336,8 +9431,9 @@ }, "node_modules/get-pkg-repo/node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8347,8 +9443,9 @@ }, "node_modules/get-pkg-repo/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8358,8 +9455,9 @@ }, "node_modules/get-pkg-repo/node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8372,21 +9470,24 @@ }, "node_modules/get-pkg-repo/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/get-pkg-repo/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/get-pkg-repo/node_modules/through2": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -8394,13 +9495,15 @@ }, "node_modules/get-pkg-repo/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/get-pkg-repo/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -8416,8 +9519,9 @@ }, "node_modules/get-port": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -8453,8 +9557,9 @@ }, "node_modules/git-raw-commits": { "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", "dev": true, - "license": "MIT", "dependencies": { "dargs": "^7.0.0", "lodash": "^4.17.15", @@ -8471,8 +9576,9 @@ }, "node_modules/git-raw-commits/node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8482,8 +9588,9 @@ }, "node_modules/git-raw-commits/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8493,8 +9600,9 @@ }, "node_modules/git-raw-commits/node_modules/meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -8517,8 +9625,9 @@ }, "node_modules/git-raw-commits/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -8531,8 +9640,9 @@ }, "node_modules/git-raw-commits/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -8545,8 +9655,9 @@ }, "node_modules/git-raw-commits/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -8561,21 +9672,24 @@ }, "node_modules/git-raw-commits/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -8585,24 +9699,27 @@ }, "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/git-raw-commits/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8612,13 +9729,15 @@ }, "node_modules/git-raw-commits/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/git-remote-origin-url": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, - "license": "MIT", "dependencies": { "gitconfiglocal": "^1.0.0", "pify": "^2.3.0" @@ -8629,16 +9748,18 @@ }, "node_modules/git-remote-origin-url/node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/git-semver-tags": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", "dev": true, - "license": "MIT", "dependencies": { "meow": "^8.0.0", "semver": "^6.0.0" @@ -8652,8 +9773,9 @@ }, "node_modules/git-semver-tags/node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8663,8 +9785,9 @@ }, "node_modules/git-semver-tags/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -8674,8 +9797,9 @@ }, "node_modules/git-semver-tags/node_modules/meow": { "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -8698,8 +9822,9 @@ }, "node_modules/git-semver-tags/node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -8711,9 +9836,10 @@ } }, "node_modules/git-semver-tags/node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.3", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8726,8 +9852,9 @@ }, "node_modules/git-semver-tags/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -8740,8 +9867,9 @@ }, "node_modules/git-semver-tags/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -8756,21 +9884,24 @@ }, "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -8780,32 +9911,36 @@ }, "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/git-semver-tags/node_modules/semver": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/git-semver-tags/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8815,13 +9950,15 @@ }, "node_modules/git-semver-tags/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/git-up": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", "dev": true, - "license": "MIT", "dependencies": { "is-ssh": "^1.4.0", "parse-url": "^8.1.0" @@ -8829,33 +9966,39 @@ }, "node_modules/git-url-parse": { "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", "dev": true, - "license": "MIT", "dependencies": { "git-up": "^7.0.0" } }, "node_modules/gitconfiglocal": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, - "license": "BSD", "dependencies": { "ini": "^1.3.2" } }, "node_modules/glob": { - "version": "8.1.0", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8878,21 +10021,26 @@ }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -8979,8 +10127,9 @@ }, "node_modules/handlebars": { "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -8999,8 +10148,9 @@ }, "node_modules/hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -9080,13 +10230,15 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/hosted-git-info": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -9096,8 +10248,9 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } @@ -9109,13 +10262,15 @@ }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -9127,8 +10282,9 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -9139,8 +10295,9 @@ }, "node_modules/human-id": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz", + "integrity": "sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==", + "dev": true }, "node_modules/human-signals": { "version": "2.1.0", @@ -9152,16 +10309,18 @@ }, "node_modules/humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.0.0" } }, "node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -9171,6 +10330,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, "funding": [ { @@ -9185,8 +10346,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/ignore": { "version": "5.2.4", @@ -9198,8 +10358,9 @@ }, "node_modules/ignore-walk": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, - "license": "ISC", "dependencies": { "minimatch": "^5.0.1" }, @@ -9209,16 +10370,18 @@ }, "node_modules/ignore-walk/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/ignore-walk/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -9285,8 +10448,9 @@ }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", @@ -9304,13 +10468,15 @@ }, "node_modules/ini": { "version": "1.3.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/init-package-json": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", + "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", "dev": true, - "license": "ISC", "dependencies": { "npm-package-arg": "^9.0.1", "promzard": "^0.3.0", @@ -9326,8 +10492,9 @@ }, "node_modules/init-package-json/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -9337,16 +10504,18 @@ }, "node_modules/init-package-json/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/init-package-json/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -9359,16 +10528,18 @@ }, "node_modules/init-package-json/node_modules/proc-log": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/inquirer": { "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -9392,8 +10563,9 @@ }, "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -9406,8 +10578,9 @@ }, "node_modules/inquirer/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9421,8 +10594,9 @@ }, "node_modules/inquirer/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -9432,21 +10606,24 @@ }, "node_modules/inquirer/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inquirer/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9469,8 +10646,9 @@ }, "node_modules/ip": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true }, "node_modules/is-arguments": { "version": "1.1.1", @@ -9555,8 +10733,9 @@ }, "node_modules/is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, - "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -9590,8 +10769,9 @@ }, "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, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -9639,16 +10819,18 @@ }, "node_modules/is-interactive": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true }, "node_modules/is-map": { "version": "2.0.2", @@ -9693,16 +10875,18 @@ }, "node_modules/is-obj": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-path-cwd": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -9717,16 +10901,18 @@ }, "node_modules/is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-object": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9767,8 +10953,9 @@ }, "node_modules/is-ssh": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", "dev": true, - "license": "MIT", "dependencies": { "protocols": "^2.0.1" } @@ -9800,8 +10987,9 @@ }, "node_modules/is-subdir": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", + "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", "dev": true, - "license": "MIT", "dependencies": { "better-path-resolve": "1.0.0" }, @@ -9825,8 +11013,9 @@ }, "node_modules/is-text-path": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, - "license": "MIT", "dependencies": { "text-extensions": "^1.0.0" }, @@ -9854,8 +11043,9 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -9896,16 +11086,18 @@ }, "node_modules/is-windows": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "license": "MIT", "engines": { "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, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -9915,8 +11107,9 @@ }, "node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -9925,8 +11118,9 @@ }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10021,8 +11215,9 @@ }, "node_modules/jackspeak": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -10038,8 +11233,9 @@ }, "node_modules/jake": { "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -10055,8 +11251,9 @@ }, "node_modules/jake/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10069,8 +11266,9 @@ }, "node_modules/jake/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10084,8 +11282,9 @@ }, "node_modules/jake/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10095,21 +11294,24 @@ }, "node_modules/jake/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/jake/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jake/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11668,13 +12870,15 @@ }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true, - "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -11691,16 +12895,18 @@ }, "node_modules/json-stringify-nice": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", "dev": true, - "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "node_modules/json5": { "version": "2.2.3", @@ -11715,29 +12921,33 @@ }, "node_modules/jsonc-parser": { "version": "3.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true }, "node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" - ], - "license": "MIT" + ] }, "node_modules/JSONStream": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, - "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -11751,8 +12961,9 @@ }, "node_modules/jsx-ast-utils": { "version": "3.3.4", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", + "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -11765,18 +12976,21 @@ }, "node_modules/just-diff": { "version": "6.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==", + "dev": true }, "node_modules/just-diff-apply": { "version": "5.5.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", + "dev": true }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11789,10 +13003,16 @@ "node": ">=6" } }, + "node_modules/ktx-parse": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/ktx-parse/-/ktx-parse-0.4.5.tgz", + "integrity": "sha512-MK3FOody4TXbFf8Yqv7EBbySw7aPvEcPX++Ipt6Sox+/YMFvR5xaTyhfNSk1AEmMy+RYIw81ctN4IMxCB8OAlg==" + }, "node_modules/lerna": { "version": "6.6.2", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz", + "integrity": "sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg==", "dev": true, - "license": "MIT", "dependencies": { "@lerna/child-process": "6.6.2", "@lerna/create": "6.6.2", @@ -11880,8 +13100,9 @@ }, "node_modules/lerna/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -11894,13 +13115,15 @@ }, "node_modules/lerna/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/lerna/node_modules/chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11914,13 +13137,15 @@ }, "node_modules/lerna/node_modules/ci-info": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, "node_modules/lerna/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -11930,13 +13155,15 @@ }, "node_modules/lerna/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/lerna/node_modules/execa": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -11957,8 +13184,9 @@ }, "node_modules/lerna/node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -11971,8 +13199,9 @@ }, "node_modules/lerna/node_modules/get-stream": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -11982,8 +13211,9 @@ }, "node_modules/lerna/node_modules/glob": { "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", @@ -11999,8 +13229,9 @@ }, "node_modules/lerna/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -12010,16 +13241,18 @@ }, "node_modules/lerna/node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/lerna/node_modules/glob/node_modules/minimatch": { "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -12032,21 +13265,24 @@ }, "node_modules/lerna/node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/lerna/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/lerna/node_modules/is-ci": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, - "license": "MIT", "dependencies": { "ci-info": "^2.0.0" }, @@ -12056,16 +13292,18 @@ }, "node_modules/lerna/node_modules/is-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/lerna/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -12075,8 +13313,9 @@ }, "node_modules/lerna/node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -12086,8 +13325,9 @@ }, "node_modules/lerna/node_modules/minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12097,16 +13337,18 @@ }, "node_modules/lerna/node_modules/minipass": { "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/lerna/node_modules/rimraf": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^9.2.0" }, @@ -12122,8 +13364,9 @@ }, "node_modules/lerna/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12133,8 +13376,9 @@ }, "node_modules/lerna/node_modules/typescript": { "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -12145,16 +13389,18 @@ }, "node_modules/lerna/node_modules/universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/lerna/node_modules/write-file-atomic": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -12165,8 +13411,9 @@ }, "node_modules/lerna/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -12202,8 +13449,9 @@ }, "node_modules/libnpmaccess": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz", + "integrity": "sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^2.0.0", "minipass": "^3.1.1", @@ -12216,8 +13464,9 @@ }, "node_modules/libnpmaccess/node_modules/@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -12226,10 +13475,20 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/libnpmaccess/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/libnpmaccess/node_modules/cacache": { "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -12256,8 +13515,9 @@ }, "node_modules/libnpmaccess/node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -12265,10 +13525,30 @@ "node": ">= 8" } }, + "node_modules/libnpmaccess/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/libnpmaccess/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -12278,16 +13558,18 @@ }, "node_modules/libnpmaccess/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/libnpmaccess/node_modules/make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -12310,10 +13592,23 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/libnpmaccess/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/libnpmaccess/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -12323,8 +13618,9 @@ }, "node_modules/libnpmaccess/node_modules/minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -12339,8 +13635,9 @@ }, "node_modules/libnpmaccess/node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -12353,8 +13650,9 @@ }, "node_modules/libnpmaccess/node_modules/npm-registry-fetch": { "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", @@ -12370,16 +13668,18 @@ }, "node_modules/libnpmaccess/node_modules/proc-log": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/libnpmaccess/node_modules/unique-filename": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^3.0.0" }, @@ -12389,8 +13689,9 @@ }, "node_modules/libnpmaccess/node_modules/unique-slug": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -12400,13 +13701,15 @@ }, "node_modules/libnpmaccess/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/libnpmpublish": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.1.4.tgz", + "integrity": "sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg==", "dev": true, - "license": "ISC", "dependencies": { "ci-info": "^3.6.1", "normalize-package-data": "^5.0.0", @@ -12423,8 +13726,9 @@ }, "node_modules/libnpmpublish/node_modules/npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -12437,8 +13741,9 @@ }, "node_modules/libnpmpublish/node_modules/ssri": { "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -12448,8 +13753,9 @@ }, "node_modules/libnpmpublish/node_modules/validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -12459,7 +13765,6 @@ }, "node_modules/lil-gui": { "version": "0.17.0", - "dev": true, "license": "MIT" }, "node_modules/lilconfig": { @@ -12472,16 +13777,18 @@ }, "node_modules/lines-and-columns": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/load-json-file": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", + "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.15", "parse-json": "^5.0.0", @@ -12494,16 +13801,18 @@ }, "node_modules/load-json-file/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/load-yaml-file": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", + "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.13.0", @@ -12516,16 +13825,18 @@ }, "node_modules/load-yaml-file/node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/load-yaml-file/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -12543,13 +13854,13 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, "license": "MIT" }, "node_modules/lodash.ismatch": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -12563,13 +13874,15 @@ }, "node_modules/lodash.startcase": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -12583,8 +13896,9 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12597,8 +13911,9 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12612,8 +13927,9 @@ }, "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12623,21 +13939,24 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12711,8 +14030,9 @@ }, "node_modules/make-fetch-happen": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -12736,16 +14056,18 @@ }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/make-fetch-happen/node_modules/ssri": { "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -12763,8 +14085,9 @@ }, "node_modules/map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -12774,8 +14097,9 @@ }, "node_modules/meow": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", + "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -12798,13 +14122,15 @@ }, "node_modules/meow/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/meow/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -12814,8 +14140,9 @@ }, "node_modules/meow/node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -12828,8 +14155,9 @@ }, "node_modules/meow/node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -12844,32 +14172,36 @@ }, "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/meow/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/meow/node_modules/type-fest": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -12879,8 +14211,9 @@ }, "node_modules/meow/node_modules/yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -12916,16 +14249,18 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -12970,8 +14305,9 @@ }, "node_modules/minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -12983,16 +14319,18 @@ }, "node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13002,8 +14340,9 @@ }, "node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13013,13 +14352,15 @@ }, "node_modules/minipass-collect/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-fetch": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^5.0.0", "minipass-sized": "^1.0.3", @@ -13034,8 +14375,9 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13045,8 +14387,9 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13056,13 +14399,15 @@ }, "node_modules/minipass-flush/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-json-stream": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -13070,8 +14415,9 @@ }, "node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13081,13 +14427,15 @@ }, "node_modules/minipass-json-stream/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13097,8 +14445,9 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13108,13 +14457,15 @@ }, "node_modules/minipass-pipeline/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13124,8 +14475,9 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13135,13 +14487,15 @@ }, "node_modules/minipass-sized/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -13152,8 +14506,9 @@ }, "node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13163,21 +14518,24 @@ }, "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mixme": { "version": "0.5.9", + "resolved": "https://registry.npmjs.org/mixme/-/mixme-0.5.9.tgz", + "integrity": "sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8.0.0" } }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -13187,8 +14545,9 @@ }, "node_modules/mkdirp-infer-owner": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "infer-owner": "^1.0.4", @@ -13198,10 +14557,16 @@ "node": ">=10" } }, + "node_modules/mmd-parser": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mmd-parser/-/mmd-parser-1.0.4.tgz", + "integrity": "sha512-Qi0VCU46t2IwfGv5KF0+D/t9cizcDug7qnNoy9Ggk7aucp0tssV8IwTMkBlDbm+VqAf3cdQHTCARKSsuS2MYFg==" + }, "node_modules/modify-values": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13213,8 +14578,9 @@ }, "node_modules/multimatch": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimatch": "^3.0.3", "array-differ": "^3.0.0", @@ -13231,21 +14597,24 @@ }, "node_modules/multimatch/node_modules/@types/minimatch": { "version": "3.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true }, "node_modules/multimatch/node_modules/arrify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/mute-stream": { "version": "0.0.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "node_modules/mz": { "version": "2.7.0", @@ -13285,26 +14654,30 @@ }, "node_modules/negotiator": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/node-addon-api": { "version": "3.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true }, "node_modules/node-fetch": { "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -13322,8 +14695,9 @@ }, "node_modules/node-gyp": { "version": "9.4.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", + "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -13346,8 +14720,9 @@ }, "node_modules/node-gyp-build": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "dev": true, - "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -13356,13 +14731,15 @@ }, "node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13380,8 +14757,9 @@ }, "node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -13404,8 +14782,9 @@ }, "node_modules/nopt": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -13418,8 +14797,9 @@ }, "node_modules/normalize-package-data": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^6.0.0", "is-core-module": "^2.8.1", @@ -13448,8 +14828,9 @@ }, "node_modules/npm-bundled": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -13459,8 +14840,9 @@ }, "node_modules/npm-install-checks": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", + "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -13470,16 +14852,18 @@ }, "node_modules/npm-normalize-package-bin": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-package-arg": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", + "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^3.0.6", "semver": "^7.0.0", @@ -13491,13 +14875,15 @@ }, "node_modules/npm-package-arg/node_modules/builtins": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true }, "node_modules/npm-package-arg/node_modules/hosted-git-info": { "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13507,8 +14893,9 @@ }, "node_modules/npm-package-arg/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13518,21 +14905,24 @@ }, "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^1.0.3" } }, "node_modules/npm-package-arg/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/npm-packlist": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", + "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", @@ -13546,23 +14936,66 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/npm-packlist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-packlist/node_modules/npm-bundled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true }, "node_modules/npm-pick-manifest": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", "dev": true, - "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -13575,8 +15008,9 @@ }, "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -13589,8 +15023,9 @@ }, "node_modules/npm-pick-manifest/node_modules/validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -13600,8 +15035,9 @@ }, "node_modules/npm-registry-fetch": { "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^11.0.0", "minipass": "^5.0.0", @@ -13617,8 +15053,9 @@ }, "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -13631,8 +15068,9 @@ }, "node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -13653,8 +15091,9 @@ }, "node_modules/npmlog": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -13667,9 +15106,10 @@ }, "node_modules/nx": { "version": "15.9.4", + "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.4.tgz", + "integrity": "sha512-P1G4t59UvE/lkHyruLeSOB5ZuNyh01IwU0tTUOi8f9s/NbP7+OQ8MYVwDV74JHTr6mQgjlS+n+4Eox8tVm9itA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@nrwl/cli": "15.9.4", "@nrwl/tao": "15.9.4", @@ -13736,8 +15176,9 @@ }, "node_modules/nx/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13750,13 +15191,15 @@ }, "node_modules/nx/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/nx/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13770,8 +15213,9 @@ }, "node_modules/nx/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13781,13 +15225,15 @@ }, "node_modules/nx/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/nx/node_modules/fast-glob": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -13801,8 +15247,9 @@ }, "node_modules/nx/node_modules/fs-extra": { "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13814,8 +15261,9 @@ }, "node_modules/nx/node_modules/glob": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13830,8 +15278,9 @@ }, "node_modules/nx/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -13841,16 +15290,18 @@ }, "node_modules/nx/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/nx/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -13860,8 +15311,9 @@ }, "node_modules/nx/node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -13871,8 +15323,9 @@ }, "node_modules/nx/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13882,8 +15335,9 @@ }, "node_modules/nx/node_modules/minimatch": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13893,8 +15347,9 @@ }, "node_modules/nx/node_modules/semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13907,16 +15362,18 @@ }, "node_modules/nx/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/nx/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13926,8 +15383,9 @@ }, "node_modules/nx/node_modules/tmp": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, - "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -13937,8 +15395,9 @@ }, "node_modules/nx/node_modules/tsconfig-paths": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, - "license": "MIT", "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -13950,21 +15409,24 @@ }, "node_modules/nx/node_modules/universalify": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/nx/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/nx/node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } @@ -14034,8 +15496,9 @@ }, "node_modules/object.entries": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -14047,8 +15510,9 @@ }, "node_modules/object.fromentries": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -14063,8 +15527,9 @@ }, "node_modules/object.hasown": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.1.4", "es-abstract": "^1.20.4" @@ -14113,8 +15578,9 @@ }, "node_modules/open": { "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -14127,6 +15593,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/opentype.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.4.tgz", + "integrity": "sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==", + "dependencies": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.3" + }, + "bin": { + "ot": "bin/ot" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/optionator": { "version": "0.9.3", "dev": true, @@ -14145,8 +15626,9 @@ }, "node_modules/ora": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -14167,8 +15649,9 @@ }, "node_modules/ora/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -14181,8 +15664,9 @@ }, "node_modules/ora/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14196,8 +15680,9 @@ }, "node_modules/ora/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -14207,21 +15692,24 @@ }, "node_modules/ora/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/ora/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ora/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -14231,21 +15719,24 @@ }, "node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/outdent": { "version": "0.5.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", + "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==", + "dev": true }, "node_modules/p-filter": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, - "license": "MIT", "dependencies": { "p-map": "^2.0.0" }, @@ -14255,16 +15746,18 @@ }, "node_modules/p-filter/node_modules/p-map": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/p-finally": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -14296,8 +15789,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -14310,16 +15804,18 @@ }, "node_modules/p-map-series": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz", + "integrity": "sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-pipe": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -14329,8 +15825,9 @@ }, "node_modules/p-queue": { "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dev": true, - "license": "MIT", "dependencies": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" @@ -14344,16 +15841,18 @@ }, "node_modules/p-reduce": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-timeout": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dev": true, - "license": "MIT", "dependencies": { "p-finally": "^1.0.0" }, @@ -14371,8 +15870,9 @@ }, "node_modules/p-waterfall": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", + "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", "dev": true, - "license": "MIT", "dependencies": { "p-reduce": "^2.0.0" }, @@ -14385,8 +15885,9 @@ }, "node_modules/pacote": { "version": "15.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.1.tgz", + "integrity": "sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^4.0.0", "@npmcli/installed-package-contents": "^2.0.1", @@ -14416,8 +15917,9 @@ }, "node_modules/pacote/node_modules/@npmcli/run-script": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/promise-spawn": "^6.0.0", @@ -14431,45 +15933,18 @@ }, "node_modules/pacote/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/pacote/node_modules/glob": { - "version": "10.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.10.0" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pacote/node_modules/glob/node_modules/minipass": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/pacote/node_modules/ignore-walk": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", "dev": true, - "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -14478,9 +15953,10 @@ } }, "node_modules/pacote/node_modules/minimatch": { - "version": "9.0.2", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -14493,16 +15969,18 @@ }, "node_modules/pacote/node_modules/minipass": { "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/pacote/node_modules/npm-package-arg": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^6.0.0", "proc-log": "^3.0.0", @@ -14515,8 +15993,9 @@ }, "node_modules/pacote/node_modules/npm-packlist": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dev": true, - "license": "ISC", "dependencies": { "ignore-walk": "^6.0.0" }, @@ -14526,8 +16005,9 @@ }, "node_modules/pacote/node_modules/read-package-json": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^10.2.2", "json-parse-even-better-errors": "^3.0.0", @@ -14540,8 +16020,9 @@ }, "node_modules/pacote/node_modules/ssri": { "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^5.0.0" }, @@ -14551,16 +16032,18 @@ }, "node_modules/pacote/node_modules/ssri/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/pacote/node_modules/validate-npm-package-name": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -14570,8 +16053,9 @@ }, "node_modules/pacote/node_modules/which": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -14595,8 +16079,9 @@ }, "node_modules/parse-conflict-json": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", + "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", @@ -14635,16 +16120,18 @@ }, "node_modules/parse-path": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", "dev": true, - "license": "MIT", "dependencies": { "protocols": "^2.0.0" } }, "node_modules/parse-url": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", "dev": true, - "license": "MIT", "dependencies": { "parse-path": "^7.0.0" } @@ -14678,12 +16165,13 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.0", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -14694,8 +16182,9 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", "dev": true, - "license": "ISC", "engines": { "node": "14 || >=16.14" } @@ -14725,8 +16214,9 @@ }, "node_modules/pify": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -14884,10 +16374,16 @@ "dev": true, "license": "MIT" }, + "node_modules/potpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" + }, "node_modules/preferred-pm": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.0.3.tgz", + "integrity": "sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^5.0.0", "find-yarn-workspace-root2": "1.2.16", @@ -14900,8 +16396,9 @@ }, "node_modules/preferred-pm/node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -14915,8 +16412,9 @@ }, "node_modules/preferred-pm/node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -14929,8 +16427,9 @@ }, "node_modules/preferred-pm/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -14943,8 +16442,9 @@ }, "node_modules/preferred-pm/node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -15014,50 +16514,57 @@ }, "node_modules/proc-log": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/process": { "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/promise-all-reject-late": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", "dev": true, - "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/promise-call-limit": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", + "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", "dev": true, - "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -15080,8 +16587,9 @@ }, "node_modules/promzard": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", "dev": true, - "license": "ISC", "dependencies": { "read": "1" } @@ -15101,23 +16609,27 @@ }, "node_modules/proto-list": { "version": "1.2.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true }, "node_modules/protocols": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true }, "node_modules/proxy-from-env": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/pseudomap": { - "version": "1.0.2", - "dev": true, - "license": "ISC" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true }, "node_modules/punycode": { "version": "2.3.0", @@ -15144,8 +16656,9 @@ }, "node_modules/q": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -15172,8 +16685,9 @@ }, "node_modules/quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -15215,6 +16729,7 @@ "node_modules/reactflow": { "version": "11.7.4", "license": "MIT", + "peer": true, "dependencies": { "@reactflow/background": "11.2.4", "@reactflow/controls": "11.1.15", @@ -15230,8 +16745,9 @@ }, "node_modules/read": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, - "license": "ISC", "dependencies": { "mute-stream": "~0.0.4" }, @@ -15257,16 +16773,18 @@ }, "node_modules/read-cmd-shim": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz", + "integrity": "sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/read-package-json": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", + "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", @@ -15279,8 +16797,9 @@ }, "node_modules/read-package-json-fast": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -15289,10 +16808,39 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/read-package-json/node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -15302,21 +16850,36 @@ }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/read-package-json/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/read-package-json/node_modules/normalize-package-data": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", "is-core-module": "^2.8.1", @@ -15329,13 +16892,15 @@ }, "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true }, "node_modules/read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, - "license": "MIT", "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -15347,8 +16912,9 @@ }, "node_modules/read-pkg-up": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^2.0.0", "read-pkg": "^3.0.0" @@ -15359,8 +16925,9 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -15370,8 +16937,9 @@ }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -15382,8 +16950,9 @@ }, "node_modules/read-pkg-up/node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -15393,8 +16962,9 @@ }, "node_modules/read-pkg-up/node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -15404,29 +16974,33 @@ }, "node_modules/read-pkg-up/node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-pkg-up/node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/read-pkg/node_modules/load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -15439,8 +17013,9 @@ }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -15450,8 +17025,9 @@ }, "node_modules/read-pkg/node_modules/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -15462,8 +17038,9 @@ }, "node_modules/read-pkg/node_modules/path-type": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -15473,32 +17050,36 @@ }, "node_modules/read-pkg/node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-pkg/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/read-pkg/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-yaml-file": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", + "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", @@ -15511,24 +17092,27 @@ }, "node_modules/read-yaml-file/node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/read-yaml-file/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/readable-stream": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -15582,6 +17166,11 @@ "version": "0.13.11", "license": "MIT" }, + "node_modules/regexp-to-ast": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", + "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.0", "dev": true, @@ -15608,8 +17197,9 @@ }, "node_modules/require-main-filename": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "node_modules/resolve": { "version": "1.22.2", @@ -15655,8 +17245,9 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -15667,8 +17258,9 @@ }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } @@ -15730,8 +17322,9 @@ }, "node_modules/run-async": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -15760,14 +17353,17 @@ }, "node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -15782,8 +17378,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safe-regex-test": { "version": "1.0.0", @@ -15800,8 +17395,9 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/scheduler": { "version": "0.23.0", @@ -15842,13 +17438,15 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -15894,14 +17492,14 @@ "license": "ISC" }, "node_modules/sigstore": { - "version": "1.6.0", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.7.0.tgz", + "integrity": "sha512-KP7QULhWdlu3hlp+jw2EvgWKlOGOY9McLj/jrchLjHNlNPK0KWIwF919cbmOp6QiKXLmPijR2qH/5KYWlbtG9Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.1.0", - "@sigstore/tuf": "^1.0.0", - "make-fetch-happen": "^11.0.1", - "tuf-js": "^1.1.3" + "@sigstore/tuf": "^1.0.1", + "make-fetch-happen": "^11.0.1" }, "bin": { "sigstore": "bin/sigstore.js" @@ -15925,8 +17523,9 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -15934,8 +17533,9 @@ }, "node_modules/smartwrap": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/smartwrap/-/smartwrap-2.0.2.tgz", + "integrity": "sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==", "dev": true, - "license": "MIT", "dependencies": { "array.prototype.flat": "^1.2.3", "breakword": "^1.0.5", @@ -15953,8 +17553,9 @@ }, "node_modules/smartwrap/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15967,8 +17568,9 @@ }, "node_modules/smartwrap/node_modules/cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -15977,8 +17579,9 @@ }, "node_modules/smartwrap/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -15988,13 +17591,15 @@ }, "node_modules/smartwrap/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/smartwrap/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -16006,13 +17611,15 @@ }, "node_modules/smartwrap/node_modules/y18n": { "version": "4.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/smartwrap/node_modules/yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -16032,8 +17639,9 @@ }, "node_modules/smartwrap/node_modules/yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -16044,8 +17652,9 @@ }, "node_modules/socks": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, - "license": "MIT", "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -16057,8 +17666,9 @@ }, "node_modules/socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -16070,8 +17680,9 @@ }, "node_modules/sort-keys": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-obj": "^1.0.0" }, @@ -16110,8 +17721,9 @@ }, "node_modules/spawndamnit": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz", + "integrity": "sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^5.1.0", "signal-exit": "^3.0.2" @@ -16119,8 +17731,9 @@ }, "node_modules/spawndamnit/node_modules/cross-spawn": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, - "license": "MIT", "dependencies": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -16129,8 +17742,9 @@ }, "node_modules/spawndamnit/node_modules/lru-cache": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, - "license": "ISC", "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -16138,8 +17752,9 @@ }, "node_modules/spawndamnit/node_modules/shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -16149,16 +17764,18 @@ }, "node_modules/spawndamnit/node_modules/shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/spawndamnit/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -16168,8 +17785,9 @@ }, "node_modules/spawndamnit/node_modules/yallist": { "version": "2.1.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true }, "node_modules/spdx-correct": { "version": "3.2.0", @@ -16201,8 +17819,9 @@ }, "node_modules/split": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, - "license": "MIT", "dependencies": { "through": "2" }, @@ -16212,8 +17831,9 @@ }, "node_modules/split2": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, - "license": "ISC", "dependencies": { "readable-stream": "^3.0.0" } @@ -16225,8 +17845,9 @@ }, "node_modules/ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -16236,8 +17857,9 @@ }, "node_modules/ssri/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -16247,8 +17869,9 @@ }, "node_modules/ssri/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/stack-utils": { "version": "2.0.6", @@ -16282,16 +17905,18 @@ }, "node_modules/stream-transform": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz", + "integrity": "sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==", "dev": true, - "license": "MIT", "dependencies": { "mixme": "^0.5.1" } }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -16324,8 +17949,9 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -16335,10 +17961,16 @@ "node": ">=8" } }, + "node_modules/string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" + }, "node_modules/string.prototype.matchall": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -16409,8 +18041,9 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -16458,8 +18091,9 @@ }, "node_modules/strong-log-transformer": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "duplexer": "^0.1.1", "minimist": "^1.2.0", @@ -16590,8 +18224,9 @@ }, "node_modules/tar": { "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -16606,8 +18241,9 @@ }, "node_modules/tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -16621,8 +18257,9 @@ }, "node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -16632,8 +18269,9 @@ }, "node_modules/tar/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -16643,21 +18281,24 @@ }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/temp-dir": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tempy": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz", + "integrity": "sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==", "dev": true, - "license": "MIT", "dependencies": { "del": "^6.0.0", "is-stream": "^2.0.0", @@ -16674,16 +18315,18 @@ }, "node_modules/tempy/node_modules/temp-dir": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tempy/node_modules/type-fest": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -16693,8 +18336,9 @@ }, "node_modules/term-size": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -16736,8 +18380,9 @@ }, "node_modules/text-extensions": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10" } @@ -16767,8 +18412,30 @@ } }, "node_modules/three": { - "version": "0.145.0", - "license": "MIT" + "version": "0.152.2", + "resolved": "https://registry.npmjs.org/three/-/three-0.152.2.tgz", + "integrity": "sha512-Ff9zIpSfkkqcBcpdiFo2f35vA9ZucO+N8TNacJOqaEE6DrB0eufItVMib8bK8Pcju/ZNT6a7blE1GhTpkdsILw==" + }, + "node_modules/three-stdlib": { + "version": "2.23.13", + "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.23.13.tgz", + "integrity": "sha512-WU4XHs4E6szAyoREzTs5bUAc1WFadiz5jRjNlA7aIIqf+raT4jfA320P0XmlyZz/wJwmpZnOuki4kAFsmadkTQ==", + "dependencies": { + "@types/draco3d": "^1.4.0", + "@types/offscreencanvas": "^2019.6.4", + "@types/webxr": "^0.5.2", + "chevrotain": "^10.1.2", + "draco3d": "^1.4.1", + "fflate": "^0.6.9", + "ktx-parse": "^0.4.5", + "mmd-parser": "^1.0.4", + "opentype.js": "^1.3.3", + "potpack": "^1.0.1", + "zstddec": "^0.0.2" + }, + "peerDependencies": { + "three": ">=0.128.0" + } }, "node_modules/three-viewer": { "resolved": "apps/three-viewer", @@ -16776,21 +18443,29 @@ }, "node_modules/through": { "version": "2.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "node_modules/through2": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "3" } }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, "node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -16824,21 +18499,24 @@ }, "node_modules/tr46": { "version": "0.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "node_modules/treeverse": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -17003,8 +18681,9 @@ }, "node_modules/tty-table": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/tty-table/-/tty-table-4.2.1.tgz", + "integrity": "sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "csv": "^5.5.3", @@ -17023,8 +18702,9 @@ }, "node_modules/tty-table/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -17037,8 +18717,9 @@ }, "node_modules/tty-table/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -17052,8 +18733,9 @@ }, "node_modules/tty-table/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -17063,29 +18745,33 @@ }, "node_modules/tty-table/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/tty-table/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tty-table/node_modules/kleur": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tty-table/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -17095,8 +18781,9 @@ }, "node_modules/tuf-js": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", "dev": true, - "license": "MIT", "dependencies": { "@tufjs/models": "1.0.4", "debug": "^4.3.4", @@ -17151,8 +18838,9 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true }, "node_modules/typescript": { "version": "5.1.3", @@ -17168,8 +18856,9 @@ }, "node_modules/uglify-js": { "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, - "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -17194,8 +18883,9 @@ }, "node_modules/unique-filename": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -17205,8 +18895,9 @@ }, "node_modules/unique-slug": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -17216,8 +18907,9 @@ }, "node_modules/unique-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, - "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -17227,21 +18919,24 @@ }, "node_modules/universal-user-agent": { "version": "6.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true }, "node_modules/universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/upath": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", "dev": true, - "license": "MIT", "engines": { "node": ">=4", "yarn": "*" @@ -17287,6 +18982,7 @@ "node_modules/use-sync-external-store": { "version": "1.2.0", "license": "MIT", + "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } @@ -17305,8 +19001,9 @@ }, "node_modules/v8-compile-cache": { "version": "2.3.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", @@ -17342,8 +19039,9 @@ }, "node_modules/validate-npm-package-name": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -17447,6 +19145,36 @@ "node": ">=6" } }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/vite/node_modules/esbuild": { "version": "0.15.18", "hasInstallScript": true, @@ -17484,8 +19212,9 @@ }, "node_modules/walk-up-path": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true }, "node_modules/walker": { "version": "1.0.8", @@ -17497,21 +19226,24 @@ }, "node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, "node_modules/webidl-conversions": { "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, "node_modules/whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, - "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -17562,13 +19294,15 @@ }, "node_modules/which-module": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true }, "node_modules/which-pm": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-2.0.0.tgz", + "integrity": "sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==", "dev": true, - "license": "MIT", "dependencies": { "load-yaml-file": "^0.2.0", "path-exists": "^4.0.0" @@ -17598,16 +19332,18 @@ }, "node_modules/wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wordwrap": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -17628,8 +19364,9 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -17644,8 +19381,9 @@ }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -17658,8 +19396,9 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -17669,8 +19408,9 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", @@ -17721,8 +19461,9 @@ }, "node_modules/write-json-file": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-indent": "^5.0.0", "graceful-fs": "^4.1.15", @@ -17737,16 +19478,18 @@ }, "node_modules/write-json-file/node_modules/detect-indent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/write-json-file/node_modules/make-dir": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -17757,24 +19500,27 @@ }, "node_modules/write-json-file/node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/write-json-file/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/write-json-file/node_modules/write-file-atomic": { "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, - "license": "ISC", "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -17783,8 +19529,9 @@ }, "node_modules/write-pkg": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz", + "integrity": "sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==", "dev": true, - "license": "MIT", "dependencies": { "sort-keys": "^2.0.0", "type-fest": "^0.4.1", @@ -17796,16 +19543,18 @@ }, "node_modules/write-pkg/node_modules/type-fest": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=6" } }, "node_modules/xtend": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4" } @@ -17825,8 +19574,9 @@ }, "node_modules/yaml": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -17850,8 +19600,9 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } @@ -17896,9 +19647,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zstddec": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.0.2.tgz", + "integrity": "sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA==" + }, "node_modules/zustand": { "version": "4.3.8", "license": "MIT", + "peer": true, "dependencies": { "use-sync-external-store": "1.2.0" }, @@ -17926,13 +19683,11 @@ "name": "@behave-graph/flow", "version": "0.9.12", "dependencies": { - "@behave-graph/core": "*", "@fortawesome/fontawesome-svg-core": "^6.1.2", "@fortawesome/free-solid-svg-icons": "^6.1.2", "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "downshift": "^6.1.7", - "reactflow": "^11.1.1", "uuid": "^8.3.2" }, "devDependencies": { @@ -17941,6 +19696,25 @@ "@testing-library/user-event": "^13.5.0", "@types/uuid": "^8.3.4", "autoprefixer": "^10.4.8" + }, + "peerDependencies": { + "@behave-graph/core": "*", + "reactflow": "^11.1.1" + } + }, + "packages/scene": { + "name": "@behave-graph/scene", + "version": "0.9.12", + "license": "ISC", + "devDependencies": { + "@types/glob": "^8.0.0", + "@types/offscreencanvas": "^2019.7.0" + }, + "peerDependencies": { + "@behave-graph/core": "*", + "@types/three": "0.152.1", + "three": "0.152.2", + "three-stdlib": "^2.22.4" } } } diff --git a/package.json b/package.json index ff6f5f99..61088e6a 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,5 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "vite": "^3.2.4" - }, - "packageManager": "yarn@3.5.1" + } } diff --git a/packages/core/src/Execution/Engine.ts b/packages/core/src/Execution/Engine.ts index f97b6f15..dec70822 100644 --- a/packages/core/src/Execution/Engine.ts +++ b/packages/core/src/Execution/Engine.ts @@ -2,7 +2,7 @@ import { Assert } from '../Diagnostics/Assert.js'; import { EventEmitter } from '../Events/EventEmitter.js'; -import { Graph } from '../Graphs/Graph.js'; +import { GraphNodes } from '../Graphs/Graph.js'; import { IAsyncNode, IEventNode, @@ -23,9 +23,9 @@ export class Engine { public readonly onNodeExecutionEnd = new EventEmitter(); public executionSteps = 0; - constructor(public readonly graph: Graph) { + constructor(public readonly nodes: GraphNodes) { // collect all event nodes - Object.values(graph.nodes).forEach((node) => { + Object.values(nodes).forEach((node) => { if (isEventNode(node)) { this.eventNodes.push(node); } diff --git a/packages/core/src/Execution/Fiber.ts b/packages/core/src/Execution/Fiber.ts index 36e55209..4679b4cf 100644 --- a/packages/core/src/Execution/Fiber.ts +++ b/packages/core/src/Execution/Fiber.ts @@ -1,5 +1,5 @@ import { Assert } from '../Diagnostics/Assert.js'; -import { Graph } from '../Graphs/Graph.js'; +import { GraphNodes } from '../Graphs/Graph.js'; import { Link } from '../Nodes/Link.js'; import { INode, isAsyncNode, isFlowNode } from '../Nodes/NodeInstance.js'; import { Engine } from './Engine.js'; @@ -7,7 +7,7 @@ import { resolveSocketValue } from './resolveSocketValue.js'; export class Fiber { private readonly fiberCompletedListenerStack: (() => void)[] = []; - private readonly graph: Graph; + private readonly nodes: GraphNodes; public executionSteps = 0; constructor( @@ -15,7 +15,7 @@ export class Fiber { public nextEval: Link | null, fiberCompletedListener: (() => void) | undefined = undefined ) { - this.graph = engine.graph; + this.nodes = engine.nodes; if (fiberCompletedListener !== undefined) { this.fiberCompletedListenerStack.push(fiberCompletedListener); } @@ -76,7 +76,7 @@ export class Fiber { return; } - const node = this.graph.nodes[link.nodeId]; + const node = this.nodes[link.nodeId]; node.inputs.forEach((inputSocket) => { if (inputSocket.valueTypeName !== 'flow') { diff --git a/packages/core/src/Execution/resolveSocketValue.ts b/packages/core/src/Execution/resolveSocketValue.ts index baf95559..9f250de3 100644 --- a/packages/core/src/Execution/resolveSocketValue.ts +++ b/packages/core/src/Execution/resolveSocketValue.ts @@ -12,7 +12,7 @@ export function resolveSocketValue( return 0; } - const graph = engine.graph; + const nodes = engine.nodes; const upstreamLink = inputSocket.links[0]; // caching the target node + socket here increases engine performance by 8% on average. This is a hotspot. @@ -23,7 +23,7 @@ export function resolveSocketValue( Assert.mustBeTrue(inputSocket.links.length === 1); // if upstream node is an eval, we just return its last value. - upstreamLink._targetNode = graph.nodes[upstreamLink.nodeId]; + upstreamLink._targetNode = nodes[upstreamLink.nodeId]; // what is inputSocket connected to? upstreamLink._targetSocket = upstreamLink._targetNode.outputs.find( (socket) => socket.name === upstreamLink.socketName diff --git a/packages/core/src/Graphs/Graph.ts b/packages/core/src/Graphs/Graph.ts index ef6225a2..b9134ef2 100644 --- a/packages/core/src/Graphs/Graph.ts +++ b/packages/core/src/Graphs/Graph.ts @@ -1,75 +1,87 @@ import { CustomEvent } from '../Events/CustomEvent.js'; -import { generateUuid } from '../generateUuid.js'; import { Metadata } from '../Metadata.js'; import { NodeConfiguration } from '../Nodes/Node.js'; +import { Dependencies } from '../Nodes/NodeDefinitions.js'; import { INode } from '../Nodes/NodeInstance.js'; -import { NodeDefinition } from '../Nodes/Registry/NodeTypeRegistry.js'; -import { IRegistry, Registry } from '../Registry.js'; +import { NodeDefinitionsMap } from '../Nodes/Registry/NodeDefinitionsMap.js'; +import { Socket } from '../Sockets/Socket.js'; +import { ValueTypeMap } from '../Values/ValueTypeMap.js'; import { Variable } from '../Variables/Variable.js'; + // Purpose: // - stores the node graph export interface IGraphApi { readonly variables: { [id: string]: Variable }; readonly customEvents: { [id: string]: CustomEvent }; - readonly values: Registry['values']; - readonly getDependency: (id: string) => T; + readonly values: ValueTypeMap; + readonly getDependency: (id: string) => T | undefined; } -export class Graph { - public name = ''; - // TODO: think about whether I can replace this with an immutable strategy? Rather than having this mutable? - public readonly nodes: { [id: string]: INode } = {}; - // TODO: think about whether I can replace this with an immutable strategy? Rather than having this mutable? - public readonly variables: { [id: string]: Variable } = {}; - // TODO: think about whether I can replace this with an immutable strategy? Rather than having this mutable? - public readonly customEvents: { [id: string]: CustomEvent } = {}; - public metadata: Metadata = {}; - public version = 0; +export type GraphNodes = { [id: string]: INode }; +export type GraphVariables = { [id: string]: Variable }; +export type GraphCustomEvents = { [id: string]: CustomEvent }; - constructor(public readonly registry: IRegistry) {} +export type GraphInstance = { + name: string; + metadata: Metadata; + nodes: GraphNodes; + customEvents: GraphCustomEvents; + variables: GraphVariables; +}; - makeApi(): IGraphApi { - return { - variables: this.variables, - customEvents: this.customEvents, - values: this.registry.values, - getDependency: (id: string) => this.registry.dependencies.get(id) - }; +export const createNode = ({ + graph, + nodes, + values, + nodeTypeName, + nodeConfiguration = {} +}: { + graph: IGraphApi; + nodes: NodeDefinitionsMap; + values: ValueTypeMap; + nodeTypeName: string; + nodeConfiguration?: NodeConfiguration; +}) => { + let nodeDefinition = undefined; + if (nodes[nodeTypeName]) { + nodeDefinition = nodes[nodeTypeName]; + } + if (nodeDefinition === undefined) { + throw new Error( + `no registered node descriptions with the typeName ${nodeTypeName}` + ); } - createNode( - nodeTypeName: string, - nodeId: string = generateUuid(), - nodeConfiguration: NodeConfiguration = {} - ): INode { - if (nodeId in this.nodes) { - throw new Error( - `can not create new node of type ${nodeTypeName} with id ${nodeId} as one with that id already exists.` - ); - } + const node = nodeDefinition.nodeFactory(graph, nodeConfiguration); - let nodeDefinition: NodeDefinition | undefined = undefined; - if (this.registry.nodes.contains(nodeTypeName)) { - nodeDefinition = this.registry.nodes.get(nodeTypeName); - } - if (nodeDefinition === undefined) { - throw new Error( - `no registered node descriptions with the typeName ${nodeTypeName}` - ); + node.inputs.forEach((socket: Socket) => { + if (socket.valueTypeName !== 'flow' && socket.value === undefined) { + socket.value = values[socket.valueTypeName]?.creator(); } + }); - const graph = this.makeApi(); - const node = nodeDefinition.nodeFactory(graph, nodeConfiguration); + return node; +}; - this.nodes[nodeId] = node; - - node.inputs.forEach((socket) => { - if (socket.valueTypeName !== 'flow' && socket.value === undefined) { - socket.value = this.registry.values.get(socket.valueTypeName).creator(); - } - }); - - return node; +export const makeGraphApi = ({ + variables = {}, + customEvents = {}, + valuesTypeRegistry, + dependencies = {} +}: { + customEvents?: GraphCustomEvents; + variables?: GraphVariables; + valuesTypeRegistry: ValueTypeMap; + dependencies: Dependencies; +}): IGraphApi => ({ + variables, + customEvents, + values: valuesTypeRegistry, + getDependency: (id: string) => { + const result = dependencies[id]; + if (!result) + console.error(`Dependency not found ${id}. Did you register it?`); + return result; } -} +}); diff --git a/packages/core/src/Graphs/IO/NodeSpecJSON.ts b/packages/core/src/Graphs/IO/NodeSpecJSON.ts index 9da5988a..cf3fd991 100644 --- a/packages/core/src/Graphs/IO/NodeSpecJSON.ts +++ b/packages/core/src/Graphs/IO/NodeSpecJSON.ts @@ -1,10 +1,13 @@ import { NodeCategory } from '../../Nodes/Registry/NodeCategory.js'; import { ValueJSON } from './GraphJSON.js'; +export type ChoiceJSON = { text: string; value: any }[]; + export type InputSocketSpecJSON = { name: string; valueType: string; defaultValue?: ValueJSON; + choices?: ChoiceJSON; }; export type OutputSocketSpecJSON = { diff --git a/packages/core/src/Graphs/IO/readGraphFromJSON.test.ts b/packages/core/src/Graphs/IO/readGraphFromJSON.test.ts index cd583924..63ec0e3b 100644 --- a/packages/core/src/Graphs/IO/readGraphFromJSON.test.ts +++ b/packages/core/src/Graphs/IO/readGraphFromJSON.test.ts @@ -1,14 +1,10 @@ import { Logger } from '../../Diagnostics/Logger.js'; -import { registerCoreProfile } from '../../Profiles/Core/registerCoreProfile.js'; -import { Registry } from '../../Registry.js'; +import { getCoreRegistry } from '../../Profiles/Core/registerCoreProfile.js'; import { readGraphFromJSON } from './readGraphFromJSON.js'; - -const registry = new Registry(); -registerCoreProfile(registry); - Logger.onWarn.clear(); describe('readGraphFromJSON', () => { + const registry = getCoreRegistry(); it('throws if node ids are not unique', () => { const json = { variables: [], @@ -24,7 +20,9 @@ describe('readGraphFromJSON', () => { } ] }; - expect(() => readGraphFromJSON(json, registry)).toThrow(); + expect(() => + readGraphFromJSON({ graphJson: json, ...registry, dependencies: {} }) + ).toThrow(); }); it("throws if input keys don't match known sockets", () => { @@ -41,7 +39,9 @@ describe('readGraphFromJSON', () => { } ] }; - expect(() => readGraphFromJSON(json, registry)).toThrow(); + expect(() => + readGraphFromJSON({ graphJson: json, ...registry, dependencies: {} }) + ).toThrow(); }); it('throws if input points to non-existent node', () => { @@ -65,7 +65,9 @@ describe('readGraphFromJSON', () => { } ] }; - expect(() => readGraphFromJSON(json, registry)).toThrow(); + expect(() => + readGraphFromJSON({ graphJson: json, ...registry, dependencies: {} }) + ).toThrow(); }); it('throws if input points to non-existent socket', () => { @@ -89,6 +91,8 @@ describe('readGraphFromJSON', () => { } ] }; - expect(() => readGraphFromJSON(json, registry)).toThrow(); + expect(() => + readGraphFromJSON({ graphJson: json, ...registry, dependencies: {} }) + ).toThrow(); }); }); diff --git a/packages/core/src/Graphs/IO/readGraphFromJSON.ts b/packages/core/src/Graphs/IO/readGraphFromJSON.ts index 7c1aa4f0..c078cded 100644 --- a/packages/core/src/Graphs/IO/readGraphFromJSON.ts +++ b/packages/core/src/Graphs/IO/readGraphFromJSON.ts @@ -2,11 +2,21 @@ import { Logger } from '../../Diagnostics/Logger.js'; import { CustomEvent } from '../../Events/CustomEvent.js'; import { Link } from '../../Nodes/Link.js'; import { NodeConfiguration } from '../../Nodes/Node.js'; +import { Dependencies } from '../../Nodes/NodeDefinitions.js'; import { INode } from '../../Nodes/NodeInstance.js'; -import { Registry } from '../../Registry.js'; +import { NodeDefinitionsMap } from '../../Nodes/Registry/NodeDefinitionsMap.js'; import { Socket } from '../../Sockets/Socket.js'; +import { ValueTypeMap } from '../../Values/ValueTypeMap.js'; import { Variable } from '../../Variables/Variable.js'; -import { Graph } from '../Graph.js'; +import { + createNode, + GraphCustomEvents, + GraphInstance, + GraphNodes, + GraphVariables, + IGraphApi, + makeGraphApi +} from '../Graph.js'; import { CustomEventJSON, FlowsJSON, @@ -18,20 +28,34 @@ import { // Purpose: // - loads a node graph -export function readGraphFromJSON( - graphJson: GraphJSON, - registry: Registry -): Graph { - const graph = new Graph(registry); +export function readGraphFromJSON({ + graphJson, + nodes: nodesTypeRegistry, + values: valuesTypeRegistry, + dependencies +}: { + graphJson: GraphJSON; + nodes: NodeDefinitionsMap; + values: ValueTypeMap; + dependencies: Dependencies; +}): GraphInstance { + const graphName = graphJson?.name || ''; + const graphMetadata = graphJson?.metadata || {}; - graph.name = graphJson?.name ?? graph.name; - graph.metadata = graphJson?.metadata ?? graph.metadata; + let variables: GraphVariables = {}; + let customEvents: GraphCustomEvents = {}; if ('variables' in graphJson) { - readVariablesJSON(graph, graphJson.variables ?? []); + variables = readVariablesJSON( + valuesTypeRegistry, + graphJson.variables ?? [] + ); } if ('customEvents' in graphJson) { - readCustomEventsJSON(graph, graphJson.customEvents ?? []); + customEvents = readCustomEventsJSON( + valuesTypeRegistry, + graphJson.customEvents ?? [] + ); } const nodesJson = graphJson?.nodes ?? []; @@ -40,24 +64,46 @@ export function readGraphFromJSON( Logger.warn('readGraphFromJSON: no nodes specified'); } + const graphApi = makeGraphApi({ + valuesTypeRegistry, + variables, + customEvents, + dependencies + }); + + const nodes: GraphNodes = {}; // create new BehaviorNode instances for each node in the json. for (let i = 0; i < nodesJson.length; i += 1) { const nodeJson = nodesJson[i]; - readNodeJSON(graph, nodeJson); + const node = readNodeJSON({ + graph: graphApi, + nodes: nodesTypeRegistry, + values: valuesTypeRegistry, + nodeJson + }); + const id = nodeJson.id; + + if (id in nodes) { + throw new Error( + `can not create new node with id ${id} as one with that id already exists.` + ); + } + + nodes[id] = node; } // connect up the graph edges from BehaviorNode inputs to outputs. This is required to follow execution - Object.entries(graph.nodes).forEach(([nodeId, node]) => { + Object.entries(nodes).forEach(([nodeId, node]) => { // initialize the inputs by resolving to the reference nodes. node.inputs.forEach((inputSocket) => { inputSocket.links.forEach((link) => { - if (!(link.nodeId in graph.nodes)) { + if (!(link.nodeId in nodes)) { throw new Error( `node '${node.description.typeName}' specifies an input '${inputSocket.name}' whose link goes to ` + `a nonexistent upstream node id: ${link.nodeId}` ); } - const upstreamNode = graph.nodes[link.nodeId]; + const upstreamNode = nodes[link.nodeId]; const upstreamOutputSocket = upstreamNode.outputs.find( (socket) => socket.name === link.socketName ); @@ -84,14 +130,14 @@ export function readGraphFromJSON( node.outputs.forEach((outputSocket) => { outputSocket.links.forEach((link) => { - if (!(link.nodeId in graph.nodes)) { + if (!(link.nodeId in nodes)) { throw new Error( `node '${node.description.typeName}' specifies an output '${outputSocket.name}' whose link goes to ` + `a nonexistent downstream node id ${link.nodeId}` ); } - const downstreamNode = graph.nodes[link.nodeId]; + const downstreamNode = nodes[link.nodeId]; const downstreamInputSocket = downstreamNode.inputs.find( (socket) => socket.name === link.socketName ); @@ -117,10 +163,26 @@ export function readGraphFromJSON( }); }); - return graph; + return { + name: graphName, + metadata: graphMetadata, + nodes: nodes, + customEvents, + variables + }; } -function readNodeJSON(graph: Graph, nodeJson: NodeJSON) { +function readNodeJSON({ + graph, + nodes, + values, + nodeJson +}: { + graph: IGraphApi; + nodes: NodeDefinitionsMap; + values: ValueTypeMap; + nodeJson: NodeJSON; +}) { if (nodeJson.type === undefined) { throw new Error('readGraphFromJSON: no type for node'); } @@ -133,21 +195,29 @@ function readNodeJSON(graph: Graph, nodeJson: NodeJSON) { }); } - const node = graph.createNode(nodeName, nodeJson.id, nodeConfiguration); + const node = createNode({ + graph, + nodes, + values, + nodeTypeName: nodeName, + nodeConfiguration + }); node.label = nodeJson?.label ?? node.label; node.metadata = nodeJson?.metadata ?? node.metadata; if (nodeJson.parameters !== undefined) { - readNodeParameterJSON(graph, node, nodeJson.parameters); + readNodeParameterJSON(values, node, nodeJson.parameters); } if (nodeJson.flows !== undefined) { - readNodeFlowsJSON(graph, node, nodeJson.flows); + readNodeFlowsJSON(node, nodeJson.flows); } + + return node; } function readNodeParameterJSON( - graph: Graph, + valuesRegistry: ValueTypeMap, node: INode, parametersJson: NodeParametersJSON ) { @@ -159,9 +229,9 @@ function readNodeParameterJSON( const inputJson = parametersJson[socket.name]; if ('value' in inputJson) { // eslint-disable-next-line no-param-reassign - socket.value = graph.registry.values - .get(socket.valueTypeName) - .deserialize(inputJson.value); + socket.value = valuesRegistry[socket.valueTypeName]?.deserialize( + inputJson.value + ); } if ('link' in inputJson) { @@ -185,7 +255,7 @@ function readNodeParameterJSON( } } -function readNodeFlowsJSON(graph: Graph, node: INode, flowsJson: FlowsJSON) { +function readNodeFlowsJSON(node: INode, flowsJson: FlowsJSON) { node.outputs.forEach((socket) => { if (socket.name in flowsJson) { const outputLinkJson = flowsJson[socket.name]; @@ -210,7 +280,11 @@ function readNodeFlowsJSON(graph: Graph, node: INode, flowsJson: FlowsJSON) { } } -function readVariablesJSON(graph: Graph, variablesJson: VariableJSON[]) { +function readVariablesJSON( + valuesRegistry: ValueTypeMap, + variablesJson: VariableJSON[] +) { + const variables: GraphVariables = {}; for (let i = 0; i < variablesJson.length; i += 1) { const variableJson = variablesJson[i]; @@ -218,24 +292,28 @@ function readVariablesJSON(graph: Graph, variablesJson: VariableJSON[]) { variableJson.id, variableJson.name, variableJson.valueTypeName, - graph.registry.values - .get(variableJson.valueTypeName) - .deserialize(variableJson.initialValue) + valuesRegistry[variableJson.valueTypeName]?.deserialize( + variableJson.initialValue + ) ); variable.label = variableJson?.label ?? variable.label; variable.metadata = variableJson?.metadata ?? variable.metadata; - if (variableJson.id in graph.variables) { + if (variableJson.id in variables) { throw new Error(`duplicate variable id ${variable.id}`); } - graph.variables[variableJson.id] = variable; + variables[variableJson.id] = variable; } + + return variables; } function readCustomEventsJSON( - graph: Graph, + valuesRegistry: ValueTypeMap, customEventsJson: CustomEventJSON[] ) { + const customEvents: GraphCustomEvents = {}; + for (let i = 0; i < customEventsJson.length; i += 1) { const customEventJson = customEventsJson[i]; @@ -245,9 +323,9 @@ function readCustomEventsJSON( new Socket( parameterJson.valueTypeName, parameterJson.name, - graph.registry.values - .get(parameterJson.valueTypeName) - .deserialize(parameterJson.defaultValue) + valuesRegistry[parameterJson.valueTypeName]?.deserialize( + parameterJson.defaultValue + ) ) ); }); @@ -260,9 +338,11 @@ function readCustomEventsJSON( customEvent.label = customEventJson?.label ?? customEvent.label; customEvent.metadata = customEventJson?.metadata ?? customEvent.metadata; - if (customEvent.id in graph.customEvents) { + if (customEvent.id in customEvents) { throw new Error(`duplicate variable id ${customEvent.id}`); } - graph.customEvents[customEvent.id] = customEvent; + customEvents[customEvent.id] = customEvent; } + + return customEvents; } diff --git a/packages/core/src/Graphs/IO/writeGraphToJSON.ts b/packages/core/src/Graphs/IO/writeGraphToJSON.ts index 1b6a6aae..ab989fab 100644 --- a/packages/core/src/Graphs/IO/writeGraphToJSON.ts +++ b/packages/core/src/Graphs/IO/writeGraphToJSON.ts @@ -1,4 +1,5 @@ -import { Graph } from '../Graph.js'; +import { ValueTypeMap } from '../../Values/ValueTypeMap.js'; +import { GraphInstance } from '../Graph.js'; import { CustomEventJSON, CustomEventParameterJSON, @@ -10,7 +11,10 @@ import { VariableJSON } from './GraphJSON.js'; -export function writeGraphToJSON(graph: Graph): GraphJSON { +export function writeGraphToJSON( + graph: GraphInstance, + valuesRegistry: ValueTypeMap +): GraphJSON { const graphJson: GraphJSON = {}; if (Object.keys(graph.metadata).length > 0) { @@ -52,9 +56,9 @@ export function writeGraphToJSON(graph: Graph): GraphJSON { valueTypeName: variable.valueTypeName, name: variable.name, id: variable.id, - initialValue: graph.registry.values - .get(variable.valueTypeName) - .serialize(variable.initialValue) + initialValue: valuesRegistry[variable.valueTypeName]?.serialize( + variable.initialValue + ) }; if (variable.label.length > 0) { variableJson.label = variable.label; @@ -96,9 +100,9 @@ export function writeGraphToJSON(graph: Graph): GraphJSON { if (inputSocket.links.length === 0) { parameterJson = { - value: graph.registry.values - .get(inputSocket.valueTypeName) - .serialize(inputSocket.value) + value: valuesRegistry[inputSocket.valueTypeName]?.serialize( + inputSocket.value + ) }; } else if (inputSocket.links.length === 1) { const link = inputSocket.links[0]; diff --git a/packages/core/src/Graphs/IO/writeNodeSpecsToJSON.ts b/packages/core/src/Graphs/IO/writeNodeSpecsToJSON.ts index 7d0d63e9..bc0134c6 100644 --- a/packages/core/src/Graphs/IO/writeNodeSpecsToJSON.ts +++ b/packages/core/src/Graphs/IO/writeNodeSpecsToJSON.ts @@ -1,19 +1,50 @@ import { NodeCategory } from '../../Nodes/NodeDefinitions.js'; -import { Registry } from '../../Registry.js'; -import { Graph } from '../Graph.js'; +import { Dependencies } from '../../Nodes/Registry/DependenciesRegistry.js'; +import { NodeDefinitionsMap } from '../../Nodes/Registry/NodeDefinitionsMap.js'; +import { Choices } from '../../Sockets/Socket.js'; +import { ValueTypeMap } from '../../Values/ValueTypeMap.js'; +import { createNode, IGraphApi } from '../Graph.js'; import { + ChoiceJSON, InputSocketSpecJSON, NodeSpecJSON, OutputSocketSpecJSON } from './NodeSpecJSON.js'; -export function writeNodeSpecsToJSON(registry: Registry): NodeSpecJSON[] { +function toChoices(valueChoices: Choices | undefined): ChoiceJSON | undefined { + return valueChoices?.map((choice) => { + if (typeof choice === 'string') return { text: choice, value: choice }; + return choice; + }); +} + +export function writeNodeSpecsToJSON({ + values, + nodes, + dependencies +}: { + values: ValueTypeMap; + nodes: NodeDefinitionsMap; + dependencies: Dependencies; +}): NodeSpecJSON[] { const nodeSpecsJSON: NodeSpecJSON[] = []; - const graph = new Graph(registry); + // const graph = new Graph(registry); - registry.nodes.getAllNames().forEach((nodeTypeName) => { - const node = graph.createNode(nodeTypeName); + const graph: IGraphApi = { + values: values, + customEvents: {}, + getDependency: (id: string) => dependencies[id], + variables: {} + }; + + Object.keys(nodes).forEach((nodeTypeName) => { + const node = createNode({ + graph, + nodes, + values, + nodeTypeName + }); const nodeSpecJSON: NodeSpecJSON = { type: nodeTypeName, @@ -28,7 +59,7 @@ export function writeNodeSpecsToJSON(registry: Registry): NodeSpecJSON[] { const valueType = inputSocket.valueTypeName === 'flow' ? undefined - : registry.values.get(inputSocket.valueTypeName); + : values[inputSocket.valueTypeName]; let defaultValue = inputSocket.value; if (valueType !== undefined) { @@ -40,7 +71,8 @@ export function writeNodeSpecsToJSON(registry: Registry): NodeSpecJSON[] { const socketSpecJSON: InputSocketSpecJSON = { name: inputSocket.name, valueType: inputSocket.valueTypeName, - defaultValue + defaultValue, + choices: toChoices(inputSocket.valueChoices) }; nodeSpecJSON.inputs.push(socketSpecJSON); }); diff --git a/packages/core/src/Graphs/Validation/validateGraph.ts b/packages/core/src/Graphs/Validation/validateGraph.ts index 10f5d1ac..1e1ff692 100644 --- a/packages/core/src/Graphs/Validation/validateGraph.ts +++ b/packages/core/src/Graphs/Validation/validateGraph.ts @@ -1,9 +1,12 @@ -import { Graph } from '../Graph.js'; +import { GraphInstance } from '../Graph.js'; import { validateGraphAcyclic } from './validateGraphAcyclic.js'; import { validateGraphLinks } from './validateGraphLinks.js'; -export function validateGraph(graph: Graph): string[] { +export function validateGraph(graph: GraphInstance): string[] { const errorList: string[] = []; - errorList.push(...validateGraphAcyclic(graph), ...validateGraphLinks(graph)); + errorList.push( + ...validateGraphAcyclic(graph.nodes), + ...validateGraphLinks(graph.nodes) + ); return errorList; } diff --git a/packages/core/src/Graphs/Validation/validateGraphAcyclic.ts b/packages/core/src/Graphs/Validation/validateGraphAcyclic.ts index 2f3cd790..2ef636f1 100644 --- a/packages/core/src/Graphs/Validation/validateGraphAcyclic.ts +++ b/packages/core/src/Graphs/Validation/validateGraphAcyclic.ts @@ -1,11 +1,11 @@ import { INode } from '../../Nodes/NodeInstance.js'; -import { Graph } from '../Graph.js'; +import { GraphNodes } from '../Graph.js'; -export function validateGraphAcyclic(graph: Graph): string[] { +export function validateGraphAcyclic(nodes: GraphNodes): string[] { // apparently if you can topological sort, it is a DAG according to: https://stackoverflow.com/questions/4168/graph-serialization/4577#4577 // instead of modifying the graph, I will use metadata to mark it in place. - Object.values(graph.nodes).forEach((node) => { + Object.values(nodes).forEach((node) => { // eslint-disable-next-line no-param-reassign node.metadata['dag.marked'] = 'false'; }); @@ -19,7 +19,7 @@ export function validateGraphAcyclic(graph: Graph): string[] { // clear array: https://stackoverflow.com/a/1232046 nodesToMark.length = 0; - Object.values(graph.nodes).forEach((node) => { + Object.values(nodes).forEach((node) => { // ignore existing marked nodes. if (node.metadata['dag.marked'] === 'true') { return; @@ -29,7 +29,7 @@ export function validateGraphAcyclic(graph: Graph): string[] { node.inputs.forEach((inputSocket) => { inputSocket.links.forEach((link) => { // is the other end marked? If not, then it is still connected. - if (graph.nodes[link.nodeId].metadata['dag.marked'] === 'false') { + if (nodes[link.nodeId].metadata['dag.marked'] === 'false') { inputsConnected = true; } }); @@ -48,7 +48,7 @@ export function validateGraphAcyclic(graph: Graph): string[] { // output errors for each unmarked node // also remove the metadata related to DAG marking - Object.values(graph.nodes).forEach((node) => { + Object.values(nodes).forEach((node) => { if (node.metadata['dag.marked'] === 'false') { errorList.push( `node ${node.description.typeName} is part of a cycle, not a directed acyclic graph` diff --git a/packages/core/src/Graphs/Validation/validateGraphLinks.ts b/packages/core/src/Graphs/Validation/validateGraphLinks.ts index bc786e4f..2a9d0ef6 100644 --- a/packages/core/src/Graphs/Validation/validateGraphLinks.ts +++ b/packages/core/src/Graphs/Validation/validateGraphLinks.ts @@ -1,15 +1,15 @@ -import { Graph } from '../Graph.js'; +import { GraphNodes } from '../Graph.js'; -export function validateGraphLinks(graph: Graph): string[] { +export function validateGraphLinks(nodes: GraphNodes): string[] { const errorList: string[] = []; // for each node - Object.values(graph.nodes).forEach((node) => { + Object.values(nodes).forEach((node) => { // for each input socket node.inputs.forEach((inputSocket) => { // ensure that connected output sockets are the same type inputSocket.links.forEach((link) => { // check if the node id is correct - if (!(link.nodeId in graph.nodes)) { + if (!(link.nodeId in nodes)) { errorList.push( `node ${node.description.typeName}.${inputSocket.name} has link using invalid nodeId: ${link.nodeId}` ); @@ -17,7 +17,7 @@ export function validateGraphLinks(graph: Graph): string[] { } // check if the socketName is correct - const upstreamNode = graph.nodes[link.nodeId]; + const upstreamNode = nodes[link.nodeId]; const outputSocket = upstreamNode.outputs.find( (socket) => socket.name === link.socketName ); diff --git a/packages/core/src/Nodes/NodeDefinitions.ts b/packages/core/src/Nodes/NodeDefinitions.ts index 885e5d43..2c260de3 100644 --- a/packages/core/src/Nodes/NodeDefinitions.ts +++ b/packages/core/src/Nodes/NodeDefinitions.ts @@ -1,4 +1,5 @@ import { IGraphApi } from '../Graphs/Graph.js'; +import { Choices } from '../Sockets/Socket.js'; import { AsyncNodeInstance } from './AsyncNode.js'; import { EventNodeInstance } from './EventNode.js'; import { FlowNodeInstance } from './FlowNode.js'; @@ -12,10 +13,16 @@ import { NodeConfigurationDescription } from './Registry/NodeDescription.js'; export interface SocketDefinition { valueType: string; defaultValue?: any; - choices?: string[]; + choices?: Choices; label?: string; } -export type SocketsMap = Record; + +export type SocketsMap = Record< + string, + | SocketDefinition + | string + | ((nodeConfig: NodeConfiguration, graph: IGraphApi) => SocketDefinition) +>; export type SocketListDefinition = SocketDefinition & { key: string }; export type SocketsList = SocketListDefinition[]; @@ -54,7 +61,7 @@ export interface INodeDefinition< export type SocketNames = TSockets extends SocketsMap ? keyof TSockets : any; -export type Dependencies = any | undefined; +export type Dependencies = Record; export type TriggeredFn< TInput extends SocketsDefinition = SocketsDefinition, diff --git a/packages/core/src/Nodes/Registry/DependenciesRegistry.ts b/packages/core/src/Nodes/Registry/DependenciesRegistry.ts index ae8029b8..e7e32850 100644 --- a/packages/core/src/Nodes/Registry/DependenciesRegistry.ts +++ b/packages/core/src/Nodes/Registry/DependenciesRegistry.ts @@ -1,21 +1,10 @@ -export class DependenciesRegistry { - private readonly registryKeyToDependency: { [key: string]: any } = {}; +export type Dependencies = Record; - register(key: string, dependency: any) { - if (key in this.registryKeyToDependency) { - throw new Error(`already registered dependency with name '${key}`); - } - this.registryKeyToDependency[key] = dependency; - } - - get(key: string): T { - if (!(key in this.registryKeyToDependency)) { - throw new Error(`can not find dependency with name '${key}`); - } - return this.registryKeyToDependency[key]; - } - - getAllNames(): string[] { - return Object.keys(this.registryKeyToDependency); - } -} +export const registerDependency = ( + dependencies: Dependencies, + key: string, + dependency: any +) => ({ + ...dependencies, + [key]: dependency +}); diff --git a/packages/core/src/Nodes/Registry/NodeCategory.ts b/packages/core/src/Nodes/Registry/NodeCategory.ts index 9c4bf6bb..e9a6a73e 100644 --- a/packages/core/src/Nodes/Registry/NodeCategory.ts +++ b/packages/core/src/Nodes/Registry/NodeCategory.ts @@ -6,5 +6,6 @@ export enum NodeCategory { Variable = 'Variable', Flow = 'Flow', Time = 'Time', - None = 'None' + None = 'None', + Effect = 'Effect' } diff --git a/packages/core/src/Nodes/Registry/NodeDefinitionsMap.ts b/packages/core/src/Nodes/Registry/NodeDefinitionsMap.ts new file mode 100644 index 00000000..a7ea9a57 --- /dev/null +++ b/packages/core/src/Nodes/Registry/NodeDefinitionsMap.ts @@ -0,0 +1,8 @@ +import { IHasNodeFactory, INodeDefinition } from '../NodeDefinitions.js'; + +export type NodeDefinition = IHasNodeFactory & + Pick; + +export type NodeDefinitionsMap = { + readonly [type: string]: NodeDefinition; +}; diff --git a/packages/core/src/Nodes/Registry/NodeTypeRegistry.ts b/packages/core/src/Nodes/Registry/NodeTypeRegistry.ts deleted file mode 100644 index 082cfa39..00000000 --- a/packages/core/src/Nodes/Registry/NodeTypeRegistry.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { IHasNodeFactory, INodeDefinition } from '../NodeDefinitions.js'; - -export type NodeDefinition = IHasNodeFactory & - Pick; - -export class NodeTypeRegistry { - private readonly typeNameToNodeDescriptions: { - [type: string]: NodeDefinition; - } = {}; - - clear() { - for (const nodeTypeName in this.typeNameToNodeDescriptions) { - delete this.typeNameToNodeDescriptions[nodeTypeName]; - } - } - register(...descriptions: Array) { - descriptions.forEach((description) => { - const allTypeNames = (description.otherTypeNames || []).concat([ - description.typeName - ]); - - allTypeNames.forEach((typeName) => { - if (typeName in this.typeNameToNodeDescriptions) { - throw new Error(`already registered node type ${typeName} (string)`); - } - this.typeNameToNodeDescriptions[typeName] = description; - }); - }); - } - - contains(typeName: string): boolean { - return typeName in this.typeNameToNodeDescriptions; - } - get(typeName: string): NodeDefinition { - if (!(typeName in this.typeNameToNodeDescriptions)) { - throw new Error(`no registered node with type name ${typeName}`); - } - return this.typeNameToNodeDescriptions[typeName]; - } - - getAllNames(): string[] { - return Object.keys(this.typeNameToNodeDescriptions); - } - - getAllDescriptions(): NodeDefinition[] { - return Object.values(this.typeNameToNodeDescriptions); - } -} diff --git a/packages/core/src/Nodes/Validation/validateNodeRegistry.ts b/packages/core/src/Nodes/Validation/validateNodeRegistry.ts index 11e168fc..2ad822b7 100644 --- a/packages/core/src/Nodes/Validation/validateNodeRegistry.ts +++ b/packages/core/src/Nodes/Validation/validateNodeRegistry.ts @@ -1,14 +1,25 @@ -import { Graph } from '../../Graphs/Graph.js'; -import { Registry } from '../../Registry.js'; +import { createNode, makeGraphApi } from '../../Graphs/Graph.js'; +import { ValueTypeMap } from '../../Values/ValueTypeMap.js'; +import { NodeDefinitionsMap } from '../Registry/NodeDefinitionsMap.js'; const nodeTypeNameRegex = /^\w+(\/\w+)*$/; const socketNameRegex = /^\w+$/; -export function validateNodeRegistry(registry: Registry): string[] { +export function validateNodeRegistry({ + nodes, + values +}: { + nodes: NodeDefinitionsMap; + values: ValueTypeMap; +}): string[] { const errorList: string[] = []; - const graph = new Graph(registry); - registry.nodes.getAllNames().forEach((nodeTypeName) => { - const node = graph.createNode(nodeTypeName); + // const graph = new Graph(registry); + const graph = makeGraphApi({ + valuesTypeRegistry: values, + dependencies: {} + }); + Object.keys(nodes).forEach((nodeTypeName) => { + const node = createNode({ graph, nodes, values, nodeTypeName }); // ensure node is registered correctly. if (node.description.typeName !== nodeTypeName) { @@ -35,7 +46,7 @@ export function validateNodeRegistry(registry: Registry): string[] { if (socket.valueTypeName === 'flow') { return; } - const valueType = registry.values.get(socket.valueTypeName); + const valueType = values[socket.valueTypeName]; // check to ensure all value types are supported. if (valueType === undefined) { errorList.push( @@ -53,7 +64,7 @@ export function validateNodeRegistry(registry: Registry): string[] { if (socket.valueTypeName === 'flow') { return; } - const valueType = registry.values.get(socket.valueTypeName); + const valueType = values[socket.valueTypeName]; // check to ensure all value types are supported. if (valueType === undefined) { errorList.push( diff --git a/packages/core/src/Nodes/nodeFactory.ts b/packages/core/src/Nodes/nodeFactory.ts index cc11d06e..e6e7bcb3 100644 --- a/packages/core/src/Nodes/nodeFactory.ts +++ b/packages/core/src/Nodes/nodeFactory.ts @@ -4,29 +4,35 @@ import { NodeConfiguration } from './Node.js'; import { INodeDefinition, NodeCategory, + SocketDefinition, SocketsDefinition, SocketsList, SocketsMap } from './NodeDefinitions.js'; import { INode, NodeType } from './NodeInstance.js'; +const makeSocketFromDefinition = ( + key: string, + { valueType, defaultValue, choices }: SocketDefinition +) => new Socket(valueType, key as string, defaultValue, undefined, choices); + const makeSocketsFromMap = ( socketConfig: TSockets, - keys: (keyof TSockets)[] + keys: (keyof TSockets)[], + configuration: NodeConfiguration, + graphApi: IGraphApi ): Socket[] => { return keys.map((key) => { const definition = socketConfig[key]; if (typeof definition === 'string') { return new Socket(definition, key as string); } - const { valueType, defaultValue, choices } = definition; - return new Socket( - valueType, - key as string, - defaultValue, - undefined, - choices - ); + if (typeof definition === 'function') { + const socketDef = definition(configuration, graphApi); + + return makeSocketFromDefinition(key as string, socketDef); + } + return makeSocketFromDefinition(key as string, definition); }); }; @@ -56,7 +62,9 @@ export function makeOrGenerateSockets( return makeSocketsFromMap( socketConfigOrFactory, - Object.keys(socketConfigOrFactory) + Object.keys(socketConfigOrFactory), + nodeConfig, + graph ); } diff --git a/packages/core/src/Nodes/testUtils.ts b/packages/core/src/Nodes/testUtils.ts index 7678b251..45f7d773 100644 --- a/packages/core/src/Nodes/testUtils.ts +++ b/packages/core/src/Nodes/testUtils.ts @@ -1,6 +1,4 @@ -import { Graph, IGraphApi } from '../Graphs/Graph.js'; -import { registerCoreValueTypes } from '../Profiles/Core/registerCoreProfile.js'; -import { Registry } from '../Registry.js'; +import { IGraphApi, makeGraphApi } from '../Graphs/Graph.js'; import { NodeConfiguration } from './Node.js'; import { IFunctionNodeDefinition, @@ -12,9 +10,10 @@ import { makeOrGenerateSockets } from './nodeFactory.js'; import { NodeConfigurationDescription } from './Registry/NodeDescription.js'; const makeEmptyGraph = (): IGraphApi => { - const registry = new Registry(); - registerCoreValueTypes(registry.values); - return new Graph(registry).makeApi(); + return makeGraphApi({ + dependencies: {}, + valuesTypeRegistry: {} + }); }; export type SocketValues = { diff --git a/packages/core/src/Profiles/Core/Debug/DebugLog.ts b/packages/core/src/Profiles/Core/Debug/DebugLog.ts index 0865dc81..65bac1f2 100644 --- a/packages/core/src/Profiles/Core/Debug/DebugLog.ts +++ b/packages/core/src/Profiles/Core/Debug/DebugLog.ts @@ -4,7 +4,7 @@ import { } from '../../../Nodes/NodeDefinitions.js'; import { ILogger } from '../Abstractions/ILogger.js'; -export const loggerDependencyKey = 'loggger'; +export const loggerDependencyKey = 'logger'; export const Log = makeFlowNodeDefinition({ typeName: 'debug/log', @@ -28,16 +28,16 @@ export const Log = makeFlowNodeDefinition({ const text = read('text'); switch (read('severity')) { case 'verbose': - logger.verbose(text); + logger?.verbose(text); break; case 'info': - logger.info(text); + logger?.info(text); break; case 'warning': - logger.warn(text); + logger?.warn(text); break; case 'error': - logger.error(text); + logger?.error(text); break; } diff --git a/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnEnd.ts b/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnEnd.ts index 20089dfb..ec19e6f1 100644 --- a/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnEnd.ts +++ b/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnEnd.ts @@ -35,7 +35,7 @@ export const LifecycleOnEnd = makeEventNodeDefinition({ lifecycleEventEmitterDependencyKey ); - lifecycleEventEmitter.endEvent.addListener(onEndEvent); + lifecycleEventEmitter?.endEvent.addListener(onEndEvent); return { onEndEvent @@ -48,7 +48,7 @@ export const LifecycleOnEnd = makeEventNodeDefinition({ lifecycleEventEmitterDependencyKey ); - if (onEndEvent) lifecycleEventEmitter.endEvent.removeListener(onEndEvent); + if (onEndEvent) lifecycleEventEmitter?.endEvent.removeListener(onEndEvent); return {}; } diff --git a/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnStart.ts b/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnStart.ts index 318b9935..370c2f50 100644 --- a/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnStart.ts +++ b/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnStart.ts @@ -34,7 +34,7 @@ export const LifecycleOnStart = makeEventNodeDefinition({ lifecycleEventEmitterDependencyKey ); - lifecycleEventEmitter.startEvent.addListener(onStartEvent); + lifecycleEventEmitter?.startEvent.addListener(onStartEvent); return { onStartEvent @@ -48,7 +48,7 @@ export const LifecycleOnStart = makeEventNodeDefinition({ ); if (onStartEvent) - lifecycleEventEmitter.startEvent.removeListener(onStartEvent); + lifecycleEventEmitter?.startEvent.removeListener(onStartEvent); return {}; } diff --git a/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnTick.ts b/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnTick.ts index b1555815..6945103e 100644 --- a/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnTick.ts +++ b/packages/core/src/Profiles/Core/Lifecycle/LifecycleOnTick.ts @@ -39,7 +39,7 @@ export const LifecycleOnTick = makeEventNodeDefinition({ lifecycleEventEmitterDependencyKey ); - lifecycleEventEmitter.tickEvent.addListener(onTickEvent); + lifecycleEventEmitter?.tickEvent.addListener(onTickEvent); return { onTickEvent @@ -53,7 +53,7 @@ export const LifecycleOnTick = makeEventNodeDefinition({ ); if (onTickEvent) - lifecycleEventEmitter.tickEvent.removeListener(onTickEvent); + lifecycleEventEmitter?.tickEvent.removeListener(onTickEvent); return {}; } diff --git a/packages/core/src/Profiles/Core/Values/FloatNodes.ts b/packages/core/src/Profiles/Core/Values/FloatNodes.ts index f8d75e3f..32d9f616 100644 --- a/packages/core/src/Profiles/Core/Values/FloatNodes.ts +++ b/packages/core/src/Profiles/Core/Values/FloatNodes.ts @@ -1,9 +1,9 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; import { degreesToRadians, equalsTolerance, radiansToDegrees -} from './Internal/Common.js'; +} from '../../../mathUtilities.js'; +import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; // Unreal Engine Blueprint Float nodes: https://docs.unrealengine.com/4.27/en-US/BlueprintAPI/Math/Float/ export const Constant = makeInNOutFunctionDesc({ diff --git a/packages/core/src/Profiles/Core/readCoreGraphs.test.ts b/packages/core/src/Profiles/Core/readCoreGraphs.test.ts index 93462a9d..b771d400 100644 --- a/packages/core/src/Profiles/Core/readCoreGraphs.test.ts +++ b/packages/core/src/Profiles/Core/readCoreGraphs.test.ts @@ -12,16 +12,18 @@ import * as frameCounterJson from '../../../../../graphs/core/variables/FrameCou import * as initialValueJson from '../../../../../graphs/core/variables/InitialValue.json'; import * as setGetJson from '../../../../../graphs/core/variables/SetGet.json'; import { Logger } from '../../Diagnostics/Logger.js'; -import { Graph } from '../../Graphs/Graph.js'; +import { GraphInstance } from '../../Graphs/Graph.js'; import { GraphJSON } from '../../Graphs/IO/GraphJSON.js'; import { readGraphFromJSON } from '../../Graphs/IO/readGraphFromJSON.js'; import { validateGraphAcyclic } from '../../Graphs/Validation/validateGraphAcyclic.js'; import { validateGraphLinks } from '../../Graphs/Validation/validateGraphLinks.js'; -import { Registry } from '../../Registry.js'; -import { registerCoreProfile } from './registerCoreProfile.js'; +import { + getCoreNodeDefinitions, + getCoreValueTypes +} from './registerCoreProfile.js'; -const registry = new Registry(); -registerCoreProfile(registry); +const valueTypes = getCoreValueTypes(); +const nodeDefinitions = getCoreNodeDefinitions(valueTypes); Logger.onWarn.clear(); @@ -45,15 +47,20 @@ for (const key in exampleMap) { describe(`${key}`, () => { const exampleJson = exampleMap[key] as GraphJSON; - let parsedGraphJson: Graph | undefined; + let parsedGraphJson: GraphInstance | undefined; test('parse json to graph', () => { expect(() => { - parsedGraphJson = readGraphFromJSON(exampleJson, registry); + parsedGraphJson = readGraphFromJSON({ + graphJson: exampleJson, + nodes: nodeDefinitions, + values: valueTypes, + dependencies: {} + }); }).not.toThrow(); // await fs.writeFile('./examples/test.json', JSON.stringify(writeGraphToJSON(graph), null, ' '), { encoding: 'utf-8' }); if (parsedGraphJson !== undefined) { - expect(validateGraphLinks(parsedGraphJson)).toHaveLength(0); - expect(validateGraphAcyclic(parsedGraphJson)).toHaveLength(0); + expect(validateGraphLinks(parsedGraphJson.nodes)).toHaveLength(0); + expect(validateGraphAcyclic(parsedGraphJson.nodes)).toHaveLength(0); } else { expect(parsedGraphJson).toBeDefined(); } diff --git a/packages/core/src/Profiles/Core/registerCoreProfile.test.ts b/packages/core/src/Profiles/Core/registerCoreProfile.test.ts index fa6cf016..8fe28100 100644 --- a/packages/core/src/Profiles/Core/registerCoreProfile.test.ts +++ b/packages/core/src/Profiles/Core/registerCoreProfile.test.ts @@ -1,17 +1,15 @@ import { validateNodeRegistry } from '../../Nodes/Validation/validateNodeRegistry.js'; -import { Registry } from '../../Registry.js'; import { validateValueRegistry } from '../../Values/Validation/validateValueRegistry.js'; -import { registerCoreProfile } from './registerCoreProfile.js'; +import { getCoreRegistry } from './registerCoreProfile.js'; describe('core profile', () => { - const registry = new Registry(); - registerCoreProfile(registry); + const registry = getCoreRegistry(); test('validate node registry', () => { expect(validateNodeRegistry(registry)).toHaveLength(0); }); test('validate value registry', () => { - expect(validateValueRegistry(registry)).toHaveLength(0); + expect(validateValueRegistry(registry.values)).toHaveLength(0); }); const valueTypeNameToExampleValues: { [key: string]: any[] } = { @@ -23,7 +21,7 @@ describe('core profile', () => { for (const valueTypeName in valueTypeNameToExampleValues) { test(`${valueTypeName} serialization/deserialization`, () => { - const valueType = registry.values.get(valueTypeName); + const valueType = registry.values[valueTypeName]; const exampleValues: any[] = valueTypeNameToExampleValues[valueTypeName]; exampleValues.forEach((exampleValue: any) => { const deserializedValue = valueType.deserialize(exampleValue); diff --git a/packages/core/src/Profiles/Core/registerCoreProfile.ts b/packages/core/src/Profiles/Core/registerCoreProfile.ts index a09aaf3a..c99d2bdb 100644 --- a/packages/core/src/Profiles/Core/registerCoreProfile.ts +++ b/packages/core/src/Profiles/Core/registerCoreProfile.ts @@ -1,8 +1,11 @@ /* eslint-disable max-len */ -import { DependenciesRegistry } from '../../Nodes/Registry/DependenciesRegistry.js'; +import { + NodeDefinition, + NodeDefinitionsMap +} from '../../Nodes/Registry/NodeDefinitionsMap.js'; import { getNodeDescriptions } from '../../Nodes/Registry/NodeDescription.js'; -import { IRegistry } from '../../Registry.js'; -import { ValueTypeRegistry } from '../../Values/ValueTypeRegistry.js'; +import { ValueTypeMap } from '../../Values/ValueTypeMap.js'; +import { getStringConversionsForValueType } from '../registerSerializersForValueType.js'; import { ILifecycleEventEmitter } from './Abstractions/ILifecycleEventEmitter.js'; import { ILogger } from './Abstractions/ILogger.js'; import { OnCustomEvent } from './CustomEvents/OnCustomEvent.js'; @@ -30,7 +33,6 @@ import { } from './Lifecycle/LifecycleOnStart.js'; import { LifecycleOnTick } from './Lifecycle/LifecycleOnTick.js'; import { Easing } from './Logic/Easing.js'; -import { registerSerializersForValueType } from './registerSerializersForValueType.js'; import { Delay } from './Time/Delay.js'; import * as TimeNodes from './Time/TimeNodes.js'; import * as BooleanNodes from './Values/BooleanNodes.js'; @@ -44,93 +46,106 @@ import { StringValue } from './Values/StringValue.js'; import { VariableGet } from './Variables/VariableGet.js'; import { VariableSet } from './Variables/VariableSet.js'; -export function registerLogger( - registry: DependenciesRegistry, - logger: ILogger -) { - registry.register(loggerDependencyKey, logger); +export const makeCoreDependencies = ({ + lifecyleEmitter, + logger +}: { + lifecyleEmitter: ILifecycleEventEmitter; + logger: ILogger; +}) => ({ + [lifecycleEventEmitterDependencyKey]: lifecyleEmitter, + [loggerDependencyKey]: logger +}); + +export function getCoreValueTypes(): ValueTypeMap { + return toMap( + [BooleanValue, StringValue, IntegerValue, FloatValue], + (v) => v.name + ); } -export function registerLifecycleEventEmitter( - registry: DependenciesRegistry, - emitter: ILifecycleEventEmitter -) { - registry.register(lifecycleEventEmitterDependencyKey, emitter); +export function toMap( + elements: T[], + getName: (element: T) => string +): Record { + return Object.fromEntries( + elements.map((element) => [getName(element), element]) + ); } -export function registerCoreValueTypes(values: ValueTypeRegistry) { - // pull in value type nodes - values.register(BooleanValue); - values.register(StringValue); - values.register(IntegerValue); - values.register(FloatValue); +function getStringConversions(values: ValueTypeMap): NodeDefinition[] { + return ['boolean', 'float', 'integer'].flatMap((valueTypeName) => + getStringConversionsForValueType({ values, valueTypeName }) + ); } -export function registerCoreProfile( - registry: Pick -) { - const { nodes, values } = registry; - - registerCoreValueTypes(values); - - // pull in value type nodes - nodes.register(...getNodeDescriptions(StringNodes)); - nodes.register(...getNodeDescriptions(BooleanNodes)); - nodes.register(...getNodeDescriptions(IntegerNodes)); - nodes.register(...getNodeDescriptions(FloatNodes)); +export function getCoreNodeDefinitions( + values: ValueTypeMap +): NodeDefinitionsMap { + const allNodeDefinitions: NodeDefinition[] = [ + ...getNodeDescriptions(StringNodes), + ...getNodeDescriptions(BooleanNodes), + ...getNodeDescriptions(IntegerNodes), + ...getNodeDescriptions(FloatNodes), - // custom events + // custom events - nodes.register(OnCustomEvent.Description); - nodes.register(TriggerCustomEvent.Description); + OnCustomEvent.Description, + TriggerCustomEvent.Description, - // variables + // variables - nodes.register(VariableGet); - nodes.register(VariableSet); + VariableGet, + VariableSet, - // complex logic + // complex logic - nodes.register(Easing); + Easing, - // actions + // actions - nodes.register(DebugLog); - nodes.register(AssertExpectTrue.Description); + DebugLog, + AssertExpectTrue.Description, - // events + // events - nodes.register(LifecycleOnStart); - nodes.register(LifecycleOnEnd); - nodes.register(LifecycleOnTick); + LifecycleOnStart, + LifecycleOnEnd, + LifecycleOnTick, - // time + // time - nodes.register(Delay.Description); - nodes.register(...getNodeDescriptions(TimeNodes)); + Delay.Description, + ...getNodeDescriptions(TimeNodes), - // flow control + // flow control - nodes.register(Branch); - nodes.register(FlipFlop); - nodes.register(ForLoop); - nodes.register(Sequence); - nodes.register(SwitchOnInteger); - nodes.register(SwitchOnString); - nodes.register(Debounce.Description); - nodes.register(Throttle.Description); - nodes.register(DoN); - nodes.register(DoOnce); - nodes.register(Gate); - nodes.register(MultiGate); - nodes.register(WaitAll.Description); - nodes.register(Counter); + Branch, + FlipFlop, + ForLoop, + Sequence, + SwitchOnInteger, + SwitchOnString, + Debounce.Description, + Throttle.Description, + DoN, + DoOnce, + Gate, + MultiGate, + WaitAll.Description, + Counter, - // string converters + ...getStringConversions(values) + ]; - ['boolean', 'float', 'integer'].forEach((valueTypeName) => { - registerSerializersForValueType(registry, valueTypeName); - }); - - return registry; + // convert array to map + return toMap(allNodeDefinitions, (node) => node.typeName); } + +export const getCoreRegistry = () => { + const values = getCoreValueTypes(); + return { + values, + nodes: getCoreNodeDefinitions(getCoreValueTypes()) + }; +}; diff --git a/packages/core/src/Profiles/Core/registerSerializersForValueType.ts b/packages/core/src/Profiles/Core/registerSerializersForValueType.ts deleted file mode 100644 index 13bea66a..00000000 --- a/packages/core/src/Profiles/Core/registerSerializersForValueType.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { makeInNOutFunctionDesc } from '../../Nodes/FunctionNode.js'; -import { IRegistry } from '../../Registry.js'; -import { toCamelCase } from '../../toCamelCase.js'; - -export function registerSerializersForValueType( - registry: Pick, - valueTypeName: string -) { - const camelCaseValueTypeName = toCamelCase(valueTypeName); - registry.nodes.register( - makeInNOutFunctionDesc({ - name: `math/to${camelCaseValueTypeName}/string`, - label: `To ${camelCaseValueTypeName}`, - in: ['string'], - out: valueTypeName, - exec: (a: string) => registry.values.get(valueTypeName).deserialize(a) - }), - makeInNOutFunctionDesc({ - name: `math/toString/${valueTypeName}`, - label: 'To String', - in: [valueTypeName], - out: 'string', - exec: (a: any) => { - const temp = registry.values.get(valueTypeName).serialize(a); - switch (typeof temp) { - case 'string': - return temp; - case 'number': - return temp.toString(); - case 'boolean': - return temp.toString(); - default: - return JSON.stringify(temp); - } - } - }) - ); -} diff --git a/packages/core/src/Profiles/Scene/Actions/SetSceneProperty.ts b/packages/core/src/Profiles/Scene/Actions/SetSceneProperty.ts deleted file mode 100644 index a4b2c1ab..00000000 --- a/packages/core/src/Profiles/Scene/Actions/SetSceneProperty.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { makeFlowNodeDefinition } from '../../../Nodes/NodeDefinitions.js'; -import { IScene } from '../Abstractions/IScene.js'; - -export const SetSceneProperty = (valueTypeNames: string[]) => - valueTypeNames.map((valueTypeName) => - makeFlowNodeDefinition({ - typeName: `scene/set/${valueTypeName}`, - in: { - jsonPath: 'string', - value: valueTypeName, - flow: 'flow' - }, - out: { - flow: 'flow' - }, - initialState: undefined, - triggered: ({ commit, read, graph: { getDependency } }) => { - const scene = getDependency('scene'); - scene.setProperty(read('jsonPath'), valueTypeName, read('value')); - commit('flow'); - } - }) - ); diff --git a/packages/core/src/Profiles/Scene/Queries/GetSceneProperty.ts b/packages/core/src/Profiles/Scene/Queries/GetSceneProperty.ts deleted file mode 100644 index e719d914..00000000 --- a/packages/core/src/Profiles/Scene/Queries/GetSceneProperty.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { makeFunctionNodeDefinition } from '../../../Nodes/NodeDefinitions.js'; -import { IScene } from '../Abstractions/IScene.js'; - -export const GetSceneProperty = (valueTypeNames: string[]) => - valueTypeNames.map((valueTypeName) => - makeFunctionNodeDefinition({ - typeName: `scene/get${valueTypeName}`, - in: { - jsonPath: 'string' - }, - out: { - value: valueTypeName - }, - exec: ({ graph: { getDependency }, read, write }) => { - const scene = getDependency('scene'); - const propertyValue = scene.getProperty( - read('jsonPath'), - valueTypeName - ); - write('value', propertyValue); - } - }) - ); diff --git a/packages/core/src/Profiles/Scene/registerSceneProfile.ts b/packages/core/src/Profiles/Scene/registerSceneProfile.ts deleted file mode 100644 index a7a54733..00000000 --- a/packages/core/src/Profiles/Scene/registerSceneProfile.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* eslint-disable max-len */ -import { getNodeDescriptions } from '../../Nodes/Registry/NodeDescription.js'; -import { IRegistry } from '../../Registry.js'; -import { registerSerializersForValueType } from '../Core/registerSerializersForValueType.js'; -import { IScene } from './Abstractions/IScene.js'; -import { SetSceneProperty } from './Actions/SetSceneProperty.js'; -import { OnSceneNodeClick } from './Events/OnSceneNodeClick.js'; -import { GetSceneProperty } from './Queries/GetSceneProperty.js'; -import * as ColorNodes from './Values/ColorNodes.js'; -import { ColorValue } from './Values/ColorValue.js'; -import * as EulerNodes from './Values/EulerNodes.js'; -import { EulerValue } from './Values/EulerValue.js'; -import * as Mat3Nodes from './Values/Mat3Nodes.js'; -import { Mat3Value } from './Values/Mat3Value.js'; -import * as Mat4Nodes from './Values/Mat4Nodes.js'; -import { Mat4Value } from './Values/Mat4Value.js'; -import * as QuatNodes from './Values/QuatNodes.js'; -import { QuatValue } from './Values/QuatValue.js'; -import * as Vec2Nodes from './Values/Vec2Nodes.js'; -import { Vec2Value } from './Values/Vec2Value.js'; -import * as Vec3Nodes from './Values/Vec3Nodes.js'; -import { Vec3Value } from './Values/Vec3Value.js'; -import * as Vec4Nodes from './Values/Vec4Nodes.js'; -import { Vec4Value } from './Values/Vec4Value.js'; - -export function registerSceneDependency( - dependencies: IRegistry['dependencies'], - scene: IScene -) { - dependencies.register('scene', scene); -} - -export function registerSceneProfile( - registry: Pick -) { - const { values, nodes } = registry; - - // pull in value type nodes - values.register(Vec2Value); - values.register(Vec3Value); - values.register(Vec4Value); - values.register(ColorValue); - values.register(EulerValue); - values.register(QuatValue); - values.register(Mat3Value); - values.register(Mat4Value); - - // pull in value type nodes - nodes.register(...getNodeDescriptions(Vec2Nodes)); - nodes.register(...getNodeDescriptions(Vec3Nodes)); - nodes.register(...getNodeDescriptions(Vec4Nodes)); - nodes.register(...getNodeDescriptions(ColorNodes)); - nodes.register(...getNodeDescriptions(EulerNodes)); - nodes.register(...getNodeDescriptions(QuatNodes)); - nodes.register(...getNodeDescriptions(Mat3Nodes)); - nodes.register(...getNodeDescriptions(Mat4Nodes)); - - // events - - nodes.register(OnSceneNodeClick); - - // actions - const allValueTypeNames = values.getAllNames(); - nodes.register(...SetSceneProperty(allValueTypeNames)); - nodes.register(...GetSceneProperty(allValueTypeNames)); - - const newValueTypeNames = [ - 'vec2', - 'vec3', - 'vec4', - 'quat', - 'euler', - 'color', - 'mat3', - 'mat4' - ]; - - // variables - - newValueTypeNames.forEach((valueTypeName) => { - registerSerializersForValueType(registry, valueTypeName); - }); - - return registry; -} diff --git a/packages/core/src/Profiles/registerSerializersForValueType.ts b/packages/core/src/Profiles/registerSerializersForValueType.ts new file mode 100644 index 00000000..1bdc1a33 --- /dev/null +++ b/packages/core/src/Profiles/registerSerializersForValueType.ts @@ -0,0 +1,29 @@ +import { makeInNOutFunctionDesc } from '../Nodes/FunctionNode.js'; +import { toCamelCase } from '../toCamelCase.js'; +import { ValueTypeMap } from '../Values/ValueTypeMap.js'; + +export function getStringConversionsForValueType({ + values, + valueTypeName +}: { + values: ValueTypeMap; + valueTypeName: string; +}) { + const camelCaseValueTypeName = toCamelCase(valueTypeName); + return [ + makeInNOutFunctionDesc({ + name: `math/to${camelCaseValueTypeName}/string`, + label: `To ${camelCaseValueTypeName}`, + in: ['string'], + out: valueTypeName, + exec: (a: string) => values[valueTypeName]?.deserialize(a) + }), + makeInNOutFunctionDesc({ + name: `math/toString/${valueTypeName}`, + label: 'To String', + in: [valueTypeName], + out: 'string', + exec: (a: any) => values[valueTypeName]?.serialize(a) + }) + ]; +} diff --git a/packages/core/src/Registry.ts b/packages/core/src/Registry.ts index f6b0f624..37bf2953 100644 --- a/packages/core/src/Registry.ts +++ b/packages/core/src/Registry.ts @@ -1,15 +1,7 @@ -import { DependenciesRegistry } from './Nodes/Registry/DependenciesRegistry.js'; -import { NodeTypeRegistry } from './Nodes/Registry/NodeTypeRegistry.js'; -import { ValueTypeRegistry } from './Values/ValueTypeRegistry.js'; +import { NodeDefinitionsMap } from './Nodes/Registry/NodeDefinitionsMap.js'; +import { ValueTypeMap } from './Values/ValueTypeMap.js'; export interface IRegistry { - readonly values: ValueTypeRegistry; - readonly nodes: NodeTypeRegistry; - readonly dependencies: DependenciesRegistry; -} - -export class Registry implements IRegistry { - public readonly values = new ValueTypeRegistry(); - public readonly nodes = new NodeTypeRegistry(); - public readonly dependencies = new DependenciesRegistry(); + readonly values: ValueTypeMap; + readonly nodes: NodeDefinitionsMap; } diff --git a/packages/core/src/Sockets/Socket.ts b/packages/core/src/Sockets/Socket.ts index 03ed6ae2..d58d00bd 100644 --- a/packages/core/src/Sockets/Socket.ts +++ b/packages/core/src/Sockets/Socket.ts @@ -1,5 +1,7 @@ import { Link } from '../Nodes/Link.js'; +export type Choices = string[] | { text: string; value: any }[]; + export class Socket { public readonly links: Link[] = []; @@ -8,6 +10,6 @@ export class Socket { public readonly name: string, public value: any | undefined = undefined, public readonly label: string | undefined = undefined, - public readonly valueChoices: any[] = [] // if not empty, value must be one of these. + public readonly valueChoices?: Choices // if not empty, value must be one of these. ) {} } diff --git a/packages/core/src/Values/Validation/validateValueRegistry.ts b/packages/core/src/Values/Validation/validateValueRegistry.ts index 99ff0c75..8e7ba7a5 100644 --- a/packages/core/src/Values/Validation/validateValueRegistry.ts +++ b/packages/core/src/Values/Validation/validateValueRegistry.ts @@ -1,22 +1,22 @@ -import { Registry } from '../../Registry.js'; +import { ValueTypeMap } from '../ValueTypeMap.js'; const valueTypeNameRegex = /^\w+$/; -export function validateValueRegistry(graphRegistry: Registry): string[] { +export function validateValueRegistry(values: ValueTypeMap): string[] { const errorList: string[] = []; - graphRegistry.values.getAllNames().forEach((valueTypeName) => { + Object.keys(values).forEach((valueTypeName) => { if (!valueTypeNameRegex.test(valueTypeName)) { errorList.push(`invalid value type name ${valueTypeName}`); } - const valueType = graphRegistry.values.get(valueTypeName); + const valueType = values[valueTypeName]; - const value = valueType.creator(); - const serializedValue = valueType.serialize(value); - const deserializedValue = valueType.deserialize(serializedValue); - const reserializedValue = valueType.serialize(deserializedValue); - const redeserializedValue = valueType.deserialize(reserializedValue); + const value = valueType?.creator(); + const serializedValue = valueType?.serialize(value); + const deserializedValue = valueType?.deserialize(serializedValue); + const reserializedValue = valueType?.serialize(deserializedValue); + const redeserializedValue = valueType?.deserialize(reserializedValue); if (JSON.stringify(serializedValue) !== JSON.stringify(reserializedValue)) { errorList.push( diff --git a/packages/core/src/Values/ValueTypeMap.ts b/packages/core/src/Values/ValueTypeMap.ts new file mode 100644 index 00000000..cc5a548b --- /dev/null +++ b/packages/core/src/Values/ValueTypeMap.ts @@ -0,0 +1,3 @@ +import { ValueType } from './ValueType.js'; + +export type ValueTypeMap = { readonly [key: string]: ValueType }; diff --git a/packages/core/src/Values/ValueTypeRegistry.ts b/packages/core/src/Values/ValueTypeRegistry.ts deleted file mode 100644 index cb054e74..00000000 --- a/packages/core/src/Values/ValueTypeRegistry.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { ValueType } from './ValueType.js'; - -export class ValueTypeRegistry { - private readonly valueTypeNameToValueType: { [key: string]: ValueType } = {}; - - register(...valueTypes: Array) { - valueTypes.forEach((valueType) => { - if (valueType.name in this.valueTypeNameToValueType) { - throw new Error(`already registered value type ${valueType.name}`); - } - this.valueTypeNameToValueType[valueType.name] = valueType; - }); - } - - get(valueTypeName: string): ValueType { - if (!(valueTypeName in this.valueTypeNameToValueType)) { - throw new Error(`can not find value type with name '${valueTypeName}`); - } - return this.valueTypeNameToValueType[valueTypeName]; - } - - getAllNames(): string[] { - return Object.keys(this.valueTypeNameToValueType); - } - - getAll(): ValueType[] { - return Object.values(this.valueTypeNameToValueType); - } -} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 728b4bf0..b55f7b34 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,6 +1,13 @@ export * from './Diagnostics/Logger.js'; export * from './Diagnostics/Assert.js'; +export * from './parseFloats.js'; +export * from './toCamelCase.js'; +export * from './Easing.js'; +export * from './sleep.js'; +export * from './sequence.js'; +export * from './mathUtilities.js'; + // main data model export * from './Graphs/Graph.js'; export * from './Nodes/Node.js'; @@ -27,8 +34,8 @@ export * from './Graphs/IO/writeNodeSpecsToJSON.js'; // registry export * from './Nodes/Registry/NodeCategory.js'; export * from './Nodes/Registry/NodeDescription.js'; -export * from './Nodes/Registry/NodeTypeRegistry.js'; -export * from './Values/ValueTypeRegistry.js'; +export * from './Nodes/Registry/NodeDefinitionsMap.js'; +export * from './Values/ValueTypeMap.js'; export * from './Registry.js'; // registry validation @@ -45,6 +52,8 @@ export * from './Graphs/Validation/validateGraph.js'; export * from './Graphs/IO/GraphJSON.js'; export * from './Graphs/IO/NodeSpecJSON.js'; +export * from './Profiles/registerSerializersForValueType.js'; + // core profile export * from './Profiles/Core/Abstractions/ILifecycleEventEmitter.js'; export * from './Profiles/Core/Abstractions/ILogger.js'; @@ -82,28 +91,4 @@ export * from './Profiles/Core/Variables/VariableSet.js'; export * from './Profiles/Core/Variables/VariableGet.js'; export * from './Profiles/Core/registerCoreProfile.js'; -// scene profile -export * from './Profiles/Scene/Abstractions/IScene.js'; -export * from './Profiles/Scene/Abstractions/Drivers/DummyScene.js'; -export * from './Profiles/Scene/Actions/SetSceneProperty.js'; -export * from './Profiles/Scene/Events/OnSceneNodeClick.js'; -export * from './Profiles/Scene/Logic/VecElements.js'; -export * from './Profiles/Scene/Queries/GetSceneProperty.js'; -export * from './Profiles/Scene/Values/Internal/Vec2.js'; -export * from './Profiles/Scene/Values/Internal/Vec3.js'; -export * from './Profiles/Scene/Values/Internal/Vec4.js'; -export * as ColorNodes from './Profiles/Scene/Values/ColorNodes.js'; -export * from './Profiles/Scene/Values/ColorValue.js'; -export * as EulerNodes from './Profiles/Scene/Values/EulerNodes.js'; -export * from './Profiles/Scene/Values/EulerValue.js'; -export * as Vec2Nodes from './Profiles/Scene/Values/Vec2Nodes.js'; -export * from './Profiles/Scene/Values/Vec2Value.js'; -export * as Vec3Nodes from './Profiles/Scene/Values/Vec3Nodes.js'; -export * from './Profiles/Scene/Values/Vec3Value.js'; -export * as Vec4Nodes from './Profiles/Scene/Values/Vec4Nodes.js'; -export * from './Profiles/Scene/Values/Vec4Value.js'; -export * as QuatNodes from './Profiles/Scene/Values/QuatNodes.js'; -export * from './Profiles/Scene/Values/QuatValue.js'; -export * from './Profiles/Scene/registerSceneProfile.js'; - export * from './parseFloats.js'; diff --git a/packages/core/src/Profiles/Core/Values/Internal/Common.ts b/packages/core/src/mathUtilities.ts similarity index 100% rename from packages/core/src/Profiles/Core/Values/Internal/Common.ts rename to packages/core/src/mathUtilities.ts diff --git a/packages/core/src/validateRegistry.ts b/packages/core/src/validateRegistry.ts index 0408cd54..1da06808 100644 --- a/packages/core/src/validateRegistry.ts +++ b/packages/core/src/validateRegistry.ts @@ -1,12 +1,19 @@ +import { NodeDefinitionsMap } from './Nodes/Registry/NodeDefinitionsMap.js'; import { validateNodeRegistry } from './Nodes/Validation/validateNodeRegistry.js'; -import { Registry } from './Registry.js'; import { validateValueRegistry } from './Values/Validation/validateValueRegistry.js'; +import { ValueTypeMap } from './Values/ValueTypeMap.js'; -export function validateRegistry(registry: Registry): string[] { +export function validateRegistry({ + nodes, + values +}: { + nodes: NodeDefinitionsMap; + values: ValueTypeMap; +}): string[] { const errorList: string[] = []; errorList.push( - ...validateValueRegistry(registry), - ...validateNodeRegistry(registry) + ...validateValueRegistry(values), + ...validateNodeRegistry({ nodes, values }) ); return errorList; } diff --git a/packages/flow/package.json b/packages/flow/package.json index 691572d8..ece5d0ff 100644 --- a/packages/flow/package.json +++ b/packages/flow/package.json @@ -23,7 +23,9 @@ "@fortawesome/react-fontawesome": "^0.2.0", "classnames": "^2.3.1", "downshift": "^6.1.7", - "uuid": "^8.3.2", + "uuid": "^8.3.2" + }, + "peerDependencies": { "@behave-graph/core": "*", "reactflow": "^11.1.1" } diff --git a/packages/flow/src/components/AutoSizeInput.tsx b/packages/flow/src/components/AutoSizeInput.tsx index f7af59ae..3abb55aa 100644 --- a/packages/flow/src/components/AutoSizeInput.tsx +++ b/packages/flow/src/components/AutoSizeInput.tsx @@ -48,9 +48,11 @@ export const AutoSizeInput: FC = ({ if (measureRef.current === null) return; if (inputRef.current === null) return; - const width = measureRef.current.clientWidth; + const padding = props.type === 'number' || props.type === 'float' ? 20 : 0; + + const width = measureRef.current.clientWidth + padding; inputRef.current.style.width = Math.max(minWidth, width) + 'px'; - }, [props.value, minWidth, styles]); + }, [props.value, minWidth, styles, props.type]); return ( <> diff --git a/packages/flow/src/components/Controls.tsx b/packages/flow/src/components/Controls.tsx index 6755e2a9..a5d38225 100644 --- a/packages/flow/src/components/Controls.tsx +++ b/packages/flow/src/components/Controls.tsx @@ -1,11 +1,7 @@ -import { - Engine, - ManualLifecycleEventEmitter, - readGraphFromJSON, - Registry -} from '@behave-graph/core'; +import { GraphJSON, NodeSpecJSON } from '@behave-graph/core'; import { faDownload, + faPause, faPlay, faQuestion, faTrash, @@ -13,60 +9,30 @@ import { } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useState } from 'react'; -import { ControlButton, Controls, useReactFlow } from 'reactflow'; +import { ControlButton, Controls } from 'reactflow'; -import { flowToBehave } from '../transformers/flowToBehave.js'; -import { sleep } from '../util/sleep.js'; import { ClearModal } from './modals/ClearModal.js'; import { HelpModal } from './modals/HelpModal.js'; import { Examples, LoadModal } from './modals/LoadModal.js'; import { SaveModal } from './modals/SaveModal.js'; -export type CustomControlsProps = { - examples: Examples; - registry: Registry; - manualLifecycleEventEmitter: ManualLifecycleEventEmitter; -}; - -const CustomControls = ({ +export const CustomControls = ({ + playing, + togglePlay, + setBehaviorGraph, examples, - registry, - manualLifecycleEventEmitter -}: CustomControlsProps) => { + specJson +}: { + playing: boolean; + togglePlay: () => void; + setBehaviorGraph: (value: GraphJSON) => void; + examples: Examples; + specJson: NodeSpecJSON[] | undefined; +}) => { const [loadModalOpen, setLoadModalOpen] = useState(false); const [saveModalOpen, setSaveModalOpen] = useState(false); const [helpModalOpen, setHelpModalOpen] = useState(false); const [clearModalOpen, setClearModalOpen] = useState(false); - const instance = useReactFlow(); - - const handleRun = async () => { - const nodes = instance.getNodes(); - const edges = instance.getEdges(); - const graphJson = flowToBehave(nodes, edges); - const graph = readGraphFromJSON(graphJson, registry); - - const engine = new Engine(graph); - - if (manualLifecycleEventEmitter.startEvent.listenerCount > 0) { - manualLifecycleEventEmitter.startEvent.emit(); - await engine.executeAllAsync(5); - } - - if (manualLifecycleEventEmitter.tickEvent.listenerCount > 0) { - const iterations = 20; - const tickDuration = 0.01; - for (let tick = 0; tick < iterations; tick++) { - manualLifecycleEventEmitter.tickEvent.emit(); - engine.executeAllSync(tickDuration); - await sleep(tickDuration); - } - } - - if (manualLifecycleEventEmitter.endEvent.listenerCount > 0) { - manualLifecycleEventEmitter.endEvent.emit(); - await engine.executeAllAsync(5); - } - }; return ( <> @@ -83,16 +49,23 @@ const CustomControls = ({ setClearModalOpen(true)}> - handleRun()}> - + + setLoadModalOpen(false)} + setBehaviorGraph={setBehaviorGraph} examples={examples} /> - setSaveModalOpen(false)} /> + {specJson && ( + setSaveModalOpen(false)} + /> + )} setHelpModalOpen(false)} /> = ({ graph, examples }) => { - const [nodePickerVisibility, setNodePickerVisibility] = - useState(); - const [lastConnectStart, setLastConnectStart] = - useState(); - - const [initialNodes, initialEdges] = useMemo( - () => behaveToFlow(graph), - [graph] - ); - - const [nodes, , onNodesChange] = useNodesState(initialNodes); - const [edges, , onEdgesChange] = useEdgesState(initialEdges); - - const { registry, logger, manualLifecycleEventEmitter } = useRegistry(); - const nodeSpecJson = useNodeSpecJson({ registry }); - - const onConnect = useCallback( - (connection: Connection) => { - if (connection.source === null) return; - if (connection.target === null) return; - - const newEdge = { - id: uuidv4(), - source: connection.source, - target: connection.target, - sourceHandle: connection.sourceHandle, - targetHandle: connection.targetHandle - }; - onEdgesChange([ - { - type: 'add', - item: newEdge - } - ]); - }, - [onEdgesChange] - ); - - const handleAddNode = useCallback( - (nodeType: string, position: XYPosition) => { - closeNodePicker(); - const newNode = { - id: uuidv4(), - type: nodeType, - position, - data: {} - }; - onNodesChange([ - { - type: 'add', - item: newNode - } - ]); - - if (lastConnectStart === undefined) return; - - // add an edge if we started on a socket - const originNode = nodes.find( - (node) => node.id === lastConnectStart.nodeId - ); - if (originNode === undefined) return; - onEdgesChange([ - { - type: 'add', - item: calculateNewEdge( - originNode, - nodeType, - newNode.id, - lastConnectStart - ) - } - ]); - }, - [lastConnectStart, nodes, onEdgesChange, onNodesChange] - ); - - const handleStartConnect = ( - e: ReactMouseEvent | ReactTouchEvent, - params: OnConnectStartParams - ) => { - setLastConnectStart(params); - }; - - const handleStopConnect = (e: MouseEvent | TouchEvent) => { - const element = e.target as HTMLElement; - if ( - element.classList.contains('react-flow__pane') && - e instanceof MouseEvent - ) { - setNodePickerVisibility({ x: e.clientX, y: e.clientY }); - } else { - setLastConnectStart(undefined); - } - }; - - const closeNodePicker = () => { - setLastConnectStart(undefined); - setNodePickerVisibility(undefined); - }; - - const handlePaneClick = () => closeNodePicker(); - - const handlePaneContextMenu = (e: ReactMouseEvent) => { - e.preventDefault(); - setNodePickerVisibility({ x: e.clientX, y: e.clientY }); - }; +export const Flow: FC = ({ initialGraph: graph, examples }) => { + const { + nodeDefinitions, + valuesDefinitions, + dependencies: dependencies + } = useCoreRegistry(); + + const specJson = useNodeSpecJson({ + nodes: nodeDefinitions, + values: valuesDefinitions, + dependencies + }); + + const { + nodes, + edges, + onNodesChange, + onEdgesChange, + graphJson, + setGraphJson, + nodeTypes + } = useBehaveGraphFlow({ + initialGraphJson: graph, + specJson + }); + + const { + onConnect, + handleStartConnect, + handleStopConnect, + handlePaneClick, + handlePaneContextMenu, + nodePickerVisibility, + handleAddNode, + lastConnectStart, + closeNodePicker, + nodePickFilters + } = useFlowHandlers({ + nodes, + onEdgesChange, + onNodesChange, + specJSON: specJson + }); + + const { togglePlay, playing } = useGraphRunner({ + graphJson, + valueTypeDefinitions: valuesDefinitions, + nodeDefinitions, + eventEmitter: dependencies.lifecycleEventEmitter, + dependencies + }); return ( - = ({ graph, examples }) => { {nodePickerVisibility && ( )} diff --git a/packages/flow/src/components/InputSocket.tsx b/packages/flow/src/components/InputSocket.tsx index 85098a46..27233f8d 100644 --- a/packages/flow/src/components/InputSocket.tsx +++ b/packages/flow/src/components/InputSocket.tsx @@ -1,4 +1,4 @@ -import { InputSocketSpecJSON } from '@behave-graph/core'; +import { InputSocketSpecJSON, NodeSpecJSON } from '@behave-graph/core'; import { faCaretRight } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import cx from 'classnames'; @@ -12,17 +12,95 @@ export type InputSocketProps = { connected: boolean; value: any | undefined; onChange: (key: string, value: any) => void; + specJSON: NodeSpecJSON[]; } & InputSocketSpecJSON; -export default function InputSocket({ - connected, +const InputFieldForValue = ({ + choices, value, + defaultValue, onChange, name, - valueType, - defaultValue + valueType +}: Pick< + InputSocketProps, + 'choices' | 'value' | 'defaultValue' | 'name' | 'onChange' | 'valueType' +>) => { + const showChoices = choices?.length; + const inputVal = String(value) ?? defaultValue ?? ''; + + if (showChoices) + return ( + + ); + + return ( + <> + {valueType === 'string' && ( + onChange(name, e.currentTarget.value)} + /> + )} + {valueType === 'number' && ( + onChange(name, e.currentTarget.value)} + /> + )} + {valueType === 'float' && ( + onChange(name, e.currentTarget.value)} + /> + )} + {valueType === 'integer' && ( + onChange(name, e.currentTarget.value)} + /> + )} + {valueType === 'boolean' && ( + onChange(name, e.currentTarget.checked)} + /> + )} + + ); +}; + +export default function InputSocket({ + connected, + + specJSON, + ...rest }: InputSocketProps) { + const { value, name, valueType, defaultValue, choices } = rest; const instance = useReactFlow(); + const isFlowSocket = valueType === 'flow'; let colorName = valueTypeColorMap[valueType]; @@ -30,6 +108,9 @@ export default function InputSocket({ colorName = 'red'; } + const inputVal = String(value) ?? defaultValue ?? ''; + + // @ts-ignore const [backgroundColor, borderColor] = colors[colorName]; const showName = isFlowSocket === false || name !== 'flow'; @@ -39,57 +120,15 @@ export default function InputSocket({ )} {showName &&
{name}
} - {isFlowSocket === false && connected === false && ( - <> - {valueType === 'string' && ( - onChange(name, e.currentTarget.value)} - /> - )} - {valueType === 'number' && ( - onChange(name, e.currentTarget.value)} - /> - )} - {valueType === 'float' && ( - onChange(name, e.currentTarget.value)} - /> - )} - {valueType === 'integer' && ( - onChange(name, e.currentTarget.value)} - /> - )} - {valueType === 'boolean' && ( - onChange(name, e.currentTarget.checked)} - /> - )} - - )} + + {!isFlowSocket && !connected && } - isValidConnection(connection, instance) + isValidConnection(connection, instance, specJSON) } /> diff --git a/packages/flow/src/components/Node.tsx b/packages/flow/src/components/Node.tsx index 8dfb7ec6..91ad7761 100644 --- a/packages/flow/src/components/Node.tsx +++ b/packages/flow/src/components/Node.tsx @@ -10,6 +10,7 @@ import OutputSocket from './OutputSocket.js'; type NodeProps = FlowNodeProps & { spec: NodeSpecJSON; + allSpecs: NodeSpecJSON[]; }; const getPairs = (arr1: T[], arr2: U[]) => { @@ -22,7 +23,7 @@ const getPairs = (arr1: T[], arr2: U[]) => { return pairs; }; -export const Node = ({ id, data, spec, selected }: NodeProps) => { +export const Node = ({ id, data, spec, selected, allSpecs }: NodeProps) => { const edges = useEdges(); const handleChange = useChangeNodeData(id); const pairs = getPairs(spec.inputs, spec.outputs); @@ -41,6 +42,7 @@ export const Node = ({ id, data, spec, selected }: NodeProps) => { {input && ( { {output && ( )} diff --git a/packages/flow/src/components/NodePicker.tsx b/packages/flow/src/components/NodePicker.tsx index 9ff71c9c..4675f439 100644 --- a/packages/flow/src/components/NodePicker.tsx +++ b/packages/flow/src/components/NodePicker.tsx @@ -17,19 +17,20 @@ type NodePickerProps = { specJSON: NodeSpecJSON[] | undefined; }; -const NodePicker = ({ +export const NodePicker = ({ position, onPickNode, onClose, filters, - specJSON: nodes + specJSON }: NodePickerProps) => { const [search, setSearch] = useState(''); const instance = useReactFlow(); useOnPressKey('Escape', onClose); - let filtered = nodes; + if (!specJSON) return null; + let filtered = specJSON; if (filters !== undefined) { filtered = filtered?.filter((node) => { const sockets = @@ -74,5 +75,3 @@ const NodePicker = ({ ); }; - -export default NodePicker; diff --git a/packages/flow/src/components/OutputSocket.tsx b/packages/flow/src/components/OutputSocket.tsx index 1bd16f74..627bfbcf 100644 --- a/packages/flow/src/components/OutputSocket.tsx +++ b/packages/flow/src/components/OutputSocket.tsx @@ -1,4 +1,4 @@ -import { OutputSocketSpecJSON } from '@behave-graph/core'; +import { NodeSpecJSON, OutputSocketSpecJSON } from '@behave-graph/core'; import { faCaretRight } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import cx from 'classnames'; @@ -9,9 +9,11 @@ import { isValidConnection } from '../util/isValidConnection.js'; export type OutputSocketProps = { connected: boolean; + specJSON: NodeSpecJSON[]; } & OutputSocketSpecJSON; export default function OutputSocket({ + specJSON, connected, valueType, name @@ -22,6 +24,7 @@ export default function OutputSocket({ if (colorName === undefined) { colorName = 'red'; } + // @ts-ignore const [backgroundColor, borderColor] = colors[colorName]; const showName = isFlowSocket === false || name !== 'flow'; @@ -43,7 +46,7 @@ export default function OutputSocket({ position={Position.Right} className={cx(borderColor, connected ? backgroundColor : 'bg-gray-800')} isValidConnection={(connection: Connection) => - isValidConnection(connection, instance) + isValidConnection(connection, instance, specJSON) } /> diff --git a/packages/flow/src/components/modals/LoadModal.tsx b/packages/flow/src/components/modals/LoadModal.tsx index 4661cefc..90a4218f 100644 --- a/packages/flow/src/components/modals/LoadModal.tsx +++ b/packages/flow/src/components/modals/LoadModal.tsx @@ -1,25 +1,24 @@ import { GraphJSON } from '@behave-graph/core'; -import { FC, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useReactFlow } from 'reactflow'; -import { behaveToFlow } from '../../transformers/behaveToFlow.js'; -import { autoLayout } from '../../util/autoLayout.js'; -import { hasPositionMetaData } from '../../util/hasPositionMetaData.js'; import { Modal } from './Modal.js'; +export type Examples = { + [key: string]: GraphJSON; +}; + export type LoadModalProps = { open?: boolean; onClose: () => void; + setBehaviorGraph: (value: GraphJSON) => void; examples: Examples; }; -export type Examples = { - [key: string]: GraphJSON; -}; - -export const LoadModal: FC = ({ +export const LoadModal: React.FC = ({ open = false, onClose, + setBehaviorGraph, examples }) => { const [value, setValue] = useState(); @@ -27,7 +26,13 @@ export const LoadModal: FC = ({ const instance = useReactFlow(); - const handleLoad = () => { + useEffect(() => { + if (selected) { + setValue(JSON.stringify(examples[selected], null, 2)); + } + }, [selected, examples]); + + const handleLoad = useCallback(() => { let graph; if (value !== undefined) { graph = JSON.parse(value) as GraphJSON; @@ -37,14 +42,7 @@ export const LoadModal: FC = ({ if (graph === undefined) return; - const [nodes, edges] = behaveToFlow(graph); - - if (hasPositionMetaData(graph) === false) { - autoLayout(nodes, edges); - } - - instance.setNodes(nodes); - instance.setEdges(edges); + setBehaviorGraph(graph); // TODO better way to call fit vew after edges render setTimeout(() => { @@ -52,7 +50,7 @@ export const LoadModal: FC = ({ }, 100); handleClose(); - }; + }, [setBehaviorGraph, value, instance]); const handleClose = () => { setValue(undefined); @@ -86,11 +84,11 @@ export const LoadModal: FC = ({ - - - - - + {Object.keys(examples).map((key) => ( + + ))} ); diff --git a/packages/flow/src/components/modals/SaveModal.tsx b/packages/flow/src/components/modals/SaveModal.tsx index 6d827e8a..4b5c5eb4 100644 --- a/packages/flow/src/components/modals/SaveModal.tsx +++ b/packages/flow/src/components/modals/SaveModal.tsx @@ -1,19 +1,31 @@ +import { NodeSpecJSON } from '@behave-graph/core'; import { FC, useMemo, useRef, useState } from 'react'; import { useEdges, useNodes } from 'reactflow'; import { flowToBehave } from '../../transformers/flowToBehave.js'; import { Modal } from './Modal.js'; -export type SaveModalProps = { open?: boolean; onClose: () => void }; +export type SaveModalProps = { + open?: boolean; + onClose: () => void; + specJson: NodeSpecJSON[]; +}; -export const SaveModal: FC = ({ open = false, onClose }) => { +export const SaveModal: FC = ({ + open = false, + onClose, + specJson +}) => { const ref = useRef(null); const [copied, setCopied] = useState(false); const edges = useEdges(); const nodes = useNodes(); - const flow = useMemo(() => flowToBehave(nodes, edges), [nodes, edges]); + const flow = useMemo( + () => flowToBehave(nodes, edges, specJson), + [nodes, edges, specJson] + ); const jsonString = JSON.stringify(flow, null, 2); diff --git a/packages/flow/src/hooks/useBehaveGraphFlow.ts b/packages/flow/src/hooks/useBehaveGraphFlow.ts new file mode 100644 index 00000000..55132d23 --- /dev/null +++ b/packages/flow/src/hooks/useBehaveGraphFlow.ts @@ -0,0 +1,75 @@ +import { GraphJSON, NodeSpecJSON } from '@behave-graph/core'; +import { useCallback, useEffect, useState } from 'react'; +import { useEdgesState, useNodesState } from 'reactflow'; + +import { behaveToFlow } from '../transformers/behaveToFlow.js'; +import { flowToBehave } from '../transformers/flowToBehave.js'; +import { autoLayout } from '../util/autoLayout.js'; +import { hasPositionMetaData } from '../util/hasPositionMetaData.js'; +import { useCustomNodeTypes } from './useCustomNodeTypes.js'; + +export const fetchBehaviorGraphJson = async (url: string) => + // eslint-disable-next-line unicorn/no-await-expression-member + (await (await fetch(url)).json()) as GraphJSON; + +/** + * Hook that returns the nodes and edges for react-flow, and the graphJson for the behave-graph. + * If nodes or edges are changes, the graph json is updated automatically. + * The graph json can be set manually, in which case the nodes and edges are updated to match the graph json. + * @param param0 + * @returns + */ +export const useBehaveGraphFlow = ({ + initialGraphJson, + specJson +}: { + initialGraphJson: GraphJSON; + specJson: NodeSpecJSON[] | undefined; +}) => { + const [graphJson, setStoredGraphJson] = useState(); + const [nodes, setNodes, onNodesChange] = useNodesState([]); + const [edges, setEdges, onEdgesChange] = useEdgesState([]); + + const setGraphJson = useCallback( + (graphJson: GraphJSON) => { + if (!graphJson) return; + + const [nodes, edges] = behaveToFlow(graphJson); + + if (hasPositionMetaData(graphJson) === false) { + autoLayout(nodes, edges); + } + + setNodes(nodes); + setEdges(edges); + setStoredGraphJson(graphJson); + }, + [setEdges, setNodes] + ); + + useEffect(() => { + if (!initialGraphJson) return; + setGraphJson(initialGraphJson); + }, [initialGraphJson, setGraphJson]); + + useEffect(() => { + if (!specJson) return; + // when nodes and edges are updated, update the graph json with the flow to behave behavior + const graphJson = flowToBehave(nodes, edges, specJson); + setStoredGraphJson(graphJson); + }, [nodes, edges, specJson]); + + const nodeTypes = useCustomNodeTypes({ + specJson + }); + + return { + nodes, + edges, + onEdgesChange, + onNodesChange, + setGraphJson, + graphJson, + nodeTypes + }; +}; diff --git a/packages/flow/src/hooks/useCoreRegistry.ts b/packages/flow/src/hooks/useCoreRegistry.ts new file mode 100644 index 00000000..13b86c96 --- /dev/null +++ b/packages/flow/src/hooks/useCoreRegistry.ts @@ -0,0 +1,34 @@ +import { + getCoreNodeDefinitions, + getCoreValueTypes, + ValueTypeMap +} from '@behave-graph/core'; +import { useMemo } from 'react'; + +import { useCoreDependencies } from './useDependencies.js'; + +export const useCoreValueDefinitions = () => { + return useMemo(() => getCoreValueTypes(), []); +}; + +export const useCoreNodeDefinitions = ({ + values +}: { + values: ValueTypeMap; +}) => { + return useMemo(() => getCoreNodeDefinitions(values), [values]); +}; + +export const useCoreRegistry = () => { + const valuesDefinitions = useCoreValueDefinitions(); + const nodeDefinitions = useCoreNodeDefinitions({ + values: valuesDefinitions + }); + const dependencies = useCoreDependencies(); + + return { + nodeDefinitions, + valuesDefinitions, + dependencies + }; +}; diff --git a/packages/flow/src/hooks/useCustomNodeTypes.tsx b/packages/flow/src/hooks/useCustomNodeTypes.tsx new file mode 100644 index 00000000..61e7fc94 --- /dev/null +++ b/packages/flow/src/hooks/useCustomNodeTypes.tsx @@ -0,0 +1,30 @@ +import { NodeSpecJSON } from '@behave-graph/core'; +import { useEffect, useState } from 'react'; +import { NodeTypes } from 'reactflow'; + +import { Node } from '../components/Node.js'; + +const getCustomNodeTypes = (allSpecs: NodeSpecJSON[]) => { + return allSpecs.reduce((nodes: NodeTypes, node) => { + nodes[node.type] = (props) => ( + + ); + return nodes; + }, {}); +}; + +export const useCustomNodeTypes = ({ + specJson +}: { + specJson: NodeSpecJSON[] | undefined; +}) => { + const [customNodeTypes, setCustomNodeTypes] = useState(); + useEffect(() => { + if (!specJson) return; + const customNodeTypes = getCustomNodeTypes(specJson); + + setCustomNodeTypes(customNodeTypes); + }, [specJson]); + + return customNodeTypes; +}; diff --git a/packages/flow/src/hooks/useDependencies.ts b/packages/flow/src/hooks/useDependencies.ts new file mode 100644 index 00000000..f31e3d1b --- /dev/null +++ b/packages/flow/src/hooks/useDependencies.ts @@ -0,0 +1,50 @@ +import { + DefaultLogger, + Dependencies, + makeCoreDependencies, + ManualLifecycleEventEmitter +} from '@behave-graph/core'; +import { useEffect, useState } from 'react'; + +export const useCoreDependencies = () => { + const [dependencies] = useState(() => + makeCoreDependencies({ + lifecyleEmitter: new ManualLifecycleEventEmitter(), + logger: new DefaultLogger() + }) + ); + + return dependencies; +}; + +export const useMergeDependencies = ( + a: Dependencies | undefined, + b: Dependencies | undefined +): Dependencies | undefined => { + const [merged, setMerged] = useState(); + + useEffect(() => { + if (!a || !b) setMerged(undefined); + else + setMerged({ + ...a, + ...b + }); + }, [a, b]); + + return merged; +}; + +export const useDependency = ( + dependency: any, + createDependency: (dependency: any) => Dependencies +) => { + const [dependencies, setDependencies] = useState(); + + useEffect(() => { + if (typeof dependency === 'undefined') setDependencies(undefined); + else setDependencies(createDependency(dependency)); + }, [dependency, createDependency]); + + return dependencies; +}; diff --git a/packages/flow/src/hooks/useFlowHandlers.ts b/packages/flow/src/hooks/useFlowHandlers.ts new file mode 100644 index 00000000..3e89a691 --- /dev/null +++ b/packages/flow/src/hooks/useFlowHandlers.ts @@ -0,0 +1,169 @@ +import { NodeSpecJSON } from '@behave-graph/core'; +import { + MouseEvent as ReactMouseEvent, + useCallback, + useEffect, + useState +} from 'react'; +import { Connection, Node, OnConnectStartParams, XYPosition } from 'reactflow'; +import { v4 as uuidv4 } from 'uuid'; + +import { calculateNewEdge } from '../util/calculateNewEdge.js'; +import { getNodePickerFilters } from '../util/getPickerFilters.js'; +import { useBehaveGraphFlow } from './useBehaveGraphFlow.js'; + +type BehaveGraphFlow = ReturnType; + +const useNodePickFilters = ({ + nodes, + lastConnectStart, + specJSON +}: { + nodes: Node[]; + lastConnectStart: OnConnectStartParams | undefined; + specJSON: NodeSpecJSON[] | undefined; +}) => { + const [nodePickFilters, setNodePickFilters] = useState( + getNodePickerFilters(nodes, lastConnectStart, specJSON) + ); + + useEffect(() => { + setNodePickFilters(getNodePickerFilters(nodes, lastConnectStart, specJSON)); + }, [nodes, lastConnectStart, specJSON]); + + return nodePickFilters; +}; + +export const useFlowHandlers = ({ + onEdgesChange, + onNodesChange, + nodes, + specJSON +}: Pick & { + nodes: Node[]; + specJSON: NodeSpecJSON[] | undefined; +}) => { + const [lastConnectStart, setLastConnectStart] = + useState(); + const [nodePickerVisibility, setNodePickerVisibility] = + useState(); + + const onConnect = useCallback( + (connection: Connection) => { + if (connection.source === null) return; + if (connection.target === null) return; + + const newEdge = { + id: uuidv4(), + source: connection.source, + target: connection.target, + sourceHandle: connection.sourceHandle, + targetHandle: connection.targetHandle + }; + onEdgesChange([ + { + type: 'add', + item: newEdge + } + ]); + }, + [onEdgesChange] + ); + + const closeNodePicker = useCallback(() => { + setLastConnectStart(undefined); + setNodePickerVisibility(undefined); + }, []); + + const handleAddNode = useCallback( + (nodeType: string, position: XYPosition) => { + closeNodePicker(); + const newNode = { + id: uuidv4(), + type: nodeType, + position, + data: {} + }; + onNodesChange([ + { + type: 'add', + item: newNode + } + ]); + + if (lastConnectStart === undefined) return; + + // add an edge if we started on a socket + const originNode = nodes.find( + (node) => node.id === lastConnectStart.nodeId + ); + if (originNode === undefined) return; + if (!specJSON) return; + onEdgesChange([ + { + type: 'add', + item: calculateNewEdge( + originNode, + nodeType, + newNode.id, + lastConnectStart, + specJSON + ) + } + ]); + }, + [ + closeNodePicker, + lastConnectStart, + nodes, + onEdgesChange, + onNodesChange, + specJSON + ] + ); + + const handleStartConnect = useCallback( + (e: ReactMouseEvent, params: OnConnectStartParams) => { + setLastConnectStart(params); + }, + [] + ); + + const handleStopConnect = useCallback((e: MouseEvent) => { + const element = e.target as HTMLElement; + if (element.classList.contains('react-flow__pane')) { + setNodePickerVisibility({ x: e.clientX, y: e.clientY }); + } else { + setLastConnectStart(undefined); + } + }, []); + + const handlePaneClick = useCallback( + () => closeNodePicker(), + [closeNodePicker] + ); + + const handlePaneContextMenu = useCallback((e: ReactMouseEvent) => { + e.preventDefault(); + setNodePickerVisibility({ x: e.clientX, y: e.clientY }); + }, []); + + const nodePickFilters = useNodePickFilters({ + nodes, + lastConnectStart, + specJSON + }); + + return { + onConnect, + handleStartConnect, + handleStopConnect, + handlePaneClick, + handlePaneContextMenu, + lastConnectStart, + nodePickerVisibility, + handleAddNode, + closeNodePicker, + nodePickFilters + }; +}; diff --git a/packages/flow/src/hooks/useGraphRunner.ts b/packages/flow/src/hooks/useGraphRunner.ts new file mode 100644 index 00000000..aa60adbe --- /dev/null +++ b/packages/flow/src/hooks/useGraphRunner.ts @@ -0,0 +1,111 @@ +import { + Dependencies, + Engine, + GraphJSON, + GraphNodes, + ILifecycleEventEmitter, + NodeDefinitionsMap, + readGraphFromJSON, + ValueTypeMap +} from '@behave-graph/core'; +import { useCallback, useEffect, useState } from 'react'; + +/** Runs the behavior graph by building the execution + * engine and triggering start on the lifecycle event emitter. + */ +export const useGraphRunner = ({ + graphJson, + eventEmitter, + autoRun = false, + nodeDefinitions, + valueTypeDefinitions, + dependencies +}: { + graphJson: GraphJSON | undefined; + eventEmitter: ILifecycleEventEmitter; + autoRun?: boolean; + nodeDefinitions: NodeDefinitionsMap; + valueTypeDefinitions: ValueTypeMap; + dependencies: Dependencies | undefined; +}) => { + const [engine, setEngine] = useState(); + + const [run, setRun] = useState(autoRun); + + const play = useCallback(() => { + setRun(true); + }, []); + + const pause = useCallback(() => { + setRun(false); + }, []); + + const togglePlay = useCallback(() => { + setRun((existing) => !existing); + }, []); + + useEffect(() => { + if (!graphJson || !valueTypeDefinitions || !run || !dependencies) return; + + let graphNodes: GraphNodes; + try { + graphNodes = readGraphFromJSON({ + graphJson, + nodes: nodeDefinitions, + values: valueTypeDefinitions, + dependencies + }).nodes; + } catch (e) { + console.error(e); + return; + } + const engine = new Engine(graphNodes); + + setEngine(engine); + + return () => { + engine.dispose(); + setEngine(undefined); + }; + }, [graphJson, valueTypeDefinitions, nodeDefinitions, run, dependencies]); + + useEffect(() => { + if (!engine || !run) return; + + engine.executeAllSync(); + + let timeout: number; + + const onTick = async () => { + eventEmitter.tickEvent.emit(); + + // eslint-disable-next-line no-await-in-loop + await engine.executeAllAsync(500); + + timeout = window.setTimeout(onTick, 50); + }; + + (async () => { + if (eventEmitter.startEvent.listenerCount > 0) { + eventEmitter.startEvent.emit(); + + await engine.executeAllAsync(5); + } else { + console.log('has no listener count'); + } + onTick(); + })(); + + return () => { + window.clearTimeout(timeout); + }; + }, [engine, eventEmitter.startEvent, eventEmitter.tickEvent, run]); + + return { + engine, + playing: run, + play, + togglePlay, + pause + }; +}; diff --git a/packages/flow/src/hooks/useMergeMap.ts b/packages/flow/src/hooks/useMergeMap.ts new file mode 100644 index 00000000..e832b026 --- /dev/null +++ b/packages/flow/src/hooks/useMergeMap.ts @@ -0,0 +1,14 @@ +import { useEffect, useState } from 'react'; + +export function useMergeMap>( + mapA: TMap, + mapB: TMap +): TMap { + const [result, setResult] = useState(() => ({ ...mapA, ...mapB })); + + useEffect(() => { + setResult({ ...mapA, ...mapB }); + }, [mapA, mapB]); + + return result; +} diff --git a/packages/flow/src/hooks/useNodeSpecJson.ts b/packages/flow/src/hooks/useNodeSpecJson.ts index 94a952af..cad5edd4 100644 --- a/packages/flow/src/hooks/useNodeSpecJson.ts +++ b/packages/flow/src/hooks/useNodeSpecJson.ts @@ -1,24 +1,30 @@ import { - IRegistry, + Dependencies, + NodeDefinitionsMap, NodeSpecJSON, + ValueTypeMap, writeNodeSpecsToJSON } from '@behave-graph/core'; import { useEffect, useState } from 'react'; export const useNodeSpecJson = ({ - registry + values, + nodes, + dependencies }: { - registry: IRegistry | undefined; + values: ValueTypeMap; + nodes: NodeDefinitionsMap; + dependencies: Dependencies | undefined; }) => { const [specJson, setSpecJson] = useState(); useEffect(() => { - if (!registry) { + if (!nodes || !values || !dependencies) { setSpecJson(undefined); return; } - setSpecJson(writeNodeSpecsToJSON(registry)); - }, [registry]); + setSpecJson(writeNodeSpecsToJSON({ nodes, values, dependencies })); + }, [nodes, values, dependencies]); return specJson; }; diff --git a/packages/flow/src/hooks/useQueriableDefinitions.ts b/packages/flow/src/hooks/useQueriableDefinitions.ts new file mode 100644 index 00000000..9a54a68e --- /dev/null +++ b/packages/flow/src/hooks/useQueriableDefinitions.ts @@ -0,0 +1,22 @@ +import { IQueriableRegistry } from 'packages/core/src'; +import { useMemo } from 'react'; + +export const toQueriableDefinitions = (definitionsMap: { + [id: string]: T; +}): IQueriableRegistry => ({ + get: (id: string) => definitionsMap[id], + getAll: () => Object.values(definitionsMap), + getAllNames: () => Object.keys(definitionsMap), + contains: (id: string) => definitionsMap[id] !== undefined +}); + +export const useQueriableDefinitions = (definitionsMap: { + [id: string]: T; +}): IQueriableRegistry => { + const queriableDefinitions = useMemo( + () => toQueriableDefinitions(definitionsMap), + [definitionsMap] + ); + + return queriableDefinitions; +}; diff --git a/packages/flow/src/hooks/useRegistry.ts b/packages/flow/src/hooks/useRegistry.ts index 3baeedcb..46f210f8 100644 --- a/packages/flow/src/hooks/useRegistry.ts +++ b/packages/flow/src/hooks/useRegistry.ts @@ -1,12 +1,4 @@ -import { - DefaultLogger, - ManualLifecycleEventEmitter, - registerCoreProfile, - registerLifecycleEventEmitter, - registerLogger, - registerSceneProfile, - Registry -} from '@behave-graph/core'; +import { DefaultLogger, ManualLifecycleEventEmitter } from '@behave-graph/core'; import { useState } from 'react'; const createRegistry = () => { diff --git a/packages/flow/src/index.ts b/packages/flow/src/index.ts index 15b8416e..a49eca87 100644 --- a/packages/flow/src/index.ts +++ b/packages/flow/src/index.ts @@ -3,17 +3,27 @@ export * from './components/modals/HelpModal.js'; export * from './components/modals/LoadModal.js'; export * from './components/modals/Modal.js'; export * from './components/modals/SaveModal.js'; +export * from './components/Controls.js'; export * from './components/AutoSizeInput.js'; export * from './components/Controls.js'; export * from './components/InputSocket.js'; export * from './components/Node.js'; +export * from './components/Flow.js'; export * from './components/NodeContainer.js'; export * from './components/NodePicker.js'; export * from './components/OutputSocket.js'; export * from './hooks/useChangeNodeData.js'; export * from './hooks/useOnPressKey.js'; +export * from './hooks/useFlowHandlers.js'; +export * from './hooks/useGraphRunner.js'; +export * from './hooks/useDependencies.js'; +export * from './hooks/useBehaveGraphFlow.js'; +export * from './hooks/useNodeSpecJson.js'; +export * from './hooks/useCoreRegistry.js'; +export * from './hooks/useCustomNodeTypes.js'; +export * from './hooks/useMergeMap.js'; export * from './transformers/behaveToFlow.js'; export * from './transformers/flowToBehave.js'; @@ -21,13 +31,9 @@ export * from './transformers/flowToBehave.js'; export * from './util/autoLayout.js'; export * from './util/calculateNewEdge.js'; export * from './util/colors.js'; -export * from './util/customNodeTypes.js'; -export * from './util/getNodeSpecJSON.js'; export * from './util/getPickerFilters.js'; export * from './util/getSocketsByNodeTypeAndHandleType.js'; export * from './util/hasPositionMetaData.js'; export * from './util/isHandleConnected.js'; export * from './util/isValidConnection.js'; export * from './util/sleep.js'; - -export * from './components/Flow.js'; diff --git a/packages/flow/src/transformers/flowToBehave.test.ts b/packages/flow/src/transformers/flowToBehave.test.ts index 8ad1592d..d7e06440 100644 --- a/packages/flow/src/transformers/flowToBehave.test.ts +++ b/packages/flow/src/transformers/flowToBehave.test.ts @@ -1,4 +1,8 @@ -import { GraphJSON } from '@behave-graph/core'; +import { + getCoreRegistry, + GraphJSON, + writeNodeSpecsToJSON +} from '@behave-graph/core'; import rawFlowGraph from '../../../../graphs/react-flow/graph.json'; import { behaveToFlow } from './behaveToFlow.js'; @@ -9,6 +13,12 @@ const flowGraph = rawFlowGraph as GraphJSON; const [nodes, edges] = behaveToFlow(flowGraph); it('transforms from flow to behave', () => { - const output = flowToBehave(nodes, edges); + const { values: valueTypes, nodes: nodeDefinitions } = getCoreRegistry(); + const specJSON = writeNodeSpecsToJSON({ + values: valueTypes, + nodes: nodeDefinitions, + dependencies: {} + }); + const output = flowToBehave(nodes, edges, specJSON); expect(output).toEqual(flowGraph); }); diff --git a/packages/flow/src/transformers/flowToBehave.ts b/packages/flow/src/transformers/flowToBehave.ts index d71922b2..60ca2a76 100644 --- a/packages/flow/src/transformers/flowToBehave.ts +++ b/packages/flow/src/transformers/flowToBehave.ts @@ -1,14 +1,14 @@ -import { GraphJSON, NodeJSON } from '@behave-graph/core'; +import { GraphJSON, NodeJSON, NodeSpecJSON } from '@behave-graph/core'; import { Edge, Node } from 'reactflow'; -import { getNodeSpecJSON } from '../util/getNodeSpecJSON.js'; - -const nodeSpecJSON = getNodeSpecJSON(); - const isNullish = (value: any): value is null | undefined => value === undefined || value === null; -export const flowToBehave = (nodes: Node[], edges: Edge[]): GraphJSON => { +export const flowToBehave = ( + nodes: Node[], + edges: Edge[], + nodeSpecJSON: NodeSpecJSON[] +): GraphJSON => { const graph: GraphJSON = { nodes: [], variables: [], customEvents: [] }; nodes.forEach((node) => { diff --git a/packages/flow/src/util/calculateNewEdge.ts b/packages/flow/src/util/calculateNewEdge.ts index 6113c080..80cb71a6 100644 --- a/packages/flow/src/util/calculateNewEdge.ts +++ b/packages/flow/src/util/calculateNewEdge.ts @@ -1,16 +1,15 @@ +import { NodeSpecJSON } from '@behave-graph/core'; import { Node, OnConnectStartParams } from 'reactflow'; import { v4 as uuidv4 } from 'uuid'; -import { getNodeSpecJSON } from './getNodeSpecJSON.js'; import { getSocketsByNodeTypeAndHandleType } from './getSocketsByNodeTypeAndHandleType.js'; -const specJSON = getNodeSpecJSON(); - export const calculateNewEdge = ( originNode: Node, destinationNodeType: string, destinationNodeId: string, - connection: OnConnectStartParams + connection: OnConnectStartParams, + specJSON: NodeSpecJSON[] ) => { const sockets = getSocketsByNodeTypeAndHandleType( specJSON, diff --git a/packages/flow/src/util/colors.ts b/packages/flow/src/util/colors.ts index 7b9eb9d1..785cfb48 100644 --- a/packages/flow/src/util/colors.ts +++ b/packages/flow/src/util/colors.ts @@ -1,9 +1,18 @@ import { NodeSpecJSON } from '@behave-graph/core'; -export const colors: Record = { +export type color = + | 'red' + | 'green' + | 'lime' + | 'purple' + | 'blue' + | 'gray' + | 'white'; + +export const colors: Record = { red: ['bg-orange-700', 'border-orange-700', 'text-white'], green: ['bg-green-600', 'border-green-600', 'text-white'], - lime: ['bg-lime-500', 'border-lime-500', 'text-white'], + lime: ['bg-lime-500', 'border-lime-500', 'text-gray-900'], purple: ['bg-purple-500', 'border-purple-500', 'text-white'], blue: ['bg-cyan-600', 'border-cyan-600', 'text-white'], gray: ['bg-gray-500', 'border-gray-500', 'text-white'], @@ -19,13 +28,14 @@ export const valueTypeColorMap: Record = { string: 'purple' }; -export const categoryColorMap: Record = { +export const categoryColorMap: Record = { Event: 'red', Logic: 'green', Variable: 'purple', Query: 'purple', Action: 'blue', Flow: 'gray', + Effect: 'lime', Time: 'gray', None: 'gray' }; diff --git a/packages/flow/src/util/getPickerFilters.ts b/packages/flow/src/util/getPickerFilters.ts index 363bd314..a340bffc 100644 --- a/packages/flow/src/util/getPickerFilters.ts +++ b/packages/flow/src/util/getPickerFilters.ts @@ -1,25 +1,26 @@ +import { NodeSpecJSON } from '@behave-graph/core'; import { Node, OnConnectStartParams } from 'reactflow'; import { NodePickerFilters } from '../components/NodePicker.js'; -import { getNodeSpecJSON } from './getNodeSpecJSON.js'; import { getSocketsByNodeTypeAndHandleType } from './getSocketsByNodeTypeAndHandleType.js'; -const specJSON = getNodeSpecJSON(); - export const getNodePickerFilters = ( nodes: Node[], - params: OnConnectStartParams | undefined + params: OnConnectStartParams | undefined, + specJSON: NodeSpecJSON[] | undefined ): NodePickerFilters | undefined => { if (params === undefined) return; const originNode = nodes.find((node) => node.id === params.nodeId); if (originNode === undefined) return; - const sockets = getSocketsByNodeTypeAndHandleType( - specJSON, - originNode.type, - params.handleType - ); + const sockets = specJSON + ? getSocketsByNodeTypeAndHandleType( + specJSON, + originNode.type, + params.handleType + ) + : undefined; const socket = sockets?.find((socket) => socket.name === params.handleId); diff --git a/packages/flow/src/util/isValidConnection.ts b/packages/flow/src/util/isValidConnection.ts index 1528ad50..e84d6114 100644 --- a/packages/flow/src/util/isValidConnection.ts +++ b/packages/flow/src/util/isValidConnection.ts @@ -1,14 +1,13 @@ +import { NodeSpecJSON } from '@behave-graph/core'; import { Connection, ReactFlowInstance } from 'reactflow'; -import { getNodeSpecJSON } from './getNodeSpecJSON.js'; import { getSocketsByNodeTypeAndHandleType } from './getSocketsByNodeTypeAndHandleType.js'; import { isHandleConnected } from './isHandleConnected.js'; -const specJSON = getNodeSpecJSON(); - export const isValidConnection = ( connection: Connection, - instance: ReactFlowInstance + instance: ReactFlowInstance, + specJSON: NodeSpecJSON[] ) => { if (connection.source === null || connection.target === null) return false; diff --git a/packages/scene/package.json b/packages/scene/package.json new file mode 100644 index 00000000..eccd2c75 --- /dev/null +++ b/packages/scene/package.json @@ -0,0 +1,24 @@ +{ + "name": "@behave-graph/scene", + "version": "0.9.12", + "type": "module", + "types": "./dist/index.d.ts", + "main": "./dist/index.js", + "source": "./src/index.ts", + "scripts": { + "watch": "tsc -w", + "build": "tsc", + "test": "jest" + }, + "devDependencies": { + "@types/glob": "^8.0.0", + "@types/offscreencanvas": "^2019.7.0" + }, + "license": "ISC", + "peerDependencies": { + "@behave-graph/core": "*", + "@types/three": "0.152.1", + "three": "0.152.2", + "three-stdlib": "^2.22.4" + } +} diff --git a/packages/core/src/Profiles/Scene/Abstractions/Drivers/DummyScene.ts b/packages/scene/src/Abstractions/Drivers/DummyScene.ts similarity index 51% rename from packages/core/src/Profiles/Scene/Abstractions/Drivers/DummyScene.ts rename to packages/scene/src/Abstractions/Drivers/DummyScene.ts index e6a58450..7ea377d9 100644 --- a/packages/core/src/Profiles/Scene/Abstractions/Drivers/DummyScene.ts +++ b/packages/scene/src/Abstractions/Drivers/DummyScene.ts @@ -1,9 +1,12 @@ -import { EventEmitter } from '../../../../Events/EventEmitter.js'; -import { ValueTypeRegistry } from '../../../../Values/ValueTypeRegistry.js'; -import { BooleanValue } from '../../../Core/Values/BooleanValue.js'; -import { FloatValue } from '../../../Core/Values/FloatValue.js'; -import { IntegerValue } from '../../../Core/Values/IntegerValue.js'; -import { StringValue } from '../../../Core/Values/StringValue.js'; +import { + BooleanValue, + EventEmitter, + FloatValue, + IntegerValue, + StringValue, + ValueType +} from '@behave-graph/core'; + import { ColorValue } from '../../Values/ColorValue.js'; import { EulerValue } from '../../Values/EulerValue.js'; import { QuatValue } from '../../Values/QuatValue.js'; @@ -14,25 +17,29 @@ import { IScene } from '../IScene.js'; export class DummyScene implements IScene { public onSceneChanged = new EventEmitter(); - private valueRegistry = new ValueTypeRegistry(); + + private valueRegistry: Record; constructor() { - const values = this.valueRegistry; + this.valueRegistry = Object.fromEntries( + [ + BooleanValue, + StringValue, + IntegerValue, + FloatValue, + Vec2Value, + Vec3Value, + Vec4Value, + ColorValue, + EulerValue, + QuatValue + ].map((valueType) => [valueType.name, valueType]) + ); // pull in value type nodes - values.register(BooleanValue); - values.register(StringValue); - values.register(IntegerValue); - values.register(FloatValue); - values.register(Vec2Value); - values.register(Vec3Value); - values.register(Vec4Value); - values.register(ColorValue); - values.register(EulerValue); - values.register(QuatValue); } getProperty(jsonPath: string, valueTypeName: string): any { - return this.valueRegistry.get(valueTypeName).creator(); + return this.valueRegistry[valueTypeName]?.creator(); } setProperty(): void { this.onSceneChanged.emit(); @@ -49,4 +56,24 @@ export class DummyScene implements IScene { ): void { console.log('removed on clicked listener'); } + + getQueryableProperties() { + return []; + } + + getRaycastableProperties() { + return []; + } + + getProperties() { + return []; + } + + addOnSceneChangedListener() { + console.log('added on scene changed listener'); + } + + removeOnSceneChangedListener(): void { + console.log('removed on scene changed listener'); + } } diff --git a/packages/core/src/Profiles/Scene/Abstractions/IScene.ts b/packages/scene/src/Abstractions/IScene.ts similarity index 60% rename from packages/core/src/Profiles/Scene/Abstractions/IScene.ts rename to packages/scene/src/Abstractions/IScene.ts index ea3cdc58..7f12d7e9 100644 --- a/packages/core/src/Profiles/Scene/Abstractions/IScene.ts +++ b/packages/scene/src/Abstractions/IScene.ts @@ -1,3 +1,5 @@ +import { Choices } from '@behave-graph/core'; + export interface IScene { getProperty(jsonPath: string, valueTypeName: string): any; setProperty(jsonPath: string, valueTypeName: string, value: any): void; @@ -9,4 +11,8 @@ export interface IScene { jsonPath: string, callback: (jsonPath: string) => void ): void; + getRaycastableProperties: () => Choices; + getProperties: () => Choices; + addOnSceneChangedListener(listener: () => void): void; + removeOnSceneChangedListener(listener: () => void): void; } diff --git a/packages/scene/src/GLTFJson.ts b/packages/scene/src/GLTFJson.ts new file mode 100644 index 00000000..4278e3cd --- /dev/null +++ b/packages/scene/src/GLTFJson.ts @@ -0,0 +1,34 @@ +export type GLTFAssetJson = { + generator: string; + version: string; +}; + +export type GLTFSceneJson = { + name: string; + nodes: number[]; +}; + +export type GLTFNodeJson = { + name?: string; + mesh?: number; + translation?: number[]; + children?: number[]; +}; + +export type GLTFMaterialJson = { + name?: string; + doubleSided?: boolean; +}; + +export type GLTFMeshJson = { + name?: string; +}; + +export type GLTFJson = { + asset: GLTFAssetJson; + scene: number; + scenes: GLTFSceneJson[]; + nodes: GLTFNodeJson[]; + materials: GLTFMaterialJson[]; + meshes: GLTFMeshJson[]; +}; diff --git a/packages/core/src/Profiles/Scene/Actions/EaseSceneProperty.ts b/packages/scene/src/Nodes/Actions/EaseSceneProperty.ts similarity index 84% rename from packages/core/src/Profiles/Scene/Actions/EaseSceneProperty.ts rename to packages/scene/src/Nodes/Actions/EaseSceneProperty.ts index 1ed0bede..2ea71c7b 100644 --- a/packages/core/src/Profiles/Scene/Actions/EaseSceneProperty.ts +++ b/packages/scene/src/Nodes/Actions/EaseSceneProperty.ts @@ -1,12 +1,17 @@ -import { Easing, EasingFunctions, EasingModes } from '../../../Easing.js'; -import { Engine } from '../../../Execution/Engine.js'; -import { IGraphApi } from '../../../Graphs/Graph.js'; -import { AsyncNode } from '../../../Nodes/AsyncNode.js'; -import { NodeDescription } from '../../../Nodes/Registry/NodeDescription.js'; -import { Socket } from '../../../Sockets/Socket.js'; -import { toCamelCase } from '../../../toCamelCase.js'; -import { ILifecycleEventEmitter } from '../../Core/Abstractions/ILifecycleEventEmitter.js'; -import { IScene } from '../Abstractions/IScene.js'; +import { + AsyncNode, + Easing, + EasingFunctions, + EasingModes, + Engine, + IGraphApi, + ILifecycleEventEmitter, + NodeDescription, + Socket, + toCamelCase +} from '@behave-graph/core'; + +import { IScene } from '../../Abstractions/IScene.js'; export class EaseSceneProperty extends AsyncNode { public static GetDescriptions( @@ -106,7 +111,7 @@ export class EaseSceneProperty extends AsyncNode { this.easing = easingMode(easingFunction); const updateOnTick = () => { - const valueType = this.graph.values.get(this.valueTypeName); + const valueType = this.graph.values[this.valueTypeName]; this.elapsedDuration = (Date.now() - this.startTime) / 1000; const t = Math.min(this.elapsedDuration / this.duration, 1); diff --git a/packages/scene/src/Nodes/Actions/SetSceneProperty.ts b/packages/scene/src/Nodes/Actions/SetSceneProperty.ts new file mode 100644 index 00000000..adfc4aec --- /dev/null +++ b/packages/scene/src/Nodes/Actions/SetSceneProperty.ts @@ -0,0 +1,33 @@ +import { makeFlowNodeDefinition, NodeCategory } from '@behave-graph/core'; + +import { getSceneDependency } from '../../dependencies.js'; + +export const SetSceneProperty = (valueTypeNames: string[]) => + valueTypeNames.map((valueTypeName) => + makeFlowNodeDefinition({ + typeName: `scene/set/${valueTypeName}`, + category: NodeCategory.Effect, + label: `Set Scene ${valueTypeName}`, + in: { + jsonPath: (_, graphApi) => { + const scene = getSceneDependency(graphApi.getDependency); + + return { + valueType: 'string', + choices: scene?.getProperties() + }; + }, + value: valueTypeName, + flow: 'flow' + }, + out: { + flow: 'flow' + }, + initialState: undefined, + triggered: ({ commit, read, graph: { getDependency } }) => { + const scene = getSceneDependency(getDependency); + scene?.setProperty(read('jsonPath'), valueTypeName, read('value')); + commit('flow'); + } + }) + ); diff --git a/packages/core/src/Profiles/Scene/Events/OnSceneNodeClick.ts b/packages/scene/src/Nodes/Events/OnSceneNodeClick.ts similarity index 64% rename from packages/core/src/Profiles/Scene/Events/OnSceneNodeClick.ts rename to packages/scene/src/Nodes/Events/OnSceneNodeClick.ts index 73d69d85..7b35df7b 100644 --- a/packages/core/src/Profiles/Scene/Events/OnSceneNodeClick.ts +++ b/packages/scene/src/Nodes/Events/OnSceneNodeClick.ts @@ -1,9 +1,11 @@ -import { Assert } from '../../../Diagnostics/Assert.js'; import { + Assert, makeEventNodeDefinition, NodeCategory -} from '../../../Nodes/NodeDefinitions.js'; -import { IScene } from '../Abstractions/IScene.js'; +} from '@behave-graph/core'; + +import { IScene } from '../../Abstractions/IScene.js'; +import { getSceneDependency } from '../../dependencies.js'; type State = { jsonPath?: string | undefined; @@ -16,8 +18,16 @@ const initialState = (): State => ({}); export const OnSceneNodeClick = makeEventNodeDefinition({ typeName: 'scene/nodeClick', category: NodeCategory.Event, + label: 'On Scene Node Click', in: { - jsonPath: 'string' + jsonPath: (_, graphApi) => { + const scene = getSceneDependency(graphApi.getDependency); + + return { + valueType: 'string', + choices: scene?.getRaycastableProperties() + }; + } }, out: { flow: 'flow' @@ -30,8 +40,8 @@ export const OnSceneNodeClick = makeEventNodeDefinition({ const jsonPath = read('jsonPath'); - const scene = getDependency('scene'); - scene.addOnClickedListener(jsonPath, handleNodeClick); + const scene = getSceneDependency(getDependency); + scene?.addOnClickedListener(jsonPath, handleNodeClick); const state: State = { handleNodeClick, @@ -50,7 +60,7 @@ export const OnSceneNodeClick = makeEventNodeDefinition({ if (!jsonPath || !handleNodeClick) return {}; const scene = getDependency('scene'); - scene.removeOnClickedListener(jsonPath, handleNodeClick); + scene?.removeOnClickedListener(jsonPath, handleNodeClick); return {}; } diff --git a/packages/core/src/Profiles/Scene/Values/ColorNodes.ts b/packages/scene/src/Nodes/Logic/ColorNodes.ts similarity index 95% rename from packages/core/src/Profiles/Scene/Values/ColorNodes.ts rename to packages/scene/src/Nodes/Logic/ColorNodes.ts index 0067de09..43599138 100644 --- a/packages/core/src/Profiles/Scene/Values/ColorNodes.ts +++ b/packages/scene/src/Nodes/Logic/ColorNodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { hexToRGB, hslToRGB, @@ -11,7 +12,7 @@ import { vec3MultiplyByScalar, vec3Negate, vec3Subtract -} from './Internal/Vec3.js'; +} from '../../Values/Internal/Vec3.js'; export const Constant = makeInNOutFunctionDesc({ name: 'math/color', diff --git a/packages/core/src/Profiles/Scene/Values/EulerNodes.ts b/packages/scene/src/Nodes/Logic/EulerNodes.ts similarity index 95% rename from packages/core/src/Profiles/Scene/Values/EulerNodes.ts rename to packages/scene/src/Nodes/Logic/EulerNodes.ts index 33f6e5e2..c12ed5ce 100644 --- a/packages/core/src/Profiles/Scene/Values/EulerNodes.ts +++ b/packages/scene/src/Nodes/Logic/EulerNodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { mat3ToEuler, mat4ToEuler, @@ -10,7 +11,7 @@ import { vec3MultiplyByScalar, vec3Negate, vec3Subtract -} from './Internal/Vec3.js'; +} from '../../Values/Internal/Vec3.js'; export const Constant = makeInNOutFunctionDesc({ name: 'math/euler', diff --git a/packages/core/src/Profiles/Scene/Values/Mat3Nodes.ts b/packages/scene/src/Nodes/Logic/Mat3Nodes.ts similarity index 97% rename from packages/core/src/Profiles/Scene/Values/Mat3Nodes.ts rename to packages/scene/src/Nodes/Logic/Mat3Nodes.ts index ee007a2b..f817ee28 100644 --- a/packages/core/src/Profiles/Scene/Values/Mat3Nodes.ts +++ b/packages/scene/src/Nodes/Logic/Mat3Nodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { column3ToMat3, eulerToMat3, @@ -20,7 +21,7 @@ import { mat4ToMat3, scale2ToMat3, translation2ToMat3 -} from './Internal/Mat3.js'; +} from '../../Values/Internal/Mat3.js'; export const Constant = makeInNOutFunctionDesc({ name: 'math/mat3', diff --git a/packages/core/src/Profiles/Scene/Values/Mat4Nodes.ts b/packages/scene/src/Nodes/Logic/Mat4Nodes.ts similarity index 98% rename from packages/core/src/Profiles/Scene/Values/Mat4Nodes.ts rename to packages/scene/src/Nodes/Logic/Mat4Nodes.ts index 2ed6efd7..78002010 100644 --- a/packages/core/src/Profiles/Scene/Values/Mat4Nodes.ts +++ b/packages/scene/src/Nodes/Logic/Mat4Nodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { column4ToMat4, eulerToMat4, @@ -27,7 +28,7 @@ import { quatToMat4, scale3ToMat4, translation3ToMat4 -} from './Internal/Mat4.js'; +} from '../../Values/Internal/Mat4.js'; export const Constant = makeInNOutFunctionDesc({ name: 'math/mat4', diff --git a/packages/core/src/Profiles/Scene/Values/QuatNodes.ts b/packages/scene/src/Nodes/Logic/QuatNodes.ts similarity index 97% rename from packages/core/src/Profiles/Scene/Values/QuatNodes.ts rename to packages/scene/src/Nodes/Logic/QuatNodes.ts index 769be11c..3a8ae329 100644 --- a/packages/core/src/Profiles/Scene/Values/QuatNodes.ts +++ b/packages/scene/src/Nodes/Logic/QuatNodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { angleAxisToQuat, eulerToQuat, @@ -17,7 +18,7 @@ import { vec4MultiplyByScalar, vec4Normalize, vec4ToArray -} from './Internal/Vec4.js'; +} from '../../Values/Internal/Vec4.js'; /* - from Angle Axis diff --git a/packages/core/src/Profiles/Scene/Values/Vec2Nodes.ts b/packages/scene/src/Nodes/Logic/Vec2Nodes.ts similarity index 95% rename from packages/core/src/Profiles/Scene/Values/Vec2Nodes.ts rename to packages/scene/src/Nodes/Logic/Vec2Nodes.ts index b1e817a1..10ed283c 100644 --- a/packages/core/src/Profiles/Scene/Values/Vec2Nodes.ts +++ b/packages/scene/src/Nodes/Logic/Vec2Nodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { Vec2, vec2Add, @@ -11,7 +12,7 @@ import { vec2Normalize, vec2Subtract, vec2ToArray -} from './Internal/Vec2.js'; +} from '../../Values/Internal/Vec2.js'; export const Constant = makeInNOutFunctionDesc({ name: 'math/vec2', diff --git a/packages/core/src/Profiles/Scene/Values/Vec3Nodes.ts b/packages/scene/src/Nodes/Logic/Vec3Nodes.ts similarity index 95% rename from packages/core/src/Profiles/Scene/Values/Vec3Nodes.ts rename to packages/scene/src/Nodes/Logic/Vec3Nodes.ts index 291a0246..a3413b51 100644 --- a/packages/core/src/Profiles/Scene/Values/Vec3Nodes.ts +++ b/packages/scene/src/Nodes/Logic/Vec3Nodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { Vec3, vec3Add, @@ -11,7 +12,7 @@ import { vec3Negate, vec3Normalize, vec3Subtract -} from './Internal/Vec3.js'; +} from '../../Values/Internal/Vec3.js'; export const Constant = makeInNOutFunctionDesc({ name: 'math/vec3', diff --git a/packages/core/src/Profiles/Scene/Values/Vec4Nodes.ts b/packages/scene/src/Nodes/Logic/Vec4Nodes.ts similarity index 95% rename from packages/core/src/Profiles/Scene/Values/Vec4Nodes.ts rename to packages/scene/src/Nodes/Logic/Vec4Nodes.ts index afce8db5..4245c353 100644 --- a/packages/core/src/Profiles/Scene/Values/Vec4Nodes.ts +++ b/packages/scene/src/Nodes/Logic/Vec4Nodes.ts @@ -1,4 +1,5 @@ -import { makeInNOutFunctionDesc } from '../../../Nodes/FunctionNode.js'; +import { makeInNOutFunctionDesc } from '@behave-graph/core'; + import { Vec4, vec4Add, @@ -10,7 +11,7 @@ import { vec4Negate, vec4Normalize, vec4Subtract -} from './Internal/Vec4.js'; +} from '../../Values/Internal/Vec4.js'; export const Constant = makeInNOutFunctionDesc({ name: 'math/vec4', diff --git a/packages/core/src/Profiles/Scene/Logic/VecElements.ts b/packages/scene/src/Nodes/Logic/VecElements.ts similarity index 75% rename from packages/core/src/Profiles/Scene/Logic/VecElements.ts rename to packages/scene/src/Nodes/Logic/VecElements.ts index 91bf8c33..605c649f 100644 --- a/packages/core/src/Profiles/Scene/Logic/VecElements.ts +++ b/packages/scene/src/Nodes/Logic/VecElements.ts @@ -1,7 +1,9 @@ -import { IGraphApi } from '../../../Graphs/Graph.js'; -import { FunctionNode } from '../../../Nodes/FunctionNode.js'; -import { NodeDescription } from '../../../Nodes/Registry/NodeDescription.js'; -import { Socket } from '../../../Sockets/Socket.js'; +import { + FunctionNode, + IGraphApi, + NodeDescription, + Socket +} from '@behave-graph/core'; export class VecElements extends FunctionNode { constructor( diff --git a/packages/scene/src/Nodes/Queries/GetSceneProperty.ts b/packages/scene/src/Nodes/Queries/GetSceneProperty.ts new file mode 100644 index 00000000..0509a386 --- /dev/null +++ b/packages/scene/src/Nodes/Queries/GetSceneProperty.ts @@ -0,0 +1,33 @@ +import { makeFunctionNodeDefinition, NodeCategory } from '@behave-graph/core'; + +import { getSceneDependency } from '../../dependencies.js'; + +export const GetSceneProperty = (valueTypeNames: string[]) => + valueTypeNames.map((valueTypeName) => + makeFunctionNodeDefinition({ + typeName: `scene/get/${valueTypeName}`, + category: NodeCategory.Query, + label: `Scene set ${valueTypeName}`, + in: { + jsonPath: (_, graphApi) => { + const scene = getSceneDependency(graphApi.getDependency); + + return { + valueType: 'string', + choices: scene.getProperties() + }; + } + }, + out: { + value: valueTypeName + }, + exec: ({ graph: { getDependency }, read, write }) => { + const scene = getSceneDependency(getDependency); + const propertyValue = scene.getProperty( + read('jsonPath'), + valueTypeName + ); + write('value', propertyValue); + } + }) + ); diff --git a/packages/core/src/Profiles/Scene/Values/ColorValue.ts b/packages/scene/src/Values/ColorValue.ts similarity index 90% rename from packages/core/src/Profiles/Scene/Values/ColorValue.ts rename to packages/scene/src/Values/ColorValue.ts index 7797b2ce..eb841e31 100644 --- a/packages/core/src/Profiles/Scene/Values/ColorValue.ts +++ b/packages/scene/src/Values/ColorValue.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { Vec3, vec3Equals, diff --git a/packages/core/src/Profiles/Scene/Values/EulerValue.ts b/packages/scene/src/Values/EulerValue.ts similarity index 90% rename from packages/core/src/Profiles/Scene/Values/EulerValue.ts rename to packages/scene/src/Values/EulerValue.ts index 250b92e8..93e0a3c0 100644 --- a/packages/core/src/Profiles/Scene/Values/EulerValue.ts +++ b/packages/scene/src/Values/EulerValue.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { Vec3, vec3Equals, diff --git a/packages/scene/src/Values/Internal/Mat2.ts b/packages/scene/src/Values/Internal/Mat2.ts new file mode 100644 index 00000000..b79f6ff7 --- /dev/null +++ b/packages/scene/src/Values/Internal/Mat2.ts @@ -0,0 +1,211 @@ +import { + EPSILON, + equalsTolerance, + parseSafeFloats, + toSafeString +} from '@behave-graph/core'; + +import { Mat3 } from './Mat3.js'; +import { Mat4 } from './Mat4.js'; +import { Vec2 } from './Vec2.js'; + +// uses OpenGL matrix layout where each column is specified subsequently in order from left to right. +// ( x, y ) x [ 0 2 ] = ( x', y' ) +// [ 1 3 ] + +const NUM_ROWS = 2; +const NUM_COLUMNS = 2; +const NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS; + +export type Mat2JSON = number[]; + +export class Mat2 { + constructor(public elements: number[] = [1, 0, 0, 1]) { + if (elements.length !== NUM_ELEMENTS) { + throw new Error( + `elements must have length ${NUM_ELEMENTS}, got ${elements.length}` + ); + } + } + + clone(result = new Mat2()): Mat2 { + return result.set(this.elements); + } + set(elements: number[]): this { + if (elements.length !== NUM_ELEMENTS) { + throw new Error( + `elements must have length ${NUM_ELEMENTS}, got ${elements.length}` + ); + } + for (let i = 0; i < NUM_ELEMENTS; i++) { + this.elements[i] = elements[i]; + } + return this; + } +} + +export function mat2SetColumn3( + m: Mat2, + columnIndex: number, + column: Vec2, + result = new Mat2() +): Mat2 { + const re = result.set(m.elements).elements; + const base = columnIndex * NUM_ROWS; + re[base + 0] = column.x; + re[base + 1] = column.y; + return result; +} + +export function mat2SetRow3( + m: Mat2, + rowIndex: number, + row: Vec2, + result = new Mat2() +): Mat2 { + const re = result.set(m.elements).elements; + re[rowIndex + NUM_COLUMNS * 0] = row.x; + re[rowIndex + NUM_COLUMNS * 1] = row.y; + return result; +} + +export function column3ToMat2( + a: Vec2, + b: Vec2, + c: Vec2, + result = new Mat2() +): Mat2 { + const re = result.elements; + const columns = [a, b, c]; + for (let c = 0; c < columns.length; c++) { + const base = c * NUM_ROWS; + const column = columns[c]; + re[base + 0] = column.x; + re[base + 1] = column.y; + } + return result; +} + +export function mat2Equals(a: Mat2, b: Mat2, tolerance = EPSILON): boolean { + for (let i = 0; i < NUM_ELEMENTS; i++) { + if (!equalsTolerance(a.elements[i], b.elements[i], tolerance)) return false; + } + return true; +} +export function mat2Add(a: Mat2, b: Mat2, result: Mat2 = new Mat2()): Mat2 { + for (let i = 0; i < NUM_ELEMENTS; i++) { + result.elements[i] = a.elements[i] + b.elements[i]; + } + return result; +} +export function mat2Subtract( + a: Mat2, + b: Mat2, + result: Mat2 = new Mat2() +): Mat2 { + for (let i = 0; i < NUM_ELEMENTS; i++) { + result.elements[i] = a.elements[i] - b.elements[i]; + } + return result; +} +export function mat2MultiplyByScalar( + a: Mat2, + b: number, + result: Mat2 = new Mat2() +): Mat2 { + for (let i = 0; i < NUM_ELEMENTS; i++) { + result.elements[i] = a.elements[i] * b; + } + return result; +} +export function mat2Negate(a: Mat2, result: Mat2 = new Mat2()): Mat2 { + for (let i = 0; i < NUM_ELEMENTS; i++) { + result.elements[i] = -a.elements[i]; + } + return result; +} + +export function mat2Multiply(a: Mat2, b: Mat2, result = new Mat2()): Mat2 { + throw new Error('not implemented'); +} + +export function mat2Determinant(m: Mat2): number { + throw new Error('not implemented'); +} + +export function mat2Transpose(m: Mat2, result = new Mat2()): Mat2 { + const me = m.elements; + const te = result.elements; + + te[0] = me[0]; + te[1] = me[2]; + te[2] = me[1]; + te[3] = me[3]; + + return result; +} + +export function mat2Inverse(m: Mat2, result = new Mat2()): Mat2 { + throw new Error('not implemented'); +} + +export function mat2Mix( + a: Mat2, + b: Mat2, + t: number, + result = new Mat2() +): Mat2 { + const s = 1 - t; + for (let i = 0; i < NUM_ELEMENTS; i++) { + result.elements[i] = a.elements[i] * s + b.elements[i] * t; + } + return result; +} +export function mat2FromArray( + array: Float32Array | number[], + offset = 0, + result: Mat2 = new Mat2() +): Mat2 { + for (let i = 0; i < NUM_ELEMENTS; i++) { + result.elements[i] = array[offset + i]; + } + return result; +} +export function mat2ToArray( + a: Mat2, + array: Float32Array | number[], + offset = 0 +): void { + for (let i = 0; i < NUM_ELEMENTS; i++) { + array[offset + i] = a.elements[i]; + } +} + +export function mat2ToString(a: Mat2): string { + return toSafeString(a.elements); +} +export function mat2Parse(text: string, result = new Mat2()): Mat2 { + return mat2FromArray(parseSafeFloats(text), 0, result); +} + +export function scale2ToMat2(s: Vec2, result = new Mat2()): Mat2 { + return result.set([s.x, 0, 0, s.y]); +} +// from gl-matrix +export function mat2ToScale2(m: Mat4, result = new Vec2()): Vec2 { + const mat = m.elements; + const m11 = mat[0]; + const m12 = mat[1]; + const m21 = mat[2]; + const m22 = mat[3]; + + return result.set( + Math.sqrt(m11 * m11 + m12 * m12), + Math.sqrt(m21 * m21 + m22 * m22) + ); +} + +export function mat3ToMat2(a: Mat3, result = new Mat2()): Mat2 { + const ae = a.elements; + return result.set([ae[0], ae[1], ae[3], ae[4]]); +} diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Mat3.ts b/packages/scene/src/Values/Internal/Mat3.ts similarity index 98% rename from packages/core/src/Profiles/Scene/Values/Internal/Mat3.ts rename to packages/scene/src/Values/Internal/Mat3.ts index bff38cfb..e16fa62d 100644 --- a/packages/core/src/Profiles/Scene/Values/Internal/Mat3.ts +++ b/packages/scene/src/Values/Internal/Mat3.ts @@ -1,8 +1,10 @@ -import { parseSafeFloats, toSafeString } from '../../../../parseFloats.js'; import { EPSILON, - equalsTolerance -} from '../../../Core/Values/Internal/Common.js'; + equalsTolerance, + parseSafeFloats, + toSafeString +} from '@behave-graph/core'; + import { Mat4 } from './Mat4.js'; import { Vec2 } from './Vec2.js'; import { Vec3 } from './Vec3.js'; diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Mat4.ts b/packages/scene/src/Values/Internal/Mat4.ts similarity index 99% rename from packages/core/src/Profiles/Scene/Values/Internal/Mat4.ts rename to packages/scene/src/Values/Internal/Mat4.ts index ce38732e..76d0458b 100644 --- a/packages/core/src/Profiles/Scene/Values/Internal/Mat4.ts +++ b/packages/scene/src/Values/Internal/Mat4.ts @@ -1,8 +1,10 @@ -import { parseSafeFloats, toSafeString } from '../../../../parseFloats.js'; import { EPSILON, - equalsTolerance -} from '../../../Core/Values/Internal/Common.js'; + equalsTolerance, + parseSafeFloats, + toSafeString +} from '@behave-graph/core'; + import { eulerToMat3, Mat3, quatToMat3 } from './Mat3.js'; import { Vec2 } from './Vec2.js'; import { diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Vec2.test.ts b/packages/scene/src/Values/Internal/Vec2.test.ts similarity index 100% rename from packages/core/src/Profiles/Scene/Values/Internal/Vec2.test.ts rename to packages/scene/src/Values/Internal/Vec2.test.ts diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Vec2.ts b/packages/scene/src/Values/Internal/Vec2.ts similarity index 93% rename from packages/core/src/Profiles/Scene/Values/Internal/Vec2.ts rename to packages/scene/src/Values/Internal/Vec2.ts index 4388fa7a..a209f0da 100644 --- a/packages/core/src/Profiles/Scene/Values/Internal/Vec2.ts +++ b/packages/scene/src/Values/Internal/Vec2.ts @@ -1,8 +1,9 @@ -import { parseSafeFloats, toSafeString } from '../../../../parseFloats.js'; import { EPSILON, - equalsTolerance -} from '../../../Core/Values/Internal/Common.js'; + equalsTolerance, + parseSafeFloats, + toSafeString +} from '@behave-graph/core'; export type Vec2JSON = number[]; diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Vec3.test.ts b/packages/scene/src/Values/Internal/Vec3.test.ts similarity index 100% rename from packages/core/src/Profiles/Scene/Values/Internal/Vec3.test.ts rename to packages/scene/src/Values/Internal/Vec3.test.ts diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Vec3.ts b/packages/scene/src/Values/Internal/Vec3.ts similarity index 97% rename from packages/core/src/Profiles/Scene/Values/Internal/Vec3.ts rename to packages/scene/src/Values/Internal/Vec3.ts index 3f519f12..afb0d3e1 100644 --- a/packages/core/src/Profiles/Scene/Values/Internal/Vec3.ts +++ b/packages/scene/src/Values/Internal/Vec3.ts @@ -1,9 +1,11 @@ -import { parseSafeFloats, toSafeString } from '../../../../parseFloats.js'; import { clamp, EPSILON, - equalsTolerance -} from '../../../Core/Values/Internal/Common.js'; + equalsTolerance, + parseSafeFloats, + toSafeString +} from '@behave-graph/core'; + import { Mat3, mat4ToMat3, quatToMat3 } from './Mat3.js'; import { Mat4 } from './Mat4.js'; import { Vec4 } from './Vec4.js'; diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Vec4.test.ts b/packages/scene/src/Values/Internal/Vec4.test.ts similarity index 100% rename from packages/core/src/Profiles/Scene/Values/Internal/Vec4.test.ts rename to packages/scene/src/Values/Internal/Vec4.test.ts diff --git a/packages/core/src/Profiles/Scene/Values/Internal/Vec4.ts b/packages/scene/src/Values/Internal/Vec4.ts similarity index 98% rename from packages/core/src/Profiles/Scene/Values/Internal/Vec4.ts rename to packages/scene/src/Values/Internal/Vec4.ts index a5538804..9f1cbc20 100644 --- a/packages/core/src/Profiles/Scene/Values/Internal/Vec4.ts +++ b/packages/scene/src/Values/Internal/Vec4.ts @@ -1,8 +1,10 @@ -import { parseSafeFloats, toSafeString } from '../../../../parseFloats.js'; import { EPSILON, - equalsTolerance -} from '../../../Core/Values/Internal/Common.js'; + equalsTolerance, + parseSafeFloats, + toSafeString +} from '@behave-graph/core'; + import { Mat3, mat4ToMat3 } from './Mat3.js'; import { Mat4 } from './Mat4.js'; import { Vec3 } from './Vec3.js'; diff --git a/packages/core/src/Profiles/Scene/Values/Mat3Value.ts b/packages/scene/src/Values/Mat3Value.ts similarity index 89% rename from packages/core/src/Profiles/Scene/Values/Mat3Value.ts rename to packages/scene/src/Values/Mat3Value.ts index 07b8fb4b..1e16262b 100644 --- a/packages/core/src/Profiles/Scene/Values/Mat3Value.ts +++ b/packages/scene/src/Values/Mat3Value.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { Mat3, mat3Equals, diff --git a/packages/core/src/Profiles/Scene/Values/Mat4Value.ts b/packages/scene/src/Values/Mat4Value.ts similarity index 89% rename from packages/core/src/Profiles/Scene/Values/Mat4Value.ts rename to packages/scene/src/Values/Mat4Value.ts index 3f6aaaf0..05547b20 100644 --- a/packages/core/src/Profiles/Scene/Values/Mat4Value.ts +++ b/packages/scene/src/Values/Mat4Value.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { Mat4, mat4Equals, diff --git a/packages/core/src/Profiles/Scene/Values/QuatValue.ts b/packages/scene/src/Values/QuatValue.ts similarity index 90% rename from packages/core/src/Profiles/Scene/Values/QuatValue.ts rename to packages/scene/src/Values/QuatValue.ts index b269aa55..f8598930 100644 --- a/packages/core/src/Profiles/Scene/Values/QuatValue.ts +++ b/packages/scene/src/Values/QuatValue.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { quatSlerp, Vec4, diff --git a/packages/core/src/Profiles/Scene/Values/Vec2Value.ts b/packages/scene/src/Values/Vec2Value.ts similarity index 89% rename from packages/core/src/Profiles/Scene/Values/Vec2Value.ts rename to packages/scene/src/Values/Vec2Value.ts index b7393c78..c0acdb1d 100644 --- a/packages/core/src/Profiles/Scene/Values/Vec2Value.ts +++ b/packages/scene/src/Values/Vec2Value.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { Vec2, Vec2JSON, vec2Mix, vec2Parse } from './Internal/Vec2.js'; export const Vec2Value: ValueType = { diff --git a/packages/core/src/Profiles/Scene/Values/Vec3Value.ts b/packages/scene/src/Values/Vec3Value.ts similarity index 90% rename from packages/core/src/Profiles/Scene/Values/Vec3Value.ts rename to packages/scene/src/Values/Vec3Value.ts index ab3eca32..8ee8a4c0 100644 --- a/packages/core/src/Profiles/Scene/Values/Vec3Value.ts +++ b/packages/scene/src/Values/Vec3Value.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { Vec3, vec3Equals, diff --git a/packages/core/src/Profiles/Scene/Values/Vec4Value.ts b/packages/scene/src/Values/Vec4Value.ts similarity index 90% rename from packages/core/src/Profiles/Scene/Values/Vec4Value.ts rename to packages/scene/src/Values/Vec4Value.ts index 240bfa5e..c713f862 100644 --- a/packages/core/src/Profiles/Scene/Values/Vec4Value.ts +++ b/packages/scene/src/Values/Vec4Value.ts @@ -1,4 +1,5 @@ -import { ValueType } from '../../../Values/ValueType.js'; +import { ValueType } from '@behave-graph/core'; + import { Vec4, vec4Equals, @@ -6,7 +7,6 @@ import { vec4Mix, vec4Parse } from './Internal/Vec4.js'; - export const Vec4Value: ValueType = { name: 'vec4', creator: () => new Vec4(), diff --git a/packages/scene/src/buildScene.ts b/packages/scene/src/buildScene.ts new file mode 100644 index 00000000..ace1db37 --- /dev/null +++ b/packages/scene/src/buildScene.ts @@ -0,0 +1,477 @@ +import { Choices, EventEmitter } from '@behave-graph/core'; +import { + Event, + Material, + MeshBasicMaterial, + Object3D, + Quaternion, + Vector3, + Vector4 +} from 'three'; +import { GLTF } from 'three-stdlib'; + +import { IScene } from './Abstractions/IScene.js'; +import { GLTFJson } from './GLTFJson.js'; +import { Vec3 } from './Values/Internal/Vec3.js'; +import { Vec4 } from './Values/Internal/Vec4.js'; + +enum Resource { + nodes = 'nodes', + materials = 'materials', + animations = 'animations' +} + +function toVec3(value: Vector3): Vec3 { + return new Vec3(value.x, value.y, value.z); +} +function toVec4(value: Vector4 | Quaternion): Vec4 { + return new Vec4(value.x, value.y, value.z, value.w); +} + +export declare type ObjectMap = { + nodes: { + [name: string]: Object3D; + }; + materials: { + [name: string]: Material; + }; +}; + +const shortPathRegEx = /^\/?(?[^/]+)\/(?\d+)$/; +const jsonPathRegEx = + /^\/?(?[^/]+)\/(?\d+)\/(?[^/]+)$/; + +export type Optional = { + [K in keyof T]: T[K] | undefined; +}; + +export type Path = { + resource: Resource; + index: number; + property: string; +}; + +export function toJsonPathString( + { index, property, resource: resourceType }: Optional, + short: boolean +) { + if (short) { + if (!resourceType || typeof index === undefined) return; + return `${resourceType}/${index}`; + } else { + if (!resourceType || typeof index === undefined || !property) return; + return `${resourceType}/${index}/${property}`; + } +} + +export function parseJsonPath(jsonPath: string, short = false): Path { + // hack = for now we see if there are 2 segments to know if its short + const regex = short ? shortPathRegEx : jsonPathRegEx; + const matches = regex.exec(jsonPath); + if (matches === null) throw new Error(`can not parse jsonPath: ${jsonPath}`); + if (matches.groups === undefined) + throw new Error(`can not parse jsonPath (no groups): ${jsonPath}`); + return { + resource: matches.groups.resource as Resource, + index: +matches.groups.index, + property: matches.groups.property + }; +} + +export function applyPropertyToModel( + { resource, index, property }: Path, + gltf: GLTF & ObjectMap, + value: any, + properties: Properties, + setActiveAnimations: + | ((animation: string, active: boolean) => void) + | undefined +) { + const nodeName = getResourceName({ resource, index }, properties); + if (!nodeName) throw new Error(`could not get node at index ${index}`); + if (resource === Resource.nodes) { + const node = gltf.nodes[nodeName] as unknown as Object3D | undefined; + + if (!node) { + console.error(`no node at path ${nodeName}`); + return; + } + + applyNodeModifier(property, node, value); + + return; + } + if (resource === Resource.materials) { + const node = gltf.materials[nodeName] as unknown as Material | undefined; + + if (!node) { + console.error(`no node at path ${nodeName}`); + return; + } + + applyMaterialModifier(property, node, value); + + return; + } + + if (resource === Resource.animations) { + if (!setActiveAnimations) { + console.error( + 'cannot apply animation property without setActiveAnimations' + ); + return; + } + + setActiveAnimations(nodeName, value as boolean); + return; + } + + console.error(`unknown resource type ${resource}`); +} + +const getResourceName = ( + { resource, index }: Pick, + properties: Properties +) => { + return properties[resource]?.options[index].name; +}; + +const getPropertyFromModel = ( + { resource, index, property }: Path, + gltf: GLTF & ObjectMap, + properties: Properties +) => { + if (resource === Resource.nodes) { + const nodeName = getResourceName({ resource, index }, properties); + if (!nodeName) throw new Error(`could not get node at index ${index}`); + const node = gltf.nodes[nodeName] as unknown as Object3D | undefined; + + if (!node) { + console.error(`no node at path ${nodeName}`); + return; + } + + getPropertyValue(property, node); + + return; + } +}; + +function applyNodeModifier(property: string, objectRef: Object3D, value: any) { + switch (property) { + case 'visible': { + objectRef.visible = value as boolean; + break; + } + case 'translation': { + const v = value as Vec3; + objectRef.position.set(v.x, v.y, v.z); + break; + } + case 'scale': { + const v = value as Vec3; + console.log(v.x); + objectRef.scale.set(v.x, v.y, v.z); + break; + } + case 'rotation': { + const v = value as Vec4; + objectRef.quaternion.set(v.x, v.y, v.z, v.w); + break; + } + } +} + +function applyMaterialModifier( + property: string, + materialRef: Material, + value: any +) { + switch (property) { + case 'color': { + const basic = materialRef as MeshBasicMaterial; + + if (basic.color) { + const v = value as Vec3; + basic.color.setRGB(v.x, v.y, v.z); + basic.needsUpdate = true; + } + break; + } + } +} + +function getPropertyValue(property: string, objectRef: Object3D) { + switch (property) { + case 'visible': { + return objectRef.visible; + } + case 'translation': { + return toVec3(objectRef.position); + } + case 'scale': { + return toVec3(objectRef.scale); + } + case 'rotation': { + return toVec4(objectRef.quaternion); + } + default: + throw new Error(`unrecognized property: ${property}`); + } +} + +export type ResourceOption = { + name: string; + index: number; +}; + +export type ResourceProperties = { + options: ResourceOption[]; + properties: string[]; +}; + +type Properties = { + [key in Resource]?: ResourceProperties; +}; + +export type ParsableScene = GLTF & + ObjectMap & { + json?: GLTFJson; + }; + +export const extractProperties = (gltf: ParsableScene): Properties => { + const nodeProperties = [ + 'visible', + 'translation', + 'scale', + 'rotation', + 'color' + ]; + const animationProperties = ['playing']; + const materialProperties = ['color']; + + const gltfJson = gltf.parser.json as GLTFJson; + + const nodeOptions = gltfJson.nodes?.map(({ name }, index) => ({ + name: name || index.toString(), + index + })); + const materialOptions = gltfJson.materials?.map(({ name }, index) => ({ + name: name || index.toString(), + index + })); + const animationOptions = gltf.animations?.map(({ name }, index) => ({ + name: name || index.toString(), + index + })); + + const properties: Properties = {}; + + properties.nodes = { options: nodeOptions, properties: nodeProperties }; + + if (materialOptions) { + properties.materials = { + options: materialOptions, + properties: materialProperties + }; + } + + if (animationOptions) { + properties.animations = { + options: animationOptions, + properties: animationProperties + }; + } + + return properties; +}; + +function createPropertyChoice( + resource: string, + name: string, + property: string, + index: number +): { text: string; value: any } { + return { + text: `${resource}/${name}/${property}`, + value: `${resource}/${index}/${property}` + }; +} + +function generateChoicesForProperty( + property: ResourceProperties | undefined, + resource: Resource +) { + if (!property) return []; + const choices: { text: string; value: any }[] = []; + + property.options.forEach(({ index, name }) => { + property.properties.forEach((property) => { + choices.push(createPropertyChoice(resource, name, property, index)); + }); + }); + + return choices; +} + +export function generateSettableChoices(properties: Properties): Choices { + const choices: { text: string; value: any }[] = [ + ...generateChoicesForProperty(properties.nodes, Resource.nodes), + ...generateChoicesForProperty(properties.materials, Resource.materials), + ...generateChoicesForProperty(properties.animations, Resource.animations) + ]; + + return choices; +} + +export function generateRaycastableChoices(properties: Properties): Choices { + const choices: { text: string; value: any }[] = []; + + properties.nodes?.options.forEach(({ index, name }) => { + choices.push({ + text: `nodes/${name}`, + value: `nodes/${index}` + }); + }); + + return choices; +} + +export type OnClickCallback = (jsonPath: string) => void; + +export type OnClickListener = { + path: Path; + elementName: string; + callbacks: OnClickCallback[]; +}; + +export type OnClickListeners = { + [jsonPath: string]: OnClickListener; +}; + +export const buildScene = ({ + gltf, + setOnClickListeners, + setActiveAnimations +}: { + gltf: GLTF & ObjectMap; + setOnClickListeners: + | ((cb: (existing: OnClickListeners) => OnClickListeners) => void) + | undefined; + setActiveAnimations: + | ((animation: string, active: boolean) => void) + | undefined; +}) => { + const properties = extractProperties(gltf); + + const onSceneChanged = new EventEmitter(); + + const addOnClickedListener = ( + jsonPath: string, + callback: (jsonPath: string) => void + ) => { + if (!setOnClickListeners) return; + const path = parseJsonPath(jsonPath, true); + + setOnClickListeners((existing) => { + const listenersForPath = existing[jsonPath] || { + path, + elementName: getResourceName( + { resource: path.resource, index: path.index }, + properties + ), + callbacks: [] + }; + + const updatedListeners: OnClickListener = { + ...listenersForPath, + callbacks: [...listenersForPath.callbacks, callback] + }; + + const result: OnClickListeners = { + ...existing, + [jsonPath]: updatedListeners + }; + + return result; + }); + }; + + const removeOnClickedListener = ( + jsonPath: string, + callback: (jsonPath: string) => void + ) => { + if (!setOnClickListeners) return; + setOnClickListeners((existing) => { + const listenersForPath = existing[jsonPath]; + + if (!listenersForPath) return existing; + + const updatedCallbacks = listenersForPath.callbacks.filter( + (x) => x !== callback + ); + + if (updatedCallbacks.length > 0) { + const updatedListeners = { + ...listenersForPath, + callback: updatedCallbacks + }; + + return { + ...existing, + [jsonPath]: updatedListeners + }; + } + + const result = { + ...existing + }; + + delete result[jsonPath]; + + return result; + }); + }; + + const getProperty = (jsonPath: string, valueTypeName: string) => { + const path = parseJsonPath(jsonPath); + + return getPropertyFromModel(path, gltf, properties); + }; + + const setProperty = (jsonPath: string, valueTypeName: string, value: any) => { + const path = parseJsonPath(jsonPath); + + applyPropertyToModel(path, gltf, value, properties, setActiveAnimations); + + onSceneChanged.emit(); + }; + + const settableChoices = generateSettableChoices(properties); + const raycastableChoices = generateRaycastableChoices(properties); + + const addOnSceneChangedListener: IScene['addOnSceneChangedListener'] = ( + listener + ) => { + onSceneChanged.addListener(listener); + }; + + const removeOnSceneChangedListener: IScene['removeOnSceneChangedListener'] = ( + listener + ) => { + onSceneChanged.removeListener(listener); + }; + + const scene: IScene = { + getProperty, + setProperty, + getProperties: () => settableChoices, + getRaycastableProperties: () => raycastableChoices, + addOnClickedListener, + removeOnClickedListener, + addOnSceneChangedListener, + removeOnSceneChangedListener + }; + + return scene; +}; diff --git a/packages/scene/src/dependencies.ts b/packages/scene/src/dependencies.ts new file mode 100644 index 00000000..3b6dbe3c --- /dev/null +++ b/packages/scene/src/dependencies.ts @@ -0,0 +1,9 @@ +import { IGraphApi } from '@behave-graph/core'; + +import { IScene } from './Abstractions/IScene.js'; + +export const sceneDependencyKey = 'scene'; + +export const getSceneDependency = ( + getDependency: IGraphApi['getDependency'] +): IScene => getDependency(sceneDependencyKey) as IScene; diff --git a/packages/scene/src/index.ts b/packages/scene/src/index.ts new file mode 100644 index 00000000..88c02b57 --- /dev/null +++ b/packages/scene/src/index.ts @@ -0,0 +1,38 @@ +// scene profile +export * from './Abstractions/IScene.js'; +export * from './Abstractions/Drivers/DummyScene.js'; + +export * from './Values/Internal/Mat3.js'; +export * from './Values/Internal/Mat4.js'; +export * from './Values/Internal/Vec2.js'; +export * from './Values/Internal/Vec3.js'; +export * from './Values/Internal/Vec4.js'; + +export * from './Values/ColorValue.js'; +export * from './Values/EulerValue.js'; +export * from './Values/Mat3Value.js'; +export * from './Values/Mat4Value.js'; +export * from './Values/Vec2Value.js'; +export * from './Values/Vec3Value.js'; +export * from './Values/Vec4Value.js'; +export * from './Values/QuatValue.js'; + +export * from './Nodes/Actions/SetSceneProperty.js'; +export * from './Nodes/Actions/EaseSceneProperty.js'; + +export * from './Nodes/Events/OnSceneNodeClick.js'; + +export * as ColorNodes from './Nodes/Logic/ColorNodes.js'; +export * as EulerNodes from './Nodes/Logic/EulerNodes.js'; +export * as Mat3Nodes from './Nodes/Logic/Mat3Nodes.js'; +export * as Mat4Nodes from './Nodes/Logic/Mat4Nodes.js'; +export * as Vec2Nodes from './Nodes/Logic/Vec2Nodes.js'; +export * as Vec3Nodes from './Nodes/Logic/Vec3Nodes.js'; +export * as Vec4Nodes from './Nodes/Logic/Vec4Nodes.js'; +export * as QuatNodes from './Nodes/Logic/QuatNodes.js'; +export * from './Nodes/Logic/VecElements.js'; + +export * from './Nodes/Queries/GetSceneProperty.js'; + +export * from './registerSceneProfile.js'; +export * from './buildScene.js'; diff --git a/packages/scene/src/loadScene.ts b/packages/scene/src/loadScene.ts new file mode 100644 index 00000000..333d138d --- /dev/null +++ b/packages/scene/src/loadScene.ts @@ -0,0 +1,81 @@ +import { Group } from 'three'; +import { DRACOLoader, GLTF, GLTFLoader } from 'three-stdlib'; + +import { IScene } from './Abstractions/IScene.js'; +import { buildScene, ObjectMap } from './buildScene.js'; + +// Taken from react-three-fiber +// Collects nodes and materials from a THREE.Object3D +export function buildGraph(object: Group) { + const data: ObjectMap = { nodes: {}, materials: {} }; + if (object) { + object.traverse((obj: any) => { + if (obj.name) data.nodes[obj.name] = obj; + if (obj.material && !data.materials[obj.material.name]) + data.materials[obj.material.name] = obj.material; + }); + } + return data; +} + +type ThreeSceneReturn = { + scene: IScene; + gltf: GLTF & ObjectMap; +}; + +/** + * Loads a gltf, and corresponding IScene from a url + * @param url + * @param onProgress invoked on progress of loading the gltf + * @returns + */ +export const loadGltfAndBuildScene = ( + url: string, + onProgress?: (progress: number) => void +): Promise => { + const loader = new GLTFLoader(); + + // Optional: Provide a DRACOLoader instance to decode compressed mesh data + const dracoLoader = new DRACOLoader(); + dracoLoader.setDecoderPath( + 'https://www.gstatic.com/draco/versioned/decoders/1.4.3/' + ); + loader.setDRACOLoader(dracoLoader); + + // Load a glTF resource + + // eslint-disable-next-line promise/avoid-new + const result = new Promise((resolve, reject) => { + loader.load( + // resource URL + url, + // called when the resource is loaded + function (gltf) { + Object.assign(gltf, buildGraph(gltf.scene)); + const asObjectMap = gltf as GLTF & ObjectMap; + + const scene = buildScene({ + gltf: asObjectMap, + setOnClickListeners: undefined, + setActiveAnimations: undefined + }); + + resolve({ + scene, + gltf: asObjectMap + }); + }, + // called while loading is progressing + function (xhr) { + const progress = (xhr.loaded / xhr.total) * 100; + if (onProgress) onProgress(progress); + }, + // called when loading has errors + function (error) { + reject(error); + } + ); + }); + + return result; +}; diff --git a/packages/core/src/Profiles/Scene/readSceneGraphs.test.ts b/packages/scene/src/readSceneGraphs.test.ts similarity index 85% rename from packages/core/src/Profiles/Scene/readSceneGraphs.test.ts rename to packages/scene/src/readSceneGraphs.test.ts index 9204ac50..fdb7d6d2 100644 --- a/packages/core/src/Profiles/Scene/readSceneGraphs.test.ts +++ b/packages/scene/src/readSceneGraphs.test.ts @@ -8,7 +8,7 @@ import * as vector2Json from '../../../../../graphs/scene/logic/Vector2.json'; import * as vector3Json from '../../../../../graphs/scene/logic/Vector3.json'; import * as vector4Json from '../../../../../graphs/scene/logic/Vector4.json'; import { Logger } from '../../Diagnostics/Logger.js'; -import { Graph } from '../../Graphs/Graph.js'; +import { GraphInstance } from '../../Graphs/Graph.js'; import { GraphJSON } from '../../Graphs/IO/GraphJSON.js'; import { readGraphFromJSON } from '../../Graphs/IO/readGraphFromJSON.js'; import { validateGraphAcyclic } from '../../Graphs/Validation/validateGraphAcyclic.js'; @@ -39,15 +39,18 @@ for (const key in exampleMap) { describe(`${key}`, () => { const exampleJson = exampleMap[key] as GraphJSON; - let parsedGraphJson: Graph | undefined; + let parsedGraphJson: GraphInstance | undefined; test('parse json to graph', () => { expect(() => { - parsedGraphJson = readGraphFromJSON(exampleJson, registry); + parsedGraphJson = readGraphFromJSON({ + graphJson: exampleJson, + registry + }); }).not.toThrow(); // await fs.writeFile('./examples/test.json', JSON.stringify(writeGraphToJSON(graph), null, ' '), { encoding: 'utf-8' }); if (parsedGraphJson !== undefined) { - expect(validateGraphLinks(parsedGraphJson)).toHaveLength(0); - expect(validateGraphAcyclic(parsedGraphJson)).toHaveLength(0); + expect(validateGraphLinks(parsedGraphJson.nodes)).toHaveLength(0); + expect(validateGraphAcyclic(parsedGraphJson.nodes)).toHaveLength(0); } else { expect(parsedGraphJson).toBeDefined(); } diff --git a/packages/core/src/Profiles/Scene/registerSceneProfile.test.ts b/packages/scene/src/registerSceneProfile.test.ts similarity index 100% rename from packages/core/src/Profiles/Scene/registerSceneProfile.test.ts rename to packages/scene/src/registerSceneProfile.test.ts diff --git a/packages/scene/src/registerSceneProfile.ts b/packages/scene/src/registerSceneProfile.ts new file mode 100644 index 00000000..8d65d36b --- /dev/null +++ b/packages/scene/src/registerSceneProfile.ts @@ -0,0 +1,90 @@ +/* eslint-disable max-len */ +import { + Dependencies, + getNodeDescriptions, + getStringConversionsForValueType, + NodeDefinition, + ValueType +} from '@behave-graph/core'; + +import { IScene } from './Abstractions/IScene.js'; +import { sceneDependencyKey } from './dependencies.js'; +import { SetSceneProperty } from './Nodes/Actions/SetSceneProperty.js'; +import { OnSceneNodeClick } from './Nodes/Events/OnSceneNodeClick.js'; +import * as ColorNodes from './Nodes/Logic/ColorNodes.js'; +import * as EulerNodes from './Nodes/Logic/EulerNodes.js'; +import * as Mat3Nodes from './Nodes/Logic/Mat3Nodes.js'; +import * as Mat4Nodes from './Nodes/Logic/Mat4Nodes.js'; +import * as QuatNodes from './Nodes/Logic/QuatNodes.js'; +import * as Vec2Nodes from './Nodes/Logic/Vec2Nodes.js'; +import * as Vec3Nodes from './Nodes/Logic/Vec3Nodes.js'; +import * as Vec4Nodes from './Nodes/Logic/Vec4Nodes.js'; +import { GetSceneProperty } from './Nodes/Queries/GetSceneProperty.js'; +import { ColorValue } from './Values/ColorValue.js'; +import { EulerValue } from './Values/EulerValue.js'; +import { Mat3Value } from './Values/Mat3Value.js'; +import { Mat4Value } from './Values/Mat4Value.js'; +import { QuatValue } from './Values/QuatValue.js'; +import { Vec2Value } from './Values/Vec2Value.js'; +import { Vec3Value } from './Values/Vec3Value.js'; +import { Vec4Value } from './Values/Vec4Value.js'; + +export const createSceneDependency = (scene: IScene): Dependencies => ({ + [sceneDependencyKey]: scene +}); + +export const getSceneValueTypes = (): ValueType[] => [ + Vec2Value, + Vec3Value, + Vec4Value, + ColorValue, + EulerValue, + QuatValue, + Mat3Value, + Mat4Value +]; + +export const getSceneNodeDefinitions = ( + values: Record +): NodeDefinition[] => { + const allValueTypeNames = Object.keys(values); + return [ + // pull in value type nodes + + ...getNodeDescriptions(Vec2Nodes), + ...getNodeDescriptions(Vec3Nodes), + ...getNodeDescriptions(Vec4Nodes), + ...getNodeDescriptions(ColorNodes), + ...getNodeDescriptions(EulerNodes), + ...getNodeDescriptions(QuatNodes), + ...getNodeDescriptions(Mat3Nodes), + ...getNodeDescriptions(Mat4Nodes), + // events + OnSceneNodeClick, + // actions + ...SetSceneProperty(allValueTypeNames), + ...GetSceneProperty(allValueTypeNames) + ]; +}; + +const newValueTypeNames = [ + 'vec2', + 'vec3', + 'vec4', + 'quat', + 'euler', + 'color', + 'mat3', + 'mat4' +]; + +export const makeSceneDependencies = ({ scene }: { scene: IScene }) => ({ + [sceneDependencyKey]: scene +}); + +export const getStringConversions = ( + values: Record +): NodeDefinition[] => + newValueTypeNames.flatMap((valueTypeName) => + getStringConversionsForValueType({ values, valueTypeName }) + ); diff --git a/packages/scene/tsconfig.json b/packages/scene/tsconfig.json new file mode 100644 index 00000000..9c6a8ecb --- /dev/null +++ b/packages/scene/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src"], + "exclude": ["**/*.test.ts"], + "compilerOptions": { + "jsx": "react-jsx", + "outDir": "dist" + } +} diff --git a/website/scripts/generate-dynamic-pages/templates/inputs-table.ts b/website/scripts/generate-dynamic-pages/templates/inputs-table.ts index 2ae1f23f..eeba19df 100644 --- a/website/scripts/generate-dynamic-pages/templates/inputs-table.ts +++ b/website/scripts/generate-dynamic-pages/templates/inputs-table.ts @@ -1,4 +1,4 @@ -import { NodeSpecJSON } from '../../../../packages/core/src/Graphs/IO/NodeSpecjson'; +import { NodeSpecJSON } from '../../../../packages/core/src/Graphs/IO/NodeSpecjson.js'; import { Socket } from '../../../../packages/core/src/Sockets/Socket.js'; export default (inputs: Socket[], specJSON: NodeSpecJSON) => { diff --git a/website/src/components/HomepageFeatures/index.tsx b/website/src/components/HomepageFeatures/index.tsx index 8d7cd8c4..a0541770 100644 --- a/website/src/components/HomepageFeatures/index.tsx +++ b/website/src/components/HomepageFeatures/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import clsx from 'clsx'; -import styles from './styles.module.css'; +import styles from './styles.module.css.js'; type FeatureItem = { title: string; @@ -37,13 +37,13 @@ const FeatureList: FeatureItem[] = [ <> This library is designed to be extended with context dependent nodes, specifically Actions, Events and Queries that match the capabilities and - requirements of your system. + requirements of your system. ) } ]; -function Feature({title, Svg, description}: FeatureItem) { +function Feature({ title, Svg, description }: FeatureItem) { return (
diff --git a/website/src/components/NodePreview/InputSocket.tsx b/website/src/components/NodePreview/InputSocket.tsx index 578f9ae9..0d1131d2 100644 --- a/website/src/components/NodePreview/InputSocket.tsx +++ b/website/src/components/NodePreview/InputSocket.tsx @@ -1,9 +1,8 @@ - import React from 'react'; import { Icon } from '@iconify/react'; -import { colors, valueTypeColorMap } from './utils/colors'; +import { colors, valueTypeColorMap } from './utils/colors.js'; import { InputSocketSpecJSON } from 'packages/core/src/Graphs/IO/NodeSpecJSON'; -import { AutoSizeInput } from './AutoSizeInput'; +import { AutoSizeInput } from './AutoSizeInput.js'; export type InputSocketProps = { value: any | undefined; diff --git a/website/src/components/NodePreview/Node.tsx b/website/src/components/NodePreview/Node.tsx index 6398645f..5bca5645 100644 --- a/website/src/components/NodePreview/Node.tsx +++ b/website/src/components/NodePreview/Node.tsx @@ -1,8 +1,8 @@ import React from 'react'; import { NodeSpecJSON } from 'packages/core/src/Graphs/IO/NodeSpecJSON'; -import NodeContainer from './NodeContainer'; -import InputSocket from './InputSocket'; -import OutputSocket from './OutputSocket'; +import NodeContainer from './NodeContainer.js'; +import InputSocket from './InputSocket.js'; +import OutputSocket from './OutputSocket.js'; type NodeProps = { spec: NodeSpecJSON; @@ -31,24 +31,15 @@ const Node = ({ spec }: NodeProps) => { justifyContent: 'space-between', gap: '0.5rem', padding: '0.5rem', - position: 'relative', + position: 'relative' }} > - {input && ( - - )} - {output && ( - - )} + {input && } + {output && }
))} ); }; -export default Node; \ No newline at end of file +export default Node; diff --git a/website/src/components/NodePreview/NodeContainer.tsx b/website/src/components/NodePreview/NodeContainer.tsx index 7bdea65e..21e2f5bb 100644 --- a/website/src/components/NodePreview/NodeContainer.tsx +++ b/website/src/components/NodePreview/NodeContainer.tsx @@ -1,6 +1,6 @@ import { NodeSpecJSON } from 'packages/core/src/Graphs/IO/NodeSpecJSON'; import React, { PropsWithChildren } from 'react'; -import { categoryColorMap, colors } from './utils/colors'; +import { categoryColorMap, colors } from './utils/colors.js'; type NodeProps = { title: string; @@ -25,7 +25,7 @@ export default function NodeContainer({ fontSize: '0.75rem', backgroundColor: '#2d3748', minWidth: '120px', - width: 'fit-content', + width: 'fit-content' }} >
+ }} + > {title}
{children} diff --git a/website/src/components/NodePreview/OutputSocket.tsx b/website/src/components/NodePreview/OutputSocket.tsx index 041437df..40b12c97 100644 --- a/website/src/components/NodePreview/OutputSocket.tsx +++ b/website/src/components/NodePreview/OutputSocket.tsx @@ -1,14 +1,11 @@ import React from 'react'; import { Icon } from '@iconify/react'; -import { colors, valueTypeColorMap } from './utils/colors'; +import { colors, valueTypeColorMap } from './utils/colors.js'; import { OutputSocketSpecJSON } from 'packages/core/src/Graphs/IO/NodeSpecJSON'; export type OutputSocketProps = OutputSocketSpecJSON; -export default function OutputSocket({ - valueType, - name -}: OutputSocketProps) { +export default function OutputSocket({ valueType, name }: OutputSocketProps) { const isFlowSocket = valueType === 'flow'; let colorName = valueTypeColorMap[valueType]; if (colorName === undefined) { diff --git a/website/src/components/NodePreview/index.tsx b/website/src/components/NodePreview/index.tsx index 43bb9c5b..cb812a11 100644 --- a/website/src/components/NodePreview/index.tsx +++ b/website/src/components/NodePreview/index.tsx @@ -1,18 +1,11 @@ - - import { NodeSpecJSON } from 'packages/core/src/Graphs/IO/NodeSpecJSON'; import { NodeDescription } from 'packages/core/src/Nodes/Registry/NodeDescription'; import { Socket } from 'packages/core/src/Sockets/Socket'; import React from 'react'; -import Node from './Node'; +import Node from './Node.js'; -const NodePreview = ({ - description, - inputs, - outputs, - spec -}: Props) => { +const NodePreview = ({ description, inputs, outputs, spec }: Props) => { return (
@@ -30,10 +23,10 @@ const NodePreview = ({ }; export type Props = { - description: NodeDescription, - inputs: Socket[], - outputs: Socket[], - spec: NodeSpecJSON, -} + description: NodeDescription; + inputs: Socket[]; + outputs: Socket[]; + spec: NodeSpecJSON; +}; export default NodePreview; diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx index b203c543..a2f948c8 100644 --- a/website/src/pages/index.tsx +++ b/website/src/pages/index.tsx @@ -5,10 +5,10 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; import HomepageFeatures from '@site/src/components/HomepageFeatures'; -import styles from './index.module.css'; +import styles from './index.module.css.js'; function HomepageHeader() { - const {siteConfig} = useDocusaurusContext(); + const { siteConfig } = useDocusaurusContext(); return (
@@ -28,11 +28,12 @@ function HomepageHeader() { } export default function Home(): JSX.Element { - const {siteConfig} = useDocusaurusContext(); + const { siteConfig } = useDocusaurusContext(); return ( + description="Description will go into a meta tag in " + >