From 993ead71c6d2a686aa1601a3634eb027f4caa273 Mon Sep 17 00:00:00 2001 From: David de Boer Date: Mon, 27 May 2024 11:32:41 +0200 Subject: [PATCH] style: Lint and style code * Use gts for linting and styling, according to NDE standards. --- .editorconfig | 8 + .eslintignore | 1 + .eslintrc.json | 15 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 21 +- .gitignore | 4 +- .husky/pre-commit | 3 +- .prettierrc.cjs | 3 + .vscode/settings.json | 6 +- README.md | 4 +- package-lock.json | 6657 ++++++++++++--------- package.json | 45 +- src/cliArgs.ts | 59 +- src/lib/File.class.ts | 80 +- src/lib/Generator.class.ts | 144 +- src/lib/Iterator.class.ts | 100 +- src/lib/Pipeline.class.ts | 100 +- src/lib/PreviousStage.class.ts | 26 +- src/lib/Stage.class.ts | 120 +- src/lib/TriplyDB.class.ts | 66 +- src/lib/tests/File.class.test.ts | 152 +- src/lib/tests/Generator.class.test.ts | 434 +- src/lib/tests/Iterator.class.test.ts | 250 +- src/lib/tests/Pipeline.class.test.ts | 702 +-- src/lib/tests/PreviousStage.class.test.ts | 354 +- src/lib/tests/Stage.class.test.ts | 430 +- src/lib/types.ts | 12 +- src/{main.tsx => main.ts} | 50 +- src/utils/error.ts | 12 +- src/utils/formatDuration.ts | 11 +- src/utils/getEndpoint.ts | 22 +- src/utils/getEngine.ts | 12 +- src/utils/getEngineSource.ts | 8 +- src/utils/getSPARQLQuery.ts | 54 +- src/utils/getSPARQLQueryString.ts | 8 +- src/utils/guards.ts | 46 +- src/utils/init.ts | 124 +- src/utils/loadConfiguration.ts | 18 +- src/utils/loadPipelines.ts | 61 +- src/utils/parseYamlFile.ts | 10 +- src/utils/removeDir.ts | 8 +- src/utils/tests/utilities.test.ts | 969 +-- src/utils/validate.ts | 19 +- src/utils/version.ts | 6 +- static/example/config.yml | 8 +- tsconfig.json | 120 +- 46 files changed, 6503 insertions(+), 4861 deletions(-) create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .prettierrc.cjs rename src/{main.tsx => main.ts} (53%) diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..79fe802 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +insert_final_newline = true diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +build/ diff --git a/.eslintrc.json b/.eslintrc.json index 9dbd651..f95bb33 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,16 +1,3 @@ { - "env": { - "browser": true, - "es2021": true - }, - "extends": ["standard-with-typescript", "prettier"], - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module", - "project": ["tsconfig.json"] - }, - "rules": { - "@typescript-eslint/return-await": "off", - "@typescript-eslint/no-non-null-assertion": "off" - } + "extends": "./node_modules/gts/" } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 635de10..4ee34ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: with: node-version: lts/* - run: npm ci - - run: npm run build + - run: npm run compile - run: npm run semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0a25d0e..42bf0b2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,17 +1,10 @@ # For more information on running Github CI with Node: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs name: Test -run-name: Testing commit by ${{ github.actor }} -# when pipeline is triggered on: - # manual trigger workflow in UI - workflow_dispatch: - # commit on any branch - push: - # only trigger on branches, not on tags - branches: ['**'] - # during pull request pull_request: + branches: + - main # cancel any ongoing job in the branch if there is one more recent concurrency: @@ -19,27 +12,27 @@ concurrency: cancel-in-progress: true jobs: - install-build-test: + test: runs-on: ubuntu-latest strategy: matrix: - # Using Node LTS https://nodejs.org/en - node-version: [20.10.0] + node-version: [lts/*] steps: - run: echo "Job was automatically triggered by a ${{ github.event_name }} event on ${{ github.ref }} - ${{ github.repository }}." - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: Check versions run: echo "Node version:" && node -v && echo "NPM version:" && npm -v - name: Install dependencies run: npm install + - run: npm run lint - name: Build - run: npm run build + run: npm run compile - name: LDWorkbench init & test run run: rm -rf ./pipelines && npx ld-workbench --init && npx ld-workbench -c "src/utils/tests/static/single/conf.yml" - name: Test diff --git a/.gitignore b/.gitignore index 6dec33a..9dc2ef1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -dist -node_modules +build/ +node_modules/ .eslintcache diff --git a/.husky/pre-commit b/.husky/pre-commit index 3813f6e..75fac8e 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -npx lint-staged -# npm test \ No newline at end of file +npm run lint diff --git a/.prettierrc.cjs b/.prettierrc.cjs new file mode 100644 index 0000000..ff15483 --- /dev/null +++ b/.prettierrc.cjs @@ -0,0 +1,3 @@ +module.exports = { + ...require('gts/.prettierrc.json') +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 79614ce..a85487b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,7 @@ "yaml.schemas": { "static/ld-workbench.schema.json": [ "pipelines/configurations/**/*.yml", - "static/example/*.yml", - ], + "static/example/*.yml" + ] } -} \ No newline at end of file +} diff --git a/README.md b/README.md index a56dee6..72b3344 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ For local development, the following command should get you going: git clone https://github.com/netwerk-digitaal-erfgoed/ld-workbench.git cd ld-workbench npm i -npm run build +npm run compile ``` To start the CLI tool you can use this command: @@ -133,7 +133,7 @@ To start the CLI tool you can use this command: npm run ld-workbench -- --configDir static/example ``` -Since this project is written in Typescript, your code needs to be transpiled to Javascript before you can run it (using `npm run build`). With `npm run dev` the transpiler will watch changes in the Typescript code an transpiles on each change. +Since this project is written in Typescript, your code needs to be transpiled to Javascript before you can run it (using `npm run compile`). With `npm run dev` the transpiler will watch changes in the Typescript code an transpiles on each change. The configuration of this project is validated and defined by [JSON Schema](https://json-schema.org). The schema is located in `./static/ld-workbench-schema.json`. To create the types from this schema, run `npm run util:json-schema-to-typescript`. This will regenerate `./src/types/LDWorkbenchConfiguration.d.ts`, do not modify this file by hand. diff --git a/package-lock.json b/package-lock.json index 7fe989b..f7f4539 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,9 +27,10 @@ "sparqljs": "^3.7.1" }, "bin": { - "ld-workbench": "dist/main.js" + "ld-workbench": "build/main.js" }, "devDependencies": { + "@comunica/types": "^3.1.0", "@types/chai": "^4.3.11", "@types/chai-as-promised": "^7.1.8", "@types/human-number": "^1.0.2", @@ -38,122 +39,54 @@ "@types/lodash.kebabcase": "^4.1.9", "@types/mocha": "^10.0.6", "@types/n3": "^1.16.4", - "@types/node": "^20.9.4", + "@types/node": "20.11.5", "@types/sparqljs": "^3.1.8", - "@typescript-eslint/eslint-plugin": "^6.12.0", "chai": "^4.3.10", "chai-as-promised": "^7.1.1", "commander": "^11.1.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-n": "^16.3.1", - "eslint-plugin-promise": "^6.1.1", + "gts": "^5.3.0", "husky": "^8.0.0", "json-schema-to-typescript": "^13.1.1", - "lint-staged": "^15.1.0", "mocha": "^10.2.0", "semantic-release": "^23.0.2", - "typescript": "^5.3.2" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, + "typescript": "~5.4.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.6", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.6", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -245,9 +178,11 @@ } }, "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, "engines": { "node": ">=0.1.90" } @@ -261,6 +196,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/actor-abstract-mediatyped/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-abstract-parse": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-parse/-/actor-abstract-parse-2.10.0.tgz", @@ -287,6 +233,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-abstract-path/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-context-preprocess-source-to-destination": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-context-preprocess-source-to-destination/-/actor-context-preprocess-source-to-destination-2.10.0.tgz", @@ -298,6 +255,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/actor-context-preprocess-source-to-destination/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-dereference-fallback": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-fallback/-/actor-dereference-fallback-2.10.0.tgz", @@ -374,6 +342,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/actor-http-proxy/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-http-wayback": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-http-wayback/-/actor-http-wayback-2.10.2.tgz", @@ -418,6 +397,17 @@ "process": "^0.11.10" } }, + "node_modules/@comunica/actor-init-query/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-optimize-query-operation-bgp-to-join": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-optimize-query-operation-bgp-to-join/-/actor-optimize-query-operation-bgp-to-join-2.10.0.tgz", @@ -459,6 +449,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-ask/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-bgp-join": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-bgp-join/-/actor-query-operation-bgp-join-2.10.1.tgz", @@ -470,6 +471,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-bgp-join/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-construct": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-construct/-/actor-query-operation-construct-2.10.1.tgz", @@ -485,6 +497,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-construct/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-describe-subject": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-describe-subject/-/actor-query-operation-describe-subject-2.10.1.tgz", @@ -499,6 +522,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-describe-subject/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-distinct-hash": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-distinct-hash/-/actor-query-operation-distinct-hash-2.10.1.tgz", @@ -511,6 +545,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-distinct-hash/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-extend": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-extend/-/actor-query-operation-extend-2.10.1.tgz", @@ -524,6 +569,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-extend/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-filter-sparqlee": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-filter-sparqlee/-/actor-query-operation-filter-sparqlee-2.10.1.tgz", @@ -537,6 +593,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-filter-sparqlee/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-from-quad": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-from-quad/-/actor-query-operation-from-quad-2.10.1.tgz", @@ -549,6 +616,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-from-quad/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-group": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-group/-/actor-query-operation-group-2.10.1.tgz", @@ -566,6 +644,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-group/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-join": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-join/-/actor-query-operation-join-2.10.1.tgz", @@ -578,6 +667,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-join/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-leftjoin": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-leftjoin/-/actor-query-operation-leftjoin-2.10.1.tgz", @@ -591,6 +691,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-leftjoin/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-minus": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-minus/-/actor-query-operation-minus-2.10.1.tgz", @@ -603,6 +714,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-minus/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-nop": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-nop/-/actor-query-operation-nop-2.10.1.tgz", @@ -617,6 +739,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-nop/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-orderby-sparqlee": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-orderby-sparqlee/-/actor-query-operation-orderby-sparqlee-2.10.1.tgz", @@ -630,6 +763,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-orderby-sparqlee/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-path-alt": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-alt/-/actor-query-operation-path-alt-2.10.1.tgz", @@ -643,7 +787,18 @@ "sparqlalgebrajs": "^4.2.0" } }, - "node_modules/@comunica/actor-query-operation-path-inv": { + "node_modules/@comunica/actor-query-operation-path-alt/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, + "node_modules/@comunica/actor-query-operation-path-inv": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-inv/-/actor-query-operation-path-inv-2.10.1.tgz", "integrity": "sha512-pd30Ug7bOAZ5amfA3I6v+cpitlDn2i5fE1BA006LYJISCAHSfKEgLmU2Q4ZPbwi4s1A8WKKLV7Q389Ru3Xtziw==", @@ -654,6 +809,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-path-inv/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-path-link": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-link/-/actor-query-operation-path-link-2.10.1.tgz", @@ -665,6 +831,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-path-link/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-path-nps": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-nps/-/actor-query-operation-path-nps-2.10.1.tgz", @@ -676,6 +853,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-path-nps/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-path-one-or-more": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-one-or-more/-/actor-query-operation-path-one-or-more-2.10.1.tgz", @@ -689,6 +877,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-path-one-or-more/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-path-seq": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-seq/-/actor-query-operation-path-seq-2.10.1.tgz", @@ -701,6 +900,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-path-seq/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-path-zero-or-more": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-zero-or-more/-/actor-query-operation-path-zero-or-more-2.10.1.tgz", @@ -715,6 +925,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-path-zero-or-more/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-path-zero-or-one": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-path-zero-or-one/-/actor-query-operation-path-zero-or-one-2.10.1.tgz", @@ -729,6 +950,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-path-zero-or-one/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-project": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-project/-/actor-query-operation-project-2.10.1.tgz", @@ -743,6 +975,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-project/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-quadpattern": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-quadpattern/-/actor-query-operation-quadpattern-2.10.1.tgz", @@ -762,6 +1005,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-quadpattern/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-reduced-hash": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-reduced-hash/-/actor-query-operation-reduced-hash-2.10.1.tgz", @@ -775,6 +1029,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-reduced-hash/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-service": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-service/-/actor-query-operation-service-2.10.1.tgz", @@ -790,6 +1055,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-service/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-slice": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-slice/-/actor-query-operation-slice-2.10.1.tgz", @@ -802,6 +1078,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-slice/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-sparql-endpoint": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-sparql-endpoint/-/actor-query-operation-sparql-endpoint-2.10.2.tgz", @@ -824,6 +1111,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-sparql-endpoint/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-union": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-union/-/actor-query-operation-union-2.10.1.tgz", @@ -839,6 +1137,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-union/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-add-rewrite": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-add-rewrite/-/actor-query-operation-update-add-rewrite-2.10.1.tgz", @@ -851,6 +1160,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-add-rewrite/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-clear": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-clear/-/actor-query-operation-update-clear-2.10.2.tgz", @@ -865,6 +1185,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-clear/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-compositeupdate": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-compositeupdate/-/actor-query-operation-update-compositeupdate-2.10.1.tgz", @@ -876,6 +1207,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-compositeupdate/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-copy-rewrite": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-copy-rewrite/-/actor-query-operation-update-copy-rewrite-2.10.1.tgz", @@ -887,6 +1229,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-copy-rewrite/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-create": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-create/-/actor-query-operation-update-create-2.10.2.tgz", @@ -899,6 +1252,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-create/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-deleteinsert": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-deleteinsert/-/actor-query-operation-update-deleteinsert-2.10.2.tgz", @@ -915,6 +1279,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-deleteinsert/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-drop": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-drop/-/actor-query-operation-update-drop-2.10.2.tgz", @@ -929,6 +1304,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-drop/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-load": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-load/-/actor-query-operation-update-load-2.10.2.tgz", @@ -943,6 +1329,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-load/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-update-move-rewrite": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-update-move-rewrite/-/actor-query-operation-update-move-rewrite-2.10.1.tgz", @@ -954,6 +1351,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-update-move-rewrite/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-operation-values": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-query-operation-values/-/actor-query-operation-values-2.10.1.tgz", @@ -969,6 +1377,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-query-operation-values/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-parse-graphql": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-query-parse-graphql/-/actor-query-parse-graphql-2.10.0.tgz", @@ -1003,10 +1422,21 @@ "readable-stream": "^4.4.2" } }, - "node_modules/@comunica/actor-query-result-serialize-rdf": { + "node_modules/@comunica/actor-query-result-serialize-json/node_modules/@comunica/types": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-rdf/-/actor-query-result-serialize-rdf-2.10.0.tgz", - "integrity": "sha512-TBXJrDs5brRMFg8UisXS/F1vJw8nUtLhjugNZcd4ST8J965Ho1aNopydp4PMmwINMRxHhHtWJGwIB2Z5xD2lDw==", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, + "node_modules/@comunica/actor-query-result-serialize-rdf": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-rdf/-/actor-query-result-serialize-rdf-2.10.0.tgz", + "integrity": "sha512-TBXJrDs5brRMFg8UisXS/F1vJw8nUtLhjugNZcd4ST8J965Ho1aNopydp4PMmwINMRxHhHtWJGwIB2Z5xD2lDw==", "dependencies": { "@comunica/bus-query-result-serialize": "^2.10.0", "@comunica/bus-rdf-serialize": "^2.10.0", @@ -1014,6 +1444,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/actor-query-result-serialize-rdf/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-simple": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-simple/-/actor-query-result-serialize-simple-2.10.0.tgz", @@ -1026,6 +1467,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-query-result-serialize-simple/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-sparql-csv": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-sparql-csv/-/actor-query-result-serialize-sparql-csv-2.10.0.tgz", @@ -1037,6 +1489,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-query-result-serialize-sparql-csv/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-sparql-json": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-sparql-json/-/actor-query-result-serialize-sparql-json-2.10.2.tgz", @@ -1051,6 +1514,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-query-result-serialize-sparql-json/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-sparql-tsv": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-sparql-tsv/-/actor-query-result-serialize-sparql-tsv-2.10.0.tgz", @@ -1063,6 +1537,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-query-result-serialize-sparql-tsv/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-sparql-xml": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-sparql-xml/-/actor-query-result-serialize-sparql-xml-2.10.0.tgz", @@ -1074,6 +1559,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-query-result-serialize-sparql-xml/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-stats": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-stats/-/actor-query-result-serialize-stats-2.10.2.tgz", @@ -1088,6 +1584,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-query-result-serialize-stats/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-table": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-table/-/actor-query-result-serialize-table-2.10.0.tgz", @@ -1102,6 +1609,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-query-result-serialize-table/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-query-result-serialize-tree": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-query-result-serialize-tree/-/actor-query-result-serialize-tree-2.10.0.tgz", @@ -1115,6 +1633,17 @@ "sparqljson-to-tree": "^3.0.1" } }, + "node_modules/@comunica/actor-query-result-serialize-tree/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-entries-sort-cardinality": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-entries-sort-cardinality/-/actor-rdf-join-entries-sort-cardinality-2.10.0.tgz", @@ -1135,6 +1664,17 @@ "asyncjoin": "^1.1.1" } }, + "node_modules/@comunica/actor-rdf-join-inner-hash/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-inner-multi-bind": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-inner-multi-bind/-/actor-rdf-join-inner-multi-bind-2.10.1.tgz", @@ -1150,6 +1690,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-rdf-join-inner-multi-bind/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-inner-multi-empty": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-inner-multi-empty/-/actor-rdf-join-inner-multi-empty-2.10.1.tgz", @@ -1162,6 +1713,17 @@ "asynciterator": "^3.8.1" } }, + "node_modules/@comunica/actor-rdf-join-inner-multi-empty/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-inner-multi-smallest": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-inner-multi-smallest/-/actor-rdf-join-inner-multi-smallest-2.10.1.tgz", @@ -1175,6 +1737,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-rdf-join-inner-multi-smallest/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-inner-nestedloop": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-inner-nestedloop/-/actor-rdf-join-inner-nestedloop-2.10.1.tgz", @@ -1186,6 +1759,17 @@ "asyncjoin": "^1.1.1" } }, + "node_modules/@comunica/actor-rdf-join-inner-nestedloop/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-inner-none": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-inner-none/-/actor-rdf-join-inner-none-2.10.1.tgz", @@ -1218,6 +1802,17 @@ "asyncjoin": "^1.1.1" } }, + "node_modules/@comunica/actor-rdf-join-inner-symmetrichash/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-minus-hash": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-minus-hash/-/actor-rdf-join-minus-hash-2.10.1.tgz", @@ -1243,6 +1838,28 @@ "rdf-string": "^1.6.1" } }, + "node_modules/@comunica/actor-rdf-join-minus-hash-undef/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, + "node_modules/@comunica/actor-rdf-join-minus-hash/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-optional-bind": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-optional-bind/-/actor-rdf-join-optional-bind-2.10.1.tgz", @@ -1257,6 +1874,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-rdf-join-optional-bind/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-optional-nestedloop": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-optional-nestedloop/-/actor-rdf-join-optional-nestedloop-2.10.1.tgz", @@ -1268,6 +1896,17 @@ "asyncjoin": "^1.1.1" } }, + "node_modules/@comunica/actor-rdf-join-optional-nestedloop/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-join-selectivity-variable-counting": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-join-selectivity-variable-counting/-/actor-rdf-join-selectivity-variable-counting-2.10.0.tgz", @@ -1298,6 +1937,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/actor-rdf-metadata-accumulate-cardinality/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-metadata-accumulate-pagesize": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-metadata-accumulate-pagesize/-/actor-rdf-metadata-accumulate-pagesize-2.10.0.tgz", @@ -1462,6 +2112,28 @@ "relative-to-absolute-iri": "^1.0.7" } }, + "node_modules/@comunica/actor-rdf-parse-html-script/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, + "node_modules/@comunica/actor-rdf-parse-html/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-parse-jsonld": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-jsonld/-/actor-rdf-parse-jsonld-2.10.2.tgz", @@ -1477,6 +2149,17 @@ "stream-to-string": "^1.2.0" } }, + "node_modules/@comunica/actor-rdf-parse-jsonld/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-parse-n3": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-n3/-/actor-rdf-parse-n3-2.10.0.tgz", @@ -1487,6 +2170,17 @@ "n3": "^1.17.0" } }, + "node_modules/@comunica/actor-rdf-parse-n3/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-parse-rdfxml": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-rdfxml/-/actor-rdf-parse-rdfxml-2.10.0.tgz", @@ -1497,10 +2191,21 @@ "rdfxml-streaming-parser": "^2.2.3" } }, - "node_modules/@comunica/actor-rdf-parse-shaclc": { + "node_modules/@comunica/actor-rdf-parse-rdfxml/node_modules/@comunica/types": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-shaclc/-/actor-rdf-parse-shaclc-2.10.0.tgz", - "integrity": "sha512-i6tmuZuS+RtDiSXpQc3s/PxtCqwIguo4ANmVB20PK4VWgQgBwoPG7LlNcJ0xmuH/3Bv6C2Agn18PLF6dZX+fKw==", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, + "node_modules/@comunica/actor-rdf-parse-shaclc": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-shaclc/-/actor-rdf-parse-shaclc-2.10.0.tgz", + "integrity": "sha512-i6tmuZuS+RtDiSXpQc3s/PxtCqwIguo4ANmVB20PK4VWgQgBwoPG7LlNcJ0xmuH/3Bv6C2Agn18PLF6dZX+fKw==", "dependencies": { "@comunica/bus-rdf-parse": "^2.10.0", "@comunica/types": "^2.10.0", @@ -1511,6 +2216,17 @@ "stream-to-string": "^1.2.0" } }, + "node_modules/@comunica/actor-rdf-parse-shaclc/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-parse-xml-rdfa": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-xml-rdfa/-/actor-rdf-parse-xml-rdfa-2.10.0.tgz", @@ -1521,6 +2237,17 @@ "rdfa-streaming-parser": "^2.0.1" } }, + "node_modules/@comunica/actor-rdf-parse-xml-rdfa/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-resolve-hypermedia-links-next": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-resolve-hypermedia-links-next/-/actor-rdf-resolve-hypermedia-links-next-2.10.0.tgz", @@ -1569,6 +2296,17 @@ "rdf-terms": "^1.11.0" } }, + "node_modules/@comunica/actor-rdf-resolve-hypermedia-qpf/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-resolve-hypermedia-sparql": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-resolve-hypermedia-sparql/-/actor-rdf-resolve-hypermedia-sparql-2.10.2.tgz", @@ -1588,6 +2326,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-rdf-resolve-hypermedia-sparql/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-resolve-quad-pattern-federated": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-resolve-quad-pattern-federated/-/actor-rdf-resolve-quad-pattern-federated-2.10.1.tgz", @@ -1608,6 +2357,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-rdf-resolve-quad-pattern-federated/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-resolve-quad-pattern-hypermedia": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/-/actor-rdf-resolve-quad-pattern-hypermedia-2.10.1.tgz", @@ -1636,6 +2396,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/actor-rdf-resolve-quad-pattern-hypermedia/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source/-/actor-rdf-resolve-quad-pattern-rdfjs-source-2.10.0.tgz", @@ -1651,6 +2422,17 @@ "rdf-terms": "^1.11.0" } }, + "node_modules/@comunica/actor-rdf-resolve-quad-pattern-rdfjs-source/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-resolve-quad-pattern-string-source": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-resolve-quad-pattern-string-source/-/actor-rdf-resolve-quad-pattern-string-source-2.10.0.tgz", @@ -1667,6 +2449,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-rdf-resolve-quad-pattern-string-source/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-serialize-jsonld": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-serialize-jsonld/-/actor-rdf-serialize-jsonld-2.10.0.tgz", @@ -1677,6 +2470,17 @@ "jsonld-streaming-serializer": "^2.1.0" } }, + "node_modules/@comunica/actor-rdf-serialize-jsonld/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-serialize-n3": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-serialize-n3/-/actor-rdf-serialize-n3-2.10.0.tgz", @@ -1687,6 +2491,17 @@ "n3": "^1.17.0" } }, + "node_modules/@comunica/actor-rdf-serialize-n3/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-serialize-shaclc": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-serialize-shaclc/-/actor-rdf-serialize-shaclc-2.10.0.tgz", @@ -1699,6 +2514,17 @@ "shaclc-write": "^1.4.2" } }, + "node_modules/@comunica/actor-rdf-serialize-shaclc/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-update-hypermedia-patch-sparql-update": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-update-hypermedia-patch-sparql-update/-/actor-rdf-update-hypermedia-patch-sparql-update-2.10.2.tgz", @@ -1716,6 +2542,17 @@ "readable-stream": "^4.4.2" } }, + "node_modules/@comunica/actor-rdf-update-hypermedia-patch-sparql-update/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-update-hypermedia-put-ldp": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-update-hypermedia-put-ldp/-/actor-rdf-update-hypermedia-put-ldp-2.10.2.tgz", @@ -1732,6 +2569,17 @@ "cross-fetch": "^4.0.0" } }, + "node_modules/@comunica/actor-rdf-update-hypermedia-put-ldp/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-update-hypermedia-sparql": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-update-hypermedia-sparql/-/actor-rdf-update-hypermedia-sparql-2.10.2.tgz", @@ -1749,6 +2597,17 @@ "stream-to-string": "^1.2.0" } }, + "node_modules/@comunica/actor-rdf-update-hypermedia-sparql/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-update-quads-hypermedia": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-update-quads-hypermedia/-/actor-rdf-update-quads-hypermedia-2.10.2.tgz", @@ -1765,6 +2624,17 @@ "lru-cache": "^10.0.0" } }, + "node_modules/@comunica/actor-rdf-update-quads-hypermedia/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/actor-rdf-update-quads-rdfjs-store": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-update-quads-rdfjs-store/-/actor-rdf-update-quads-rdfjs-store-2.10.2.tgz", @@ -1779,6 +2649,17 @@ "rdf-string": "^1.6.1" } }, + "node_modules/@comunica/actor-rdf-update-quads-rdfjs-store/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bindings-factory": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/bindings-factory/-/bindings-factory-2.10.1.tgz", @@ -1799,6 +2680,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/bus-context-preprocess/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-dereference": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/bus-dereference/-/bus-dereference-2.10.0.tgz", @@ -1823,6 +2715,17 @@ "@rdfjs/types": "*" } }, + "node_modules/@comunica/bus-dereference/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-hash-bindings": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/bus-hash-bindings/-/bus-hash-bindings-2.10.0.tgz", @@ -1832,6 +2735,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/bus-hash-bindings/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-http": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/bus-http/-/bus-http-2.10.2.tgz", @@ -1871,6 +2785,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/bus-optimize-query-operation/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-query-operation": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/bus-query-operation/-/bus-query-operation-2.10.1.tgz", @@ -1888,6 +2813,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/bus-query-operation/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-query-parse": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/bus-query-parse/-/bus-query-parse-2.10.0.tgz", @@ -1908,6 +2844,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/bus-query-result-serialize/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-rdf-join": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-join/-/bus-rdf-join-2.10.1.tgz", @@ -1934,6 +2881,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/bus-rdf-join-entries-sort/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-rdf-join-selectivity": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-join-selectivity/-/bus-rdf-join-selectivity-2.10.0.tgz", @@ -1944,24 +2902,57 @@ "@comunica/types": "^2.10.0" } }, - "node_modules/@comunica/bus-rdf-metadata": { + "node_modules/@comunica/bus-rdf-join-selectivity/node_modules/@comunica/types": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-metadata/-/bus-rdf-metadata-2.10.0.tgz", - "integrity": "sha512-LRUnHVqIzyUlmPKPNAYOusCF53iN8KEX7l/VinlA7NH3XBLhTkFoth26MVqIVtjtdH0hVfUVpkwy2kFEJpGldw==", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", "dependencies": { - "@comunica/core": "^2.10.0", - "@rdfjs/types": "*" + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" } }, - "node_modules/@comunica/bus-rdf-metadata-accumulate": { + "node_modules/@comunica/bus-rdf-join/node_modules/@comunica/types": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-metadata-accumulate/-/bus-rdf-metadata-accumulate-2.10.0.tgz", - "integrity": "sha512-XG/3s4a3yGpYt4H+sn9T2zTaUxLG+37dmhRhXv2cBmR4gaCXkglERPaOrQygHldEF+4ITF3RmXHCgANsQ1AwQg==", - "dependencies": { + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, + "node_modules/@comunica/bus-rdf-metadata": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-metadata/-/bus-rdf-metadata-2.10.0.tgz", + "integrity": "sha512-LRUnHVqIzyUlmPKPNAYOusCF53iN8KEX7l/VinlA7NH3XBLhTkFoth26MVqIVtjtdH0hVfUVpkwy2kFEJpGldw==", + "dependencies": { + "@comunica/core": "^2.10.0", + "@rdfjs/types": "*" + } + }, + "node_modules/@comunica/bus-rdf-metadata-accumulate": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-metadata-accumulate/-/bus-rdf-metadata-accumulate-2.10.0.tgz", + "integrity": "sha512-XG/3s4a3yGpYt4H+sn9T2zTaUxLG+37dmhRhXv2cBmR4gaCXkglERPaOrQygHldEF+4ITF3RmXHCgANsQ1AwQg==", + "dependencies": { "@comunica/core": "^2.10.0", "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/bus-rdf-metadata-accumulate/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-rdf-metadata-extract": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-metadata-extract/-/bus-rdf-metadata-extract-2.10.0.tgz", @@ -2020,6 +3011,17 @@ "@comunica/core": "^2.10.0" } }, + "node_modules/@comunica/bus-rdf-resolve-hypermedia-links/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-rdf-resolve-quad-pattern": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-resolve-quad-pattern/-/bus-rdf-resolve-quad-pattern-2.10.0.tgz", @@ -2033,6 +3035,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/bus-rdf-resolve-quad-pattern/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/bus-rdf-serialize": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-serialize/-/bus-rdf-serialize-2.10.0.tgz", @@ -2067,6 +3080,17 @@ "stream-to-string": "^1.2.0" } }, + "node_modules/@comunica/bus-rdf-update-quads/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/config-query-sparql": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/@comunica/config-query-sparql/-/config-query-sparql-2.7.0.tgz", @@ -2084,6 +3108,17 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/context-entries/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/core": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/core/-/core-2.10.0.tgz", @@ -2096,6 +3131,17 @@ "node": ">=14.0" } }, + "node_modules/@comunica/core/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/data-factory": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/@comunica/data-factory/-/data-factory-2.7.0.tgz", @@ -2133,6 +3179,17 @@ "process": "^0.11.10" } }, + "node_modules/@comunica/logger-pretty/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/logger-void": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/logger-void/-/logger-void-2.10.0.tgz", @@ -2141,6 +3198,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/logger-void/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/mediator-all": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/mediator-all/-/mediator-all-2.10.0.tgz", @@ -2158,6 +3226,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/mediator-combine-pipeline/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/mediator-combine-union": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/mediator-combine-union/-/mediator-combine-union-2.10.0.tgz", @@ -2178,6 +3257,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/mediator-join-coefficients-fixed/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/mediator-number": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/mediator-number/-/mediator-number-2.10.0.tgz", @@ -2235,6 +3325,17 @@ "@comunica/types": "^2.10.0" } }, + "node_modules/@comunica/metadata/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/query-sparql": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@comunica/query-sparql/-/query-sparql-2.10.2.tgz", @@ -2524,6 +3625,28 @@ "comunica-sparql-file-http": "bin/http.js" } }, + "node_modules/@comunica/query-sparql-file/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, + "node_modules/@comunica/query-sparql/node_modules/@comunica/types": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.8.1", + "sparqlalgebrajs": "^4.2.0" + } + }, "node_modules/@comunica/runner": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/runner/-/runner-2.10.0.tgz", @@ -2552,7 +3675,7 @@ "comunica-run": "bin/run.js" } }, - "node_modules/@comunica/types": { + "node_modules/@comunica/runner-cli/node_modules/@comunica/types": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", @@ -2563,6 +3686,18 @@ "sparqlalgebrajs": "^4.2.0" } }, + "node_modules/@comunica/types": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-3.1.0.tgz", + "integrity": "sha512-+1PTc2xkvUVr1GlhLP1W0GzRVrOgJs5v/3oKHoUWByf3KpwXWLGuQ4/ZHcZxcn4FJQm19FQlZW2wECiq9L4LYw==", + "dev": true, + "dependencies": { + "@rdfjs/types": "*", + "@types/yargs": "^17.0.24", + "asynciterator": "^3.9.0", + "sparqlalgebrajs": "^4.3.3" + } + }, "node_modules/@dabh/diagnostics": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", @@ -2587,11 +3722,11 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.12.1.tgz", - "integrity": "sha512-/dJtxtvoN2vRXip6xUrEyzthhzVUOKL8L9YNq25HpMwqiqrJTK70/dOp6GM8oTVQ87UPyJBiiCxQY2+cvg2XWw==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.13.1.tgz", + "integrity": "sha512-2G4Vu6OHw4+XTrp7AGIcOEezpPEoVrWg2JTK1v/exEKSLYquZkUdd+m4yOL3/UZ6bTj7hmXwrmYzW76BnLCkJQ==", "dependencies": { - "@elastic/transport": "^8.4.0", + "@elastic/transport": "~8.4.1", "tslib": "^2.4.0" }, "engines": { @@ -2599,9 +3734,9 @@ } }, "node_modules/@elastic/transport": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.4.0.tgz", - "integrity": "sha512-Yb3fDa7yGD0ca3uMbL64M3vM1cE5h5uHmBcTjkdB4VpCasRNKSd09iDpwqX8zX1tbBtxcaKYLceKthWvPeIxTw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.4.1.tgz", + "integrity": "sha512-/SXVuVnuU5b4dq8OFY4izG+dmGla185PcoqgK6+AJMpmOeY1QYVNbWtCwvSvoAANN5D/wV+EBU8+x7Vf9EphbA==", "dependencies": { "debug": "^4.3.4", "hpagent": "^1.0.0", @@ -2677,47 +3812,25 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "engines": { "node": ">=14" } @@ -2736,28 +3849,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -2772,11 +3863,19 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, + "node_modules/@inquirer/figures": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.2.tgz", + "integrity": "sha512-4F1MBwVr3c/m4bAUef6LgkvBfSjzwH+OfldgHqcuacWwSUetFebM2wi58WfG9uk1rR98U6GwLed4asLJbwdV5w==", + "engines": { + "node": ">=18" + } + }, "node_modules/@jeswr/prefixcc": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jeswr/prefixcc/-/prefixcc-1.2.1.tgz", @@ -2803,11 +3902,11 @@ "dev": true }, "node_modules/@ljharb/through": { - "version": "2.3.12", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.12.tgz", - "integrity": "sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==", + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", "dependencies": { - "call-bind": "^1.0.5" + "call-bind": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -2849,149 +3948,159 @@ } }, "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", + "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz", - "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", + "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", "dev": true, "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.0.0", + "@octokit/request": "^9.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", - "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", + "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", "dev": true, "dependencies": { - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", - "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", + "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", "dev": true, "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^9.0.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.0.tgz", - "integrity": "sha512-NKi0bJEZqOSbBLMv9kdAcuocpe05Q2xAXNLTGi0HN2GSMFJHNZuSoPNa0tcQFTOFCKe+ZaYBZ3lpXh1yxgUDCA==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.0.tgz", + "integrity": "sha512-n4znWfRinnUQF6TPyxs7EctSAA3yVSP4qlJP2YgI3g9d4Ae2n5F3XDOjbUluKRxPU3rfsgpOboI4O4VtPc6Ilg==", "dev": true, "dependencies": { - "@octokit/types": "^12.6.0" + "@octokit/types": "^13.5.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-retry": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", - "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.1.tgz", + "integrity": "sha512-G9Ue+x2odcb8E1XIPhaFBnTTIrrUDfXN05iFXiqhR+SeeeDMMILcAnysOsxUpEWcQp2e5Ft397FCXTcPkiPkLw==", "dev": true, "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", + "@octokit/request-error": "^6.0.0", + "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-throttling": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", - "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.0.tgz", + "integrity": "sha512-B5YTToSRTzNSeEyssnrT7WwGhpIdbpV9NKIs3KyTWHX6PhpYn7gqF/+lL3BvsASBM3Sg5BAUYk7KZx5p/Ec77w==", "dev": true, "dependencies": { - "@octokit/types": "^12.2.0", + "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "^5.0.0" + "@octokit/core": "^6.0.0" } }, "node_modules/@octokit/request": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.2.0.tgz", - "integrity": "sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.1.tgz", + "integrity": "sha512-pyAguc0p+f+GbQho0uNetNQMmLG1e80WjkIaqqgUkihqUp0boRU6nKItXO4VWnr+nbZiLGEyy4TeKRwqaLvYgw==", "dev": true, "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/endpoint": "^10.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", - "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.1.tgz", + "integrity": "sha512-1mw1gqT3fR/WFvnoVpY/zUM2o/XkMs/2AszUUG9I69xn0JFLv6PGkPhNk5lbfvROs79wiS0bqiJNxfCZcRJJdg==", "dev": true, "dependencies": { - "@octokit/types": "^12.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^13.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^20.0.0" + "@octokit/openapi-types": "^22.2.0" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, "node_modules/@pnpm/config.env-replace": { @@ -3054,10 +4163,16 @@ "node": ">=v12.22.12" } }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true + }, "node_modules/@semantic-release/commit-analyzer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", - "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz", + "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==", "dev": true, "dependencies": { "conventional-changelog-angular": "^7.0.0", @@ -3069,7 +4184,7 @@ "micromatch": "^4.0.2" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -3085,15 +4200,15 @@ } }, "node_modules/@semantic-release/github": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", - "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.0.5.tgz", + "integrity": "sha512-hmuCDkfru/Uc9+ZBNOSremAupu6BCslvOVDiG0wYcL8TQodCycp6uvwDyeym1H0M4l3ob9c0s0xMBiZjjXQ2yA==", "dev": true, "dependencies": { - "@octokit/core": "^5.0.0", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-retry": "^6.0.0", - "@octokit/plugin-throttling": "^8.0.0", + "@octokit/core": "^6.0.0", + "@octokit/plugin-paginate-rest": "^11.0.0", + "@octokit/plugin-retry": "^7.0.0", + "@octokit/plugin-throttling": "^9.0.0", "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", "debug": "^4.3.4", @@ -3101,14 +4216,14 @@ "globby": "^14.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", + "issue-parser": "^7.0.0", "lodash-es": "^4.17.21", "mime": "^4.0.0", "p-filter": "^4.0.0", "url-join": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -3159,19 +4274,19 @@ } }, "node_modules/@semantic-release/npm": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.2.tgz", - "integrity": "sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", + "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", "dev": true, "dependencies": { "@semantic-release/error": "^4.0.0", "aggregate-error": "^5.0.0", - "execa": "^8.0.0", + "execa": "^9.0.0", "fs-extra": "^11.0.0", "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.0.0", + "npm": "^10.5.0", "rc": "^1.2.8", "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", @@ -3179,30 +4294,270 @@ "tempy": "^3.0.0" }, "engines": { - "node": "^18.17 || >=20" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/@semantic-release/npm/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=14.14" - } - }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", - "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.1.0.tgz", + "integrity": "sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^7.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/npm/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz", + "integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/normalize-package-data": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/pretty-ms": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz", + "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==", + "dev": true, + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/type-fest": { + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.3.tgz", + "integrity": "sha512-Q08/0IrpvM+NMY9PA2rti9Jb+JejTddwmwmVQGskAlhtcrw1wsRzoR6ode6mR+OAabNa75w/dxedSUY2mlphaQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz", + "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==", "dev": true, "dependencies": { "conventional-changelog-angular": "^7.0.0", @@ -3217,7 +4572,7 @@ "read-pkg-up": "^11.0.0" }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=20.8.1" }, "peerDependencies": { "semantic-release": ">=20.1.0" @@ -3235,6 +4590,99 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/release-notes-generator/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/normalize-package-data": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", + "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", + "deprecated": "Renamed to read-package-up", + "dev": true, + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/type-fest": { + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.3.tgz", + "integrity": "sha512-Q08/0IrpvM+NMY9PA2rti9Jb+JejTddwmwmVQGskAlhtcrw1wsRzoR6ode6mR+OAabNa75w/dxedSUY2mlphaQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -3326,29 +4774,30 @@ } }, "node_modules/@triply/utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@triply/utils/-/utils-3.1.1.tgz", - "integrity": "sha512-Vbo/AXehk5OzfEOfI20bwvfirQWfD2Tg4xydm+TzLjb11jl9ZRFNuFcuc9cnCSXiXdub31qXsk6zHJ+d6VSobg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@triply/utils/-/utils-3.1.2.tgz", + "integrity": "sha512-tvTH1DzifXBG0nd0QY0DNAa1s6LkqAU8TfCLNB0rgiFclXH7X4htVTTsIixlVQZpWT4TZ7SrizepNgPhCa18eA==", "dependencies": { - "@elastic/elasticsearch": "^8.9.0", - "@types/jsonld": "^1.5.8", + "@elastic/elasticsearch": "^8.11.0", + "@types/jsonld": "^1.5.13", "autocast": "0.0.4", "commander": "^10.0.1", "deepdash": "^5.3.9", "find-up": "6.3.0", - "fs-extra": "^11.1.1", - "jsonld": "^8.3.1", + "fs-extra": "^11.2.0", + "jsonld": "^8.3.2", "lodash-es": "^4.17.21", "n3": "^1.17.1", "numeral": "^2.0.6", "pumpify": "^2.0.1", + "rdf-js": "^4.0.2", "rdf-string": "^1.6.3", "source-map-support": "^0.5.21", "sparqljs": "3.7.1", "through2": "^4.0.2", - "ts-essentials": "^9.4.0", + "ts-essentials": "^9.4.1", "url-parse": "^1.5.10", - "yaml": "^2.3.2" + "yaml": "^2.3.4" }, "bin": { "auditor": "lib/bin/auditor.js", @@ -3380,9 +4829,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", - "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", + "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", "dev": true }, "node_modules/@types/chai-as-promised": { @@ -3440,21 +4889,15 @@ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, "node_modules/@types/jsonld": { "version": "1.5.13", "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.13.tgz", "integrity": "sha512-n7fUU6W4kSYK8VQlf/LsE9kddBHPKhODoVOjsZswmve+2qLwBy6naWxs/EiuSZN9NU0N06Ra01FR+j87C62T0A==" }, "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", "dev": true }, "node_modules/@types/lodash.kebabcase": { @@ -3493,9 +4936,9 @@ } }, "node_modules/@types/node": { - "version": "20.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", - "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", + "version": "20.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", + "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", "dependencies": { "undici-types": "~5.26.4" } @@ -3522,9 +4965,9 @@ } }, "node_modules/@types/semver": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", - "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==" + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" }, "node_modules/@types/spark-md5": { "version": "3.0.4", @@ -3577,33 +5020,32 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3612,26 +5054,25 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3640,16 +5081,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3657,25 +5098,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "tsutils": "^3.21.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "*" }, "peerDependenciesMeta": { "typescript": { @@ -3684,12 +5125,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3697,22 +5138,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3725,41 +5165,42 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3805,9 +5246,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -3821,26 +5262,38 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/aggregate-error/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", + "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -3890,17 +5343,35 @@ } }, "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, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/ansi-styles/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -3953,25 +5424,6 @@ "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -3981,80 +5433,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", - "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", - "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", @@ -4082,6 +5460,15 @@ "resolved": "https://registry.npmjs.org/arrayify-stream/-/arrayify-stream-2.0.1.tgz", "integrity": "sha512-z8fB6PtmnewQpFB53piS2d1KlUi3BPMICH2h7leCOUXpQcwvZ4GbHHSpdKoUrgLMR6b4Qan/uDe1St3Ao3yIHg==" }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -4097,16 +5484,16 @@ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/asynciterator": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.8.1.tgz", - "integrity": "sha512-SmdG0FUY3pYGOZZGdYq8Qb/DCRDXBFZUk08V1/4lbBXdAQvcC3Kxzz9FUDPBTik7VAVltt4cZirAPtJv3gOpEw==" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.9.0.tgz", + "integrity": "sha512-bwLLTAnoE6Ap6XdjK/j8vDk2Vi9p3ojk0PFwM0SwktAG1k8pfRJF9ng+mmkaRFKdZCQQlOxcWnvOmX2NQ1HV0g==" }, "node_modules/asyncjoin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/asyncjoin/-/asyncjoin-1.1.2.tgz", - "integrity": "sha512-zi6B+C3GgEu8qrmFn3gDd58cbGNaNFW3s8DJmCxUOjQwqWZcQO6dEoZBWl56+QGQyX0da0FRX1fsAyYB9LmwJA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/asyncjoin/-/asyncjoin-1.2.1.tgz", + "integrity": "sha512-VNZDhD5kZplSFB1/e5Wz9ButxpOr3D3LYTr9IJTdBB22M0L+kJl0zsuVnNYNsexQUT2VxAaB+Z5gSOlvtG3eLg==", "dependencies": { - "asynciterator": "^3.6.0" + "asynciterator": "^3.9.0" } }, "node_modules/asynckit": { @@ -4162,9 +5549,9 @@ ] }, "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", "dev": true }, "node_modules/bignumber.js": { @@ -4176,12 +5563,15 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { @@ -4219,21 +5609,21 @@ "dev": true }, "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, + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -4273,27 +5663,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==" }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -4328,12 +5697,26 @@ } }, "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=6" + } + }, + "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, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4363,15 +5746,15 @@ } }, "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, "dependencies": { "check-error": "^1.0.2" }, "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "chai": ">= 2.1.2 < 6" } }, "node_modules/chalk": { @@ -4486,13 +5869,13 @@ } }, "node_modules/cli-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", - "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", "dev": true, "dependencies": { "d": "^1.0.1", - "es5-ext": "^0.10.61", + "es5-ext": "^0.10.64", "es6-iterator": "^2.0.3", "memoizee": "^0.4.15", "timers-ext": "^0.1.7" @@ -4533,21 +5916,6 @@ "npm": ">=5.0.0" } }, - "node_modules/cli-highlight/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/cli-highlight/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4575,24 +5943,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/cli-highlight/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cli-highlight/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/cli-highlight/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4652,94 +6002,18 @@ } }, "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "dependencies": { "string-width": "^4.2.0" }, "engines": { "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-table3/node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", - "dev": true - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", - "dev": true, - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, "node_modules/cli-width": { @@ -4763,36 +6037,6 @@ "node": ">=12" } }, - "node_modules/cliui/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -4848,12 +6092,6 @@ "simple-swizzle": "^0.2.2" } }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -4935,9 +6173,9 @@ } }, "node_modules/componentsjs/node_modules/@types/node": { - "version": "18.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", - "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", "dependencies": { "undici-types": "~5.26.4" } @@ -4989,6 +6227,18 @@ "node": ">=16" } }, + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/conventional-commits-filter": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", @@ -5016,6 +6266,30 @@ "node": ">=16" } }, + "node_modules/conventional-commits-parser/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -5111,13 +6385,16 @@ "integrity": "sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg==" }, "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "dev": true, "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/data-uri-to-buffer": { @@ -5128,6 +6405,57 @@ "node": ">= 12" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5150,17 +6478,39 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { - "node": ">=10" + "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, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -5256,12 +6606,6 @@ "node": ">=0.4.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -5403,14 +6747,14 @@ } }, "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "stream-shift": "^1.0.2" } }, "node_modules/duplexify/node_modules/readable-stream": { @@ -5455,28 +6799,162 @@ "once": "^1.4.0" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-ci": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz", + "integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==", + "dev": true, + "dependencies": { + "execa": "^8.0.0", + "java-properties": "^1.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, "engines": { - "node": ">=0.12" + "node": ">=14" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/env-ci": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz", - "integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==", + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "dependencies": { - "execa": "^8.0.0", - "java-properties": "^1.0.2" - }, "engines": { - "node": "^18.17 || >=20.6.1" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/env-paths": { @@ -5497,25 +6975,23 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/error-ex/node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, "node_modules/es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", + "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", @@ -5523,15 +6999,16 @@ "globalthis": "^1.0.3", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "internal-slot": "^1.0.7", "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", @@ -5539,17 +7016,17 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.5", "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", + "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -5558,12 +7035,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -5583,27 +7054,30 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "es-errors": "^1.3.0" }, "engines": { "node": ">= 0.4" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -5624,14 +7098,15 @@ } }, "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, "hasInstallScript": true, "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", "next-tick": "^1.1.0" }, "engines": { @@ -5655,13 +7130,16 @@ } }, "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dev": true, "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/es6-weak-map": { @@ -5696,15 +7174,15 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -5750,18 +7228,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", @@ -5774,194 +7240,46 @@ "eslint": ">=7.0.0" } }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-config-standard-with-typescript": { - "version": "40.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-40.0.0.tgz", - "integrity": "sha512-GXUJcwIXiTQaS3H4etv8a1lejVVdZYaxZNz3g7vt6GoJosQqMTurbmSC4FVGyHiGT/d1TjFr3+47A3xsHhsG+Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/parser": "^6.4.0", - "eslint-config-standard": "17.1.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.4.0", - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0", - "typescript": "*" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es-x": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", - "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.1.2" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">=8.10.0" }, "funding": { - "url": "https://github.com/sponsors/ota-meshi" + "url": "https://github.com/sponsors/mysticatea" }, "peerDependencies": { - "eslint": ">=8" + "eslint": ">=4.19.1" } }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" }, "engines": { - "node": ">=4" + "node": ">=8.10.0" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "eslint": ">=5.16.0" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { + "node_modules/eslint-plugin-node/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -5970,82 +7288,71 @@ "semver": "bin/semver.js" } }, - "node_modules/eslint-plugin-n": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", - "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^13.24.0", - "ignore": "^5.2.4", - "is-builtin-module": "^3.2.1", - "is-core-module": "^2.12.1", - "minimatch": "^3.1.2", - "resolve": "^1.22.2", - "semver": "^7.5.3" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" }, "engines": { - "node": ">=16.0.0" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "*" + "node": ">=8.0.0" } }, - "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6" }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=4" } }, "node_modules/eslint-visitor-keys": { @@ -6076,31 +7383,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -6117,24 +7399,31 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=7.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -6172,18 +7461,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6247,6 +7524,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -6276,6 +7568,15 @@ "node": ">=0.10" } }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -6288,7 +7589,7 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -6297,6 +7598,15 @@ "node": ">=4.0" } }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -6324,12 +7634,6 @@ "node": ">=6" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -6339,40 +7643,28 @@ } }, "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": ">=10" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -6382,12 +7674,6 @@ "type": "^2.7.2" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -6406,6 +7692,12 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -6483,9 +7775,9 @@ } }, "node_modules/fetch-sparql-endpoint": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fetch-sparql-endpoint/-/fetch-sparql-endpoint-4.1.1.tgz", - "integrity": "sha512-q0TLXPoAM/rA3OaHH4LvfJzaN8vVmaEVNNFtH3xsz9L40YIiAWSdbg2c/Ze/JL75kf8Iktbh1tItHZoottCh2Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fetch-sparql-endpoint/-/fetch-sparql-endpoint-4.2.1.tgz", + "integrity": "sha512-nRaexc3QCO95bjESf4ngNQ1J+qNtVzxFGlPUopqOIVHm/j6IDhWg996kk7fBM98Mmo0uM9b6uiTbXmJHOrnqYA==", "dependencies": { "@rdfjs/types": "*", "@smessie/readable-web-to-node-stream": "^3.0.3", @@ -6515,25 +7807,30 @@ } }, "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/figures/node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/file-entry-cache": { @@ -6549,9 +7846,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -6596,15 +7893,16 @@ } }, "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", "dev": true, "dependencies": { - "semver-regex": "^4.0.5" + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6634,9 +7932,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/fn.name": { @@ -6756,6 +8054,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function-timeout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/function.prototype.name": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", @@ -6791,18 +8101,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-func-name": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", @@ -6843,12 +8141,12 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6871,18 +8169,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", - "dev": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -6950,6 +8236,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6996,26 +8283,6 @@ "glob": "^7.1.6" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/global-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", @@ -7048,11 +8315,12 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7116,17 +8384,167 @@ "resolved": "https://registry.npmjs.org/graphql-to-sparql/-/graphql-to-sparql-3.0.1.tgz", "integrity": "sha512-A+RwB99o66CUj+XuqtP/u3P7fGS/qF6P+/jhNl1BE/JZ2SCnkrODvV0LADuJeCDmPh45fDhq+GTDVoN1ZQHYFw==", "dependencies": { - "@rdfjs/types": "*", - "graphql": "^15.5.2", - "jsonld-context-parser": "^2.0.2", - "minimist": "^1.2.0", - "rdf-data-factory": "^1.1.0", - "sparqlalgebrajs": "^4.0.0" + "@rdfjs/types": "*", + "graphql": "^15.5.2", + "jsonld-context-parser": "^2.0.2", + "minimist": "^1.2.0", + "rdf-data-factory": "^1.1.0", + "sparqlalgebrajs": "^4.0.0" + }, + "bin": { + "graphql-to-sparql": "bin/graphql-to-sparql.js" + } + }, + "node_modules/gts": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gts/-/gts-5.3.0.tgz", + "integrity": "sha512-/V0nbaWLBv8g0v2kol5M7Vf+kHXk19Ew5sa3wQJXeUaccesXg7AFo7eEInoIpR+aIJ3QDjoYt4zHYeFr8w8rng==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "chalk": "^4.1.2", + "eslint": "8.53.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-prettier": "5.1.3", + "execa": "^5.0.0", + "inquirer": "^7.3.3", + "json5": "^2.1.3", + "meow": "^9.0.0", + "ncp": "^2.0.0", + "prettier": "3.1.1", + "rimraf": "3.0.2", + "write-file-atomic": "^4.0.0" + }, + "bin": { + "gts": "build/src/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "typescript": ">=3" + } + }, + "node_modules/gts/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/gts/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, + "engines": { + "node": ">= 10" + } + }, + "node_modules/gts/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/gts/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, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gts/node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/gts/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/gts/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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/gts/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/gts/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, - "bin": { - "graphql-to-sparql": "bin/graphql-to-sparql.js" + "engines": { + "node": ">=8" } }, + "node_modules/gts/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -7148,6 +8566,15 @@ "uglify-js": "^3.1.4" } }, + "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, + "engines": { + "node": ">=6" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -7223,9 +8650,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -7264,15 +8691,27 @@ } }, "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "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, "dependencies": { - "lru-cache": "^10.0.1" + "lru-cache": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" + } + }, + "node_modules/hosted-git-info/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, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/hpagent": { @@ -7302,9 +8741,9 @@ } }, "node_modules/http-link-header": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.1.tgz", - "integrity": "sha512-mW3N/rTYpCn99s1do0zx6nzFZSwLH9HGfUM4ZqLWJ16ylmYaC2v5eYGqrNTQlByx8AzUgGI+V/32gXPugs1+Sw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", + "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", "engines": { "node": ">=6.0.0" } @@ -7341,12 +8780,12 @@ } }, "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=16.17.0" + "node": ">=10.17.0" } }, "node_modules/husky": { @@ -7404,9 +8843,9 @@ } }, "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -7425,9 +8864,9 @@ } }, "node_modules/import-from-esm": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.3.tgz", - "integrity": "sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", + "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -7438,9 +8877,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, "funding": { "type": "github", @@ -7457,15 +8896,12 @@ } }, "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/index-to-position": { @@ -7484,6 +8920,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7501,17 +8938,17 @@ "dev": true }, "node_modules/inquirer": { - "version": "9.2.15", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", - "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", + "version": "9.2.22", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.22.tgz", + "integrity": "sha512-SqLLa/Oe5rZUagTR9z+Zd6izyatHglbmbvVofo1KzuVB54YHleWzeHNLoR7FOICGOeQSqeLh1cordb3MzhGcEw==", "dependencies": { - "@ljharb/through": "^2.3.12", + "@inquirer/figures": "^1.0.2", + "@ljharb/through": "^2.3.13", "ansi-escapes": "^4.3.2", "chalk": "^5.3.0", "cli-cursor": "^3.1.0", "cli-width": "^4.1.0", "external-editor": "^3.1.0", - "figures": "^3.2.0", "lodash": "^4.17.21", "mute-stream": "1.0.0", "ora": "^5.4.1", @@ -7525,20 +8962,6 @@ "node": ">=18" } }, - "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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/inquirer/node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -7572,22 +8995,6 @@ "ieee754": "^1.1.13" } }, - "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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/inquirer/node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -7704,9 +9111,10 @@ } }, "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-bigint": { "version": "1.0.4", @@ -7753,21 +9161,6 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -7792,6 +9185,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -7817,15 +9225,11 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/is-glob": { @@ -7906,12 +9310,12 @@ } }, "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "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, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/is-promise": { @@ -7937,12 +9341,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8052,9 +9459,9 @@ "dev": true }, "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.0.tgz", + "integrity": "sha512-jgAw78HO3gs9UrKqJNQvfDj9Ouy8Mhu40fbEJ8yXff4MW8+/Fcn9iFjyWUQ6SKbX8ipPk3X5A3AyfYHRu6uVLw==", "dev": true, "dependencies": { "lodash.capitalize": "^4.2.1", @@ -8064,7 +9471,7 @@ "lodash.uniqby": "^4.7.0" }, "engines": { - "node": ">=10.13" + "node": "^18.17 || >=20.6.1" } }, "node_modules/issue-parser/node_modules/lodash.uniqby": { @@ -8150,6 +9557,21 @@ "node": ">=12.0.0" } }, + "node_modules/json-schema-to-typescript/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -8167,15 +9589,15 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, "bin": { "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/jsonfile": { @@ -8219,9 +9641,9 @@ } }, "node_modules/jsonld-context-parser/node_modules/@types/node": { - "version": "18.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.17.tgz", - "integrity": "sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng==", + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", "dependencies": { "undici-types": "~5.26.4" } @@ -8235,9 +9657,9 @@ } }, "node_modules/jsonld-streaming-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-3.3.0.tgz", - "integrity": "sha512-6aWiAsWGZioTB/vNQ3KenREz9ddEOliZoEETi+jLrlL7+vkgMeHjnxyFlGe4UOCU7SVUNPhz/lgLGZjnxgVYtA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-3.4.0.tgz", + "integrity": "sha512-897CloyQgQidfkB04dLM5XaAXVX/cN9A2hvgHJo4y4jRhIpvg3KLMBBfcrswepV2N3T8c/Rp2JeFdWfVsbVZ7g==", "dependencies": { "@bergos/jsonparse": "^1.4.0", "@rdfjs/types": "*", @@ -8323,6 +9745,15 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", @@ -8363,162 +9794,42 @@ } } }, - "node_modules/ky-universal/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/lint-staged": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz", - "integrity": "sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==", - "dev": true, - "dependencies": { - "chalk": "5.3.0", - "commander": "11.1.0", - "debug": "4.3.4", - "execa": "8.0.1", - "lilconfig": "3.0.0", - "listr2": "8.0.1", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.4" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/listr2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz", - "integrity": "sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==", - "dev": true, - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.0.0", - "rfdc": "^1.3.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", - "dev": true - }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", - "dev": true, - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, + "node_modules/ky-universal/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dependencies": { - "ansi-regex": "^6.0.1" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -8675,20 +9986,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8704,22 +10001,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "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", @@ -8731,211 +10012,6 @@ "node": ">=8" } }, - "node_modules/log-update": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", - "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^6.2.0", - "cli-cursor": "^4.0.0", - "slice-ansi": "^7.0.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", - "dev": true, - "dependencies": { - "type-fest": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dev": true, - "dependencies": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", - "dev": true - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/log-update/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", - "dev": true, - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/logform": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", @@ -8952,6 +10028,14 @@ "node": ">= 12.0.0" } }, + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -8962,9 +10046,9 @@ } }, "node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { "node": "14 || >=16.14" } @@ -8978,10 +10062,22 @@ "es5-ext": "~0.10.2" } }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/marked": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.0.tgz", - "integrity": "sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -9011,24 +10107,9 @@ } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", - "dev": true, - "dependencies": { - "type-fest": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, "engines": { "node": ">=14.16" @@ -9059,28 +10140,57 @@ } }, "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", "dev": true, "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", + "d": "^1.0.2", + "es5-ext": "^0.10.64", "es6-weak-map": "^2.0.3", "event-emitter": "^0.3.5", "is-promise": "^2.2.2", "lru-queue": "^0.1.0", "next-tick": "^1.1.0", "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, "engines": { - "node": ">=16.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/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, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9132,12 +10242,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -9156,9 +10266,9 @@ } }, "node_modules/mime": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", - "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz", + "integrity": "sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==", "dev": true, "funding": [ "https://github.com/sponsors/broofa" @@ -9190,15 +10300,20 @@ } }, "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/minimalistic-assert": { @@ -9207,18 +10322,14 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { @@ -9229,6 +10340,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -9242,9 +10367,9 @@ } }, "node_modules/mocha": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", - "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -9276,19 +10401,13 @@ "node": ">= 14.0.0" } }, - "node_modules/mocha/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/cliui": { @@ -9302,24 +10421,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/mocha/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/mocha/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -9340,6 +10441,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -9456,6 +10558,15 @@ "node": ">=10" } }, + "node_modules/mocha/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, + "engines": { + "node": ">=10" + } + }, "node_modules/mocha/node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -9493,9 +10604,9 @@ } }, "node_modules/n3": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.2.tgz", - "integrity": "sha512-BxSM52wYFqXrbQQT5WUEzKUn6qpYV+2L4XZLfn3Gblz2kwZ09S+QxC33WNdVEQy2djenFL8SNkrjejEKlvI6+Q==", + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.3.tgz", + "integrity": "sha512-ZHc24eZi2GIJcJQVxtL6NT3g+mTHRNeTVfXWELzeUOirqLrh2AAyg0nfYZ/kryJWKFSCgO37DGB6Ok3qmGgEcA==", "dependencies": { "queue-microtask": "^1.1.2", "readable-stream": "^4.0.0" @@ -9510,6 +10621,21 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, "node_modules/negotiate": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/negotiate/-/negotiate-1.0.1.tgz", @@ -9586,18 +10712,18 @@ } }, "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "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, "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" } }, "node_modules/normalize-path": { @@ -9610,9 +10736,9 @@ } }, "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, "engines": { "node": ">=14.16" @@ -9622,9 +10748,9 @@ } }, "node_modules/npm": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.4.0.tgz", - "integrity": "sha512-RS7Mx0OVfXlOcQLRePuDIYdFCVBPCNapWHplDK+mh7GDdP/Tvor4ocuybRRPSvfcRb2vjRJt1fHCqw3cr8qACQ==", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.0.tgz", + "integrity": "sha512-wh93uRczgp7HDnPMiLXcCkv2hagdJS0zJ9KT/31d0FoXP02+qgN2AOwpaW85fxRWkinl2rELfPw+CjBXW48/jQ==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -9633,6 +10759,7 @@ "@npmcli/map-workspaces", "@npmcli/package-json", "@npmcli/promise-spawn", + "@npmcli/redact", "@npmcli/run-script", "@sigstore/tuf", "abbrev", @@ -9641,8 +10768,6 @@ "chalk", "ci-info", "cli-columns", - "cli-table3", - "columnify", "fastest-levenshtein", "fs-minipass", "glob", @@ -9678,7 +10803,6 @@ "npm-profile", "npm-registry-fetch", "npm-user-validate", - "npmlog", "p-map", "pacote", "parse-conflict-json", @@ -9698,75 +10822,80 @@ "write-file-atomic" ], "dev": true, + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.2.1", - "@npmcli/config": "^8.0.2", - "@npmcli/fs": "^3.1.0", - "@npmcli/map-workspaces": "^3.0.4", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.1", - "@npmcli/run-script": "^7.0.4", - "@sigstore/tuf": "^2.3.0", + "@npmcli/arborist": "^7.5.2", + "@npmcli/config": "^8.3.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.3", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.2", + "cacache": "^18.0.3", "chalk": "^5.3.0", "ci-info": "^4.0.0", "cli-columns": "^4.0.0", - "cli-table3": "^0.6.3", - "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.10", + "glob": "^10.3.15", "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.1", - "ini": "^4.1.1", - "init-package-json": "^6.0.0", - "is-cidr": "^5.0.3", - "json-parse-even-better-errors": "^3.0.1", - "libnpmaccess": "^8.0.1", - "libnpmdiff": "^6.0.3", - "libnpmexec": "^7.0.4", - "libnpmfund": "^5.0.1", - "libnpmhook": "^10.0.0", - "libnpmorg": "^6.0.1", - "libnpmpack": "^6.0.3", - "libnpmpublish": "^9.0.2", - "libnpmsearch": "^7.0.0", - "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.1", - "make-fetch-happen": "^13.0.0", - "minimatch": "^9.0.3", - "minipass": "^7.0.4", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.2", + "init-package-json": "^6.0.3", + "is-cidr": "^5.0.5", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.2", + "libnpmexec": "^8.1.1", + "libnpmfund": "^5.0.10", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.2", + "libnpmpublish": "^9.0.8", + "libnpmsearch": "^7.0.5", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.2", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.4", + "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^10.0.1", - "nopt": "^7.2.0", - "normalize-package-data": "^6.0.0", + "node-gyp": "^10.1.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.1", "npm-audit-report": "^5.0.0", "npm-install-checks": "^6.3.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.1.0", - "npm-user-validate": "^2.0.0", - "npmlog": "^7.0.1", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.0.1", + "npm-user-validate": "^2.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.6", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.1", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", "qrcode-terminal": "^0.12.0", - "read": "^2.1.0", - "semver": "^7.5.4", - "spdx-expression-parse": "^3.0.1", - "ssri": "^10.0.5", + "read": "^3.0.1", + "semver": "^7.6.2", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", "supports-color": "^9.4.0", - "tar": "^6.2.0", + "tar": "^6.2.1", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.0", + "validate-npm-package-name": "^5.0.1", "which": "^4.0.0", "write-file-atomic": "^5.0.1" }, @@ -9779,40 +10908,15 @@ } }, "node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" + "path-key": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, "engines": { - "node": ">=0.1.90" + "node": ">=8" } }, "node_modules/npm/node_modules/@isaacs/cliui": { @@ -9889,7 +10993,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.0", + "version": "2.2.2", "dev": true, "inBundle": true, "license": "ISC", @@ -9898,49 +11002,51 @@ "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.3.1", + "version": "7.5.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/metavuln-calculator": "^7.1.1", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.1", - "@npmcli/run-script": "^7.0.2", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.5", + "ssri": "^10.0.6", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -9952,16 +11058,16 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.1.0", + "version": "8.3.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", "ci-info": "^4.0.0", - "ini": "^4.1.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", "walk-up-path": "^3.0.1" @@ -9970,35 +11076,8 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.0", + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -10010,7 +11089,7 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.4", + "version": "5.0.7", "dev": true, "inBundle": true, "license": "ISC", @@ -10018,7 +11097,7 @@ "@npmcli/promise-spawn": "^7.0.0", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", @@ -10029,7 +11108,7 @@ } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", + "version": "2.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10038,14 +11117,14 @@ "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", + "version": "3.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -10060,14 +11139,15 @@ } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.0.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", - "pacote": "^17.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5" }, "engines": { @@ -10093,7 +11173,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.0.0", + "version": "5.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10103,7 +11183,7 @@ "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "semver": "^7.5.3" }, "engines": { @@ -10111,7 +11191,7 @@ } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -10123,7 +11203,7 @@ } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.1", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10134,8 +11214,17 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.4", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10144,6 +11233,7 @@ "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", "which": "^4.0.0" }, "engines": { @@ -10161,19 +11251,19 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.1.1", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1" + "@sigstore/protobuf-specs": "^0.3.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/core": { - "version": "0.2.0", + "version": "1.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -10182,51 +11272,53 @@ } }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", + "version": "0.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.2.1", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.1", - "@sigstore/core": "^0.2.0", - "@sigstore/protobuf-specs": "^0.2.1", - "make-fetch-happen": "^13.0.0" + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.3.0", + "version": "2.3.3", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.2.0" + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/verify": { - "version": "0.1.0", + "version": "1.2.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.1", - "@sigstore/core": "^0.2.0", - "@sigstore/protobuf-specs": "^0.2.1" + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -10242,13 +11334,13 @@ } }, "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" + "minimatch": "^9.0.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -10264,7 +11356,7 @@ } }, "node_modules/npm/node_modules/agent-base": { - "version": "7.1.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "MIT", @@ -10321,15 +11413,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", "dev": true, @@ -10337,7 +11420,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.3", + "version": "4.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -10352,12 +11435,15 @@ } }, "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/brace-expansion": { @@ -10369,17 +11455,8 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.2", + "version": "18.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -10438,7 +11515,7 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "4.0.3", + "version": "4.0.5", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -10471,32 +11548,8 @@ "node": ">= 10" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.2", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -10522,40 +11575,12 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/cross-spawn": { "version": "7.0.3", "dev": true, @@ -10620,20 +11645,8 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm/node_modules/diff": { - "version": "5.1.0", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -10730,42 +11743,23 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/gauge": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/glob": { - "version": "10.3.10", + "version": "10.3.15", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -10777,14 +11771,8 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/hasown": { - "version": "2.0.0", + "version": "2.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -10796,7 +11784,7 @@ } }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -10814,7 +11802,7 @@ "license": "BSD-2-Clause" }, "node_modules/npm/node_modules/http-proxy-agent": { - "version": "7.0.0", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -10827,7 +11815,7 @@ } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.2", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "MIT", @@ -10853,7 +11841,7 @@ } }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.4", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -10883,7 +11871,7 @@ } }, "node_modules/npm/node_modules/ini": { - "version": "4.1.1", + "version": "4.1.2", "dev": true, "inBundle": true, "license": "ISC", @@ -10892,15 +11880,15 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.0", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@npmcli/package-json": "^5.0.0", "npm-package-arg": "^11.0.0", "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^7.0.0", + "read": "^3.0.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^5.0.0" @@ -10909,11 +11897,18 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } }, "node_modules/npm/node_modules/ip-regex": { "version": "5.0.0", @@ -10928,12 +11923,12 @@ } }, "node_modules/npm/node_modules/is-cidr": { - "version": "5.0.3", + "version": "5.0.5", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "4.0.3" + "cidr-regex": "^4.0.4" }, "engines": { "node": ">=14" @@ -10990,8 +11985,14 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -11030,52 +12031,50 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.2", + "version": "8.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^11.0.1", - "npm-registry-fetch": "^16.0.0" + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.6", + "version": "6.1.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.2", - "binary-extensions": "^2.2.0", + "@npmcli/arborist": "^7.5.2", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", "diff": "^5.1.0", - "minimatch": "^9.0.0", - "npm-package-arg": "^11.0.1", - "pacote": "^17.0.4", - "tar": "^6.2.0" + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.7", + "version": "8.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/run-script": "^7.0.2", + "@npmcli/arborist": "^7.5.2", + "@npmcli/run-script": "^8.1.0", "ci-info": "^4.0.0", - "npm-package-arg": "^11.0.1", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "proc-log": "^3.0.0", - "read": "^2.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "walk-up-path": "^3.0.1" @@ -11085,112 +12084,112 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.4", + "version": "5.0.10", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1" + "@npmcli/arborist": "^7.5.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.1", + "version": "10.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.2", + "version": "6.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.6", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/run-script": "^7.0.2", - "npm-package-arg": "^11.0.1", - "pacote": "^17.0.4" + "@npmcli/arborist": "^7.5.2", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.4", + "version": "9.0.8", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "ci-info": "^4.0.0", - "normalize-package-data": "^6.0.0", - "npm-package-arg": "^11.0.1", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", "semver": "^7.3.7", "sigstore": "^2.2.0", - "ssri": "^10.0.5" + "ssri": "^10.0.6" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.1", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.1", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" + "npm-registry-fetch": "^17.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.2", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.2", - "json-parse-even-better-errors": "^3.0.0", - "proc-log": "^3.0.0", + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", "semver": "^7.3.7" }, "engines": { @@ -11198,7 +12197,7 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.1.0", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "ISC", @@ -11207,7 +12206,7 @@ } }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.0", + "version": "13.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11221,6 +12220,7 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", "ssri": "^10.0.0" }, @@ -11229,7 +12229,7 @@ } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -11244,7 +12244,7 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "7.0.4", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11265,7 +12265,7 @@ } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.4", + "version": "3.0.5", "dev": true, "inBundle": true, "license": "MIT", @@ -11437,7 +12437,7 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "10.0.1", + "version": "10.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -11460,8 +12460,17 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/nopt": { - "version": "7.2.0", + "version": "7.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11476,7 +12485,7 @@ } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -11500,7 +12509,7 @@ } }, "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11533,13 +12542,13 @@ } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.1", + "version": "11.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" }, @@ -11560,7 +12569,7 @@ } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.0", + "version": "9.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11575,38 +12584,39 @@ } }, "node_modules/npm/node_modules/npm-profile": { - "version": "9.0.0", + "version": "10.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0" + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=18.0.0" } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "16.1.0", + "version": "17.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { + "@npmcli/redact": "^2.0.0", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" + "proc-log": "^4.0.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -11614,21 +12624,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npmlog": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", "dev": true, @@ -11645,32 +12640,31 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "17.0.6", + "version": "18.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", + "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -11700,23 +12694,23 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "1.10.1", + "version": "1.11.1", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.15", + "version": "6.0.16", "dev": true, "inBundle": true, "license": "MIT", @@ -11729,7 +12723,16 @@ } }, "node_modules/npm/node_modules/proc-log": { - "version": "3.0.0", + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -11775,12 +12778,12 @@ } }, "node_modules/npm/node_modules/promzard": { - "version": "1.0.0", + "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "read": "^2.0.0" + "read": "^3.0.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -11795,12 +12798,12 @@ } }, "node_modules/npm/node_modules/read": { - "version": "2.1.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "mute-stream": "~1.0.0" + "mute-stream": "^1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -11815,21 +12818,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/read-package-json": { - "version": "7.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", "dev": true, @@ -11860,13 +12848,10 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.2", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -11874,24 +12859,6 @@ "node": ">=10" } }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -11926,17 +12893,17 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.2.0", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.1.1", - "@sigstore/core": "^0.2.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.2.1", - "@sigstore/tuf": "^2.3.0", - "@sigstore/verify": "^0.1.0" + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -11953,26 +12920,26 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.7.1", + "version": "2.8.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.2", + "version": "8.0.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", "socks": "^2.7.1" }, @@ -11990,14 +12957,24 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", + "version": "2.5.0", "dev": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", @@ -12007,13 +12984,19 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.16", + "version": "3.0.17", "dev": true, "inBundle": true, "license": "CC0-1.0" }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, "node_modules/npm/node_modules/ssri": { - "version": "10.0.5", + "version": "10.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -12091,7 +13074,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.2.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -12162,14 +13145,14 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "2.2.0", + "version": "2.2.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.0", + "@tufjs/models": "2.0.1", "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" + "make-fetch-happen": "^13.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -12215,14 +13198,21 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.0", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -12233,15 +13223,6 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/npm/node_modules/which": { "version": "4.0.0", "dev": true, @@ -12266,15 +13247,6 @@ "node": ">=16" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", "dev": true, @@ -12445,53 +13417,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", - "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", - "dev": true, - "dependencies": { - "array.prototype.filter": "^1.0.3", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -12509,32 +13434,31 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -12618,28 +13542,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ora/node_modules/restore-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", @@ -12655,11 +13557,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, "node_modules/ora/node_modules/string-width": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", @@ -12763,9 +13660,9 @@ } }, "node_modules/p-map": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.1.tgz", - "integrity": "sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", + "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", "dev": true, "engines": { "node": ">=18" @@ -12919,6 +13816,12 @@ "node": "*" } }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -12931,18 +13834,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -13042,20 +13933,32 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/pretty-ms": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz", @@ -13175,6 +14078,15 @@ } ] }, + "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, + "engines": { + "node": ">=8" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -13238,6 +14150,15 @@ "rdf-terms": "^1.7.0" } }, + "node_modules/rdf-js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rdf-js/-/rdf-js-4.0.2.tgz", + "integrity": "sha512-ApvlFa/WsQh8LpPK/6hctQwG06Z9ztQQGWVtrcrf9L6+sejHNXLPOqL+w7q3hF+iL0C4sv3AX1PUtGkLNzyZ0Q==", + "deprecated": "Use @types/rdf-js instead. See https://github.com/rdfjs/types?tab=readme-ov-file#what-about-typesrdf-js", + "dependencies": { + "@rdfjs/types": "*" + } + }, "node_modules/rdf-literal": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", @@ -13322,9 +14243,9 @@ } }, "node_modules/rdf-streaming-store": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/rdf-streaming-store/-/rdf-streaming-store-1.1.3.tgz", - "integrity": "sha512-rCP+wETf5jfSX8a32niSnbtf+R4UFxbjgbZNw0n8HB5DIcwm6epUAU7V4bBQOlm1NDHfwY92k4H5oQwOLBtQuA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rdf-streaming-store/-/rdf-streaming-store-1.1.4.tgz", + "integrity": "sha512-Bq98GHHvmdJRTxZBH5TKYuWLAHEXiLTd/F6OeuLtWC6tQydxp7smMnYyoRtztc9p+jBsA9z9HmzQsGfEE2mj4w==", "dependencies": { "@rdfjs/types": "*", "@types/n3": "^1.10.4", @@ -13408,7 +14329,68 @@ "validate-iri": "^1.0.0" } }, - "node_modules/read-pkg": { + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", + "dev": true, + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-package-up/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-up/node_modules/normalize-package-data": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-up/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-package-up/node_modules/read-pkg": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", @@ -13427,63 +14409,163 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.3.tgz", + "integrity": "sha512-Q08/0IrpvM+NMY9PA2rti9Jb+JejTddwmwmVQGskAlhtcrw1wsRzoR6ode6mR+OAabNa75w/dxedSUY2mlphaQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/read-pkg-up": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", - "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", - "deprecated": "Renamed to read-package-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, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "find-up-simple": "^1.0.0", - "read-pkg": "^9.0.0", - "type-fest": "^4.6.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.3.tgz", - "integrity": "sha512-JLXyjizi072smKGGcZiAJDCNweT8J+AuRxmPZ1aG7TERg4ijx9REl8CNhbr36RV4qXqL1gO1FF9HL8OkVmmrsA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", - "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "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/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, "dependencies": { - "@babel/code-frame": "^7.22.13", - "index-to-position": "^0.1.2", - "type-fest": "^4.7.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.10.3.tgz", - "integrity": "sha512-JLXyjizi072smKGGcZiAJDCNweT8J+AuRxmPZ1aG7TERg4ijx9REl8CNhbr36RV4qXqL1gO1FF9HL8OkVmmrsA==", + "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, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/readable-stream": { @@ -13518,6 +14600,19 @@ "node": ">=8.10.0" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -13536,6 +14631,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, "node_modules/registry-auth-token": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", @@ -13600,15 +14707,6 @@ "node": ">=4" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -13621,33 +14719,6 @@ "node": ">=8" } }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, "node_modules/retry": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", @@ -13666,16 +14737,11 @@ "node": ">=0.10.0" } }, - "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true - }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -13743,13 +14809,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -13801,23 +14867,23 @@ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, "node_modules/semantic-release": { - "version": "23.0.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.2.tgz", - "integrity": "sha512-OnVYJ6Xgzwe1x8MKswba7RU9+5djS1MWRTrTn5qsq3xZYpslroZkV9Pt0dA2YcIuieeuSZWJhn+yUWoBUHO5Fw==", + "version": "23.1.1", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.1.1.tgz", + "integrity": "sha512-qqJDBhbtHsjUEMsojWKGuL5lQFCJuPtiXKEIlFKyTzDDGTAE/oyvznaP8GeOr5PvcqBJ6LQz4JCENWPLeehSpA==", "dev": true, "dependencies": { - "@semantic-release/commit-analyzer": "^11.0.0", + "@semantic-release/commit-analyzer": "^12.0.0", "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^9.0.0", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", + "@semantic-release/github": "^10.0.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^13.0.0", "aggregate-error": "^5.0.0", "cosmiconfig": "^9.0.0", "debug": "^4.0.0", "env-ci": "^11.0.0", - "execa": "^8.0.0", + "execa": "^9.0.0", "figures": "^6.0.0", - "find-versions": "^5.1.0", + "find-versions": "^6.0.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", "hook-std": "^3.0.0", @@ -13829,7 +14895,7 @@ "micromatch": "^4.0.2", "p-each-series": "^3.0.0", "p-reduce": "^3.0.0", - "read-pkg-up": "^11.0.0", + "read-package-up": "^11.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", "semver-diff": "^4.0.0", @@ -13843,13 +14909,52 @@ "node": ">=20.8.1" } }, - "node_modules/semantic-release/node_modules/figures": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.0.1.tgz", - "integrity": "sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==", + "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.1.0.tgz", + "integrity": "sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==", "dev": true, "dependencies": { - "is-unicode-supported": "^2.0.0" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^7.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^5.2.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { "node": ">=18" @@ -13858,23 +14963,98 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/human-signals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz", + "integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==", "dev": true, "engines": { - "node": ">=10" + "node": ">=18.18.0" + } + }, + "node_modules/semantic-release/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "node_modules/semantic-release/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/pretty-ms": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz", + "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==", "dev": true, + "dependencies": { + "parse-ms": "^4.0.0" + }, "engines": { "node": ">=18" }, @@ -13891,13 +15071,34 @@ "node": ">=8" } }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -13937,17 +15138,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -13983,16 +15173,16 @@ } }, "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.1.2", + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14059,12 +15249,12 @@ } }, "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" @@ -14077,16 +15267,9 @@ } }, "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/signale": { "version": "1.4.0", @@ -14178,6 +15361,11 @@ "is-arrayish": "^0.3.1" } }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, "node_modules/skin-tone": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", @@ -14191,28 +15379,12 @@ } }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/source-map": { @@ -14243,9 +15415,9 @@ "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" }, "node_modules/sparqlalgebrajs": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/sparqlalgebrajs/-/sparqlalgebrajs-4.3.3.tgz", - "integrity": "sha512-g5+fYsb+7bNDTR72cCo/BSUgTroYr3hVtf+bAz7jszx6yU8+hHZxcoDuT+zkCA3sfHs/qG9oYDD/TA3UsH07eA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/sparqlalgebrajs/-/sparqlalgebrajs-4.3.4.tgz", + "integrity": "sha512-BUpd79w3SfrfRPyA+gHA23B3masuD2wLK47IOnglyIK6hx4BC+4TWtOmP5D8RTbmbPCuLKYfLGyLDF/RQsKgWg==", "dependencies": { "@rdfjs/types": "*", "@types/sparqljs": "^3.1.3", @@ -14343,9 +15515,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/split-on-first": { @@ -14490,15 +15662,6 @@ } ] }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -14512,23 +15675,16 @@ "node": ">=8" } }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -14538,28 +15694,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14586,15 +15745,24 @@ } }, "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, "node_modules/strip-json-comments": { @@ -14609,6 +15777,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/super-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "dev": true, + "dependencies": { + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -14661,6 +15845,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/temp-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", @@ -14783,6 +15983,21 @@ "node": ">= 6" } }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -14822,10 +16037,15 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/traverse": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", "dev": true, + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, "engines": { "node": ">= 0.4" }, @@ -14833,6 +16053,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "engines": { + "node": ">=8" + } + }, "node_modules/triple-beam": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", @@ -14841,22 +16070,10 @@ "node": ">= 14.0.0" } }, - "node_modules/ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, "node_modules/ts-essentials": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.4.1.tgz", - "integrity": "sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==", + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.4.2.tgz", + "integrity": "sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==", "peerDependencies": { "typescript": ">=4.1.0" }, @@ -14866,27 +16083,36 @@ } } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", "dev": true }, "node_modules/type-check": { @@ -14937,15 +16163,16 @@ } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -14955,16 +16182,16 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.1.tgz", - "integrity": "sha512-tcqKMrTRXjqvHN9S3553NPCaGL0VPgFI92lXszmrE8DMhiDPLBYLlvo8Uu4WZAAX/aGqp/T1sbA4ph8EWjDF9Q==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.6", + "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.1", + "has-proto": "^1.0.3", "is-typed-array": "^1.1.13" }, "engines": { @@ -14975,23 +16202,49 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -15030,9 +16283,9 @@ } }, "node_modules/undici": { - "version": "5.28.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", - "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -15082,9 +16335,9 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", "dev": true }, "node_modules/universalify": { @@ -15225,16 +16478,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15244,9 +16497,9 @@ } }, "node_modules/winston": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", - "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz", + "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", @@ -15258,7 +16511,7 @@ "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "winston-transport": "^4.7.0" }, "engines": { "node": ">= 12.0.0" @@ -15290,6 +16543,14 @@ "node": ">= 6" } }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/winston/node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -15303,6 +16564,15 @@ "node": ">= 6" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -15328,41 +16598,24 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": ">=7.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", @@ -15390,9 +16643,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } @@ -15415,9 +16671,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==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { "node": ">=10" @@ -15438,6 +16694,39 @@ "node": ">=10" } }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -15456,6 +16745,18 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.0.2.tgz", + "integrity": "sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 4d0dd14..f2b631e 100644 --- a/package.json +++ b/package.json @@ -2,21 +2,28 @@ "name": "@netwerk-digitaal-erfgoed/ld-workbench", "type": "module", "bin": { - "ld-workbench": "dist/main.js" + "ld-workbench": "build/main.js" }, "version": "0.0.0-development", "description": "LDWorkbench is a Linked Data Transformation tool designed to use only SPARQL as transformation language.", - "main": "dist/main.js", + "main": "build/main.js", + "engines": { + "node": ">=16" + }, "scripts": { - "test": "mocha \"./dist/**/*.test.js\"", + "test": "mocha \"./build/**/*.test.js\"", "prepare": "husky install", - "build": "npx tsc", - "dev": "npx tsc --watch --preserveWatchOutput", - "ld-workbench": "node dist/main", - "ld-workbench:example": "node dist/main --configDir static", - "util:lint": "ESLINT_STRICT=true ESLINT_EXPENSIVE=true eslint --ext .tsx --ext .ts ./src", + "dev": "tsc --watch --preserveWatchOutput", + "ld-workbench": "node build/main", + "ld-workbench:example": "node build/main --configDir static", "util:json-schema-to-typescript": "npx json2ts -i ./static/ld-workbench.schema.json -o src/lib/LDWorkbenchConfiguration.d.ts", - "semantic-release": "semantic-release" + "semantic-release": "semantic-release", + "lint": "gts lint", + "clean": "gts clean", + "compile": "tsc", + "fix": "gts fix", + "pretest": "npm run compile", + "posttest": "npm run lint" }, "repository": { "type": "git", @@ -51,11 +58,8 @@ "url": "https://github.com/netwerk-digitaal-erfgoed/ld-workbench/issues" }, "homepage": "https://github.com/netwerk-digitaal-erfgoed/ld-workbench#readme", - "lint-staged": { - "*.{ts,js}": "eslint --cache --fix", - "*.js": "eslint --cache --fix" - }, "devDependencies": { + "@comunica/types": "^3.1.0", "@types/chai": "^4.3.11", "@types/chai-as-promised": "^7.1.8", "@types/human-number": "^1.0.2", @@ -64,24 +68,17 @@ "@types/lodash.kebabcase": "^4.1.9", "@types/mocha": "^10.0.6", "@types/n3": "^1.16.4", - "@types/node": "^20.9.4", + "@types/node": "20.11.5", "@types/sparqljs": "^3.1.8", - "@typescript-eslint/eslint-plugin": "^6.12.0", "chai": "^4.3.10", "chai-as-promised": "^7.1.1", "commander": "^11.1.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-config-standard-with-typescript": "^40.0.0", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-n": "^16.3.1", - "eslint-plugin-promise": "^6.1.1", + "gts": "^5.3.0", "husky": "^8.0.0", "json-schema-to-typescript": "^13.1.1", - "lint-staged": "^15.1.0", "mocha": "^10.2.0", - "typescript": "^5.3.2", - "semantic-release": "^23.0.2" + "semantic-release": "^23.0.2", + "typescript": "~5.4.3" }, "dependencies": { "@comunica/query-sparql": "^2.10.0", diff --git a/src/cliArgs.ts b/src/cliArgs.ts index 935fdea..ec0b218 100644 --- a/src/cliArgs.ts +++ b/src/cliArgs.ts @@ -1,16 +1,28 @@ import chalk from 'chalk'; -import { program } from 'commander'; -import { error } from './utils/error.js'; +import {program} from 'commander'; +import {error} from './utils/error.js'; import version from './utils/version.js'; import init from './utils/init.js'; program .name('ld-workbench') .description('CLI tool to transform Linked Data using SPARQL') - .option('-c, --config ', 'Path to a configuration file for your pipeline.') - .option('--configDir ', 'Path to a folder containing your configuration files.') - .option('-p, --pipeline ', 'Name of the pipeline you want to run') - .option('-s, --stage ', 'Name of the stage of the pipeline you want to run') + .option( + '-c, --config ', + 'Path to a configuration file for your pipeline.' + ) + .option( + '--configDir ', + 'Path to a folder containing your configuration files.' + ) + .option( + '-p, --pipeline ', + 'Name of the pipeline you want to run' + ) + .option( + '-s, --stage ', + 'Name of the stage of the pipeline you want to run' + ) .option('--init', 'Initializes a new LDWorkbench project') .version(version()); program.parse(); @@ -18,34 +30,47 @@ export const cliArgs: { config?: string; configDir?: string; pipeline?: string; - stage?: string - init?: boolean + stage?: string; + init?: boolean; } = program.opts(); if (cliArgs.init !== undefined) { - if(Object.values(cliArgs).length !== 1) { - error('The --init flag can not be used in conjunction with other CLI arguments.') + if (Object.values(cliArgs).length !== 1) { + error( + 'The --init flag can not be used in conjunction with other CLI arguments.' + ); } try { - init() - console.log(chalk.green('A boilerplate LDWorkbench has been created. You can now run a project using `npx @netwerk-digitaal-erfgoed/ld-workbench`.')) - } catch(e) { - error(e as Error) + init(); + console.log( + chalk.green( + 'A boilerplate LDWorkbench has been created. You can now run a project using `npx @netwerk-digitaal-erfgoed/ld-workbench`.' + ) + ); + } catch (e) { + error(e as Error); } - process.exit(0) } if (cliArgs.config !== undefined && cliArgs.configDir !== undefined) { error( 'Do not use both the --config and the --configDir options.', 1, - `${chalk.italic('--config')} should be used to process a single pipeline, ${chalk.italic('--configDir')} should be used to overwrite the default director where LD Workbench searches configs (${chalk.italic('./pipelines/')}).` + `${chalk.italic( + '--config' + )} should be used to process a single pipeline, ${chalk.italic( + '--configDir' + )} should be used to overwrite the default director where LD Workbench searches configs (${chalk.italic( + './pipelines/' + )}).` ); } if (cliArgs.config !== undefined && cliArgs.pipeline !== undefined) { error( 'Do not use both the --config and the --pipeline options.', 1, - `Both ${chalk.italic('--config')} and ${chalk.italic('--pipeline')} should be used to process a single pipeline.` + `Both ${chalk.italic('--config')} and ${chalk.italic( + '--pipeline' + )} should be used to process a single pipeline.` ); } diff --git a/src/lib/File.class.ts b/src/lib/File.class.ts index b375696..e2dd736 100644 --- a/src/lib/File.class.ts +++ b/src/lib/File.class.ts @@ -1,63 +1,77 @@ -import { type WriteStream, createWriteStream, existsSync, statSync, mkdirSync, createReadStream } from 'fs' -import { isFile, isFilePathString } from '../utils/guards.js' -import { dirname } from 'path' -import chalk from 'chalk' -import { type Ora } from 'ora' -import type Pipeline from './Pipeline.class.js' -import {pipeline as streamPipeline} from 'stream/promises' +import { + type WriteStream, + createWriteStream, + existsSync, + statSync, + mkdirSync, + createReadStream, +} from 'fs'; +import {isFile, isFilePathString} from '../utils/guards.js'; +import {dirname} from 'path'; +import chalk from 'chalk'; +import {type Ora} from 'ora'; +import type Pipeline from './Pipeline.class.js'; +import {pipeline as streamPipeline} from 'stream/promises'; export default class File { - public readonly $id = 'File' - private $isValid?: boolean - public constructor(private $path: string, private readonly skipExistsCheck: boolean = false) { - } + public readonly $id = 'File'; + private $isValid?: boolean; + + public constructor( + private $path: string, + private readonly skipExistsCheck: boolean = false + ) {} public validate(): File { - if (this.$isValid !== undefined) return this + if (this.$isValid !== undefined) return this; if (!isFilePathString(this.$path)) { - const wrongFilePath: string = this.$path as any as string - throw new Error(`The filename \`${wrongFilePath}\` should start with \`file://\``) + const wrongFilePath: string = this.$path as string; + throw new Error( + `The filename \`${wrongFilePath}\` should start with \`file://\`` + ); } - this.$path = this.$path.replace(/^file:\/\//, '') - if (!this.skipExistsCheck && (!existsSync(this.$path) || !statSync(this.$path).isFile())) { - throw new Error(`File not found: \`${this.$path}\``) + this.$path = this.$path.replace(/^file:\/\//, ''); + if ( + !this.skipExistsCheck && + (!existsSync(this.$path) || !statSync(this.$path).isFile()) + ) { + throw new Error(`File not found: \`${this.$path}\``); } - this.$isValid = true - return this + this.$isValid = true; + return this; } public get path(): string { - return this.$path + return this.$path; } - public getStream(append: boolean = false): WriteStream { + public getStream(append = false): WriteStream { if (existsSync(this.$path)) { // throw new Error(`File already exists: \`${this.$path}\``) } if (!existsSync(dirname(this.$path))) { - mkdirSync(dirname(this.$path), { recursive: true}) + mkdirSync(dirname(this.$path), {recursive: true}); } - return createWriteStream(this.$path, append ? {flags: 'a'} : {}) + return createWriteStream(this.$path, append ? {flags: 'a'} : {}); } public toString(): string { - this.validate() - return this.$path + this.validate(); + return this.$path; } - public static is(value: any): value is File { - return isFile(value) + public static is(value: unknown): value is File { + return isFile(value); } public async write(pipeline: Pipeline, spinner: Ora): Promise { - const stageNames = Array.from(pipeline.stages.keys()) + const stageNames = Array.from(pipeline.stages.keys()); for (const stageName of stageNames) { - if (spinner !== undefined) spinner.suffixText = chalk.bold(stageName) + if (spinner !== undefined) spinner.suffixText = chalk.bold(stageName); await streamPipeline( - createReadStream(pipeline.stages.get(stageName)!.destinationPath), + createReadStream(pipeline.stages.get(stageName)!.destinationPath), this.getStream(true) - ) - + ); } } -} \ No newline at end of file +} diff --git a/src/lib/Generator.class.ts b/src/lib/Generator.class.ts index 33bda5c..6af4aa0 100644 --- a/src/lib/Generator.class.ts +++ b/src/lib/Generator.class.ts @@ -1,59 +1,77 @@ /* eslint-disable @typescript-eslint/method-signature-style */ -import type { ConstructQuery, ValuePatternRow } from "sparqljs"; -import type Stage from "./Stage.class.js"; -import getSPARQLQuery from "../utils/getSPARQLQuery.js"; -import type { Quad, NamedNode } from "@rdfjs/types"; -import getSPARQLQueryString from "../utils/getSPARQLQueryString.js"; -import getEndpoint from "../utils/getEndpoint.js"; -import type { Endpoint, QueryEngine } from "./types.js"; +import type {ConstructQuery, ValuePatternRow} from 'sparqljs'; +import type Stage from './Stage.class.js'; +import getSPARQLQuery from '../utils/getSPARQLQuery.js'; +import type {Quad, NamedNode} from '@rdfjs/types'; +import getSPARQLQueryString from '../utils/getSPARQLQueryString.js'; +import getEndpoint from '../utils/getEndpoint.js'; +import type {Endpoint, QueryEngine} from './types.js'; import getEngine from '../utils/getEngine.js'; import getEngineSource from '../utils/getEngineSource.js'; import EventEmitter from 'node:events'; -const DEFAULT_BATCH_SIZE = 10 +const DEFAULT_BATCH_SIZE = 10; declare interface Generator { - on(event: "data", listener: (statement: Quad) => void): this; - on(event: "end", listener: (iterations: number, statements: number, processed: number) => void): this; - on(event: "error", listener: (e: Error) => void): this; + on(event: 'data', listener: (statement: Quad) => void): this; + on( + event: 'end', + listener: ( + iterations: number, + statements: number, + processed: number + ) => void + ): this; + on(event: 'error', listener: (e: Error) => void): this; - emit(event: "data", statement: Quad): boolean; - emit(event: "end", iterations: number, statements: number, processed: number): boolean; - emit(event: "error", e: Error): boolean; + emit(event: 'data', statement: Quad): boolean; + emit( + event: 'end', + iterations: number, + statements: number, + processed: number + ): boolean; + emit(event: 'error', e: Error): boolean; } class Generator extends EventEmitter { private readonly query: ConstructQuery; private readonly engine: QueryEngine; - private iterationsProcessed: number = 0 - private iterationsIncoming: number = 0 - private statements: number = 0 - private source: string = '' - private $thisList: NamedNode[] = [] + private iterationsProcessed = 0; + private iterationsIncoming = 0; + private statements = 0; + private source = ''; + private $thisList: NamedNode[] = []; private readonly endpoint: Endpoint; // private iteratorEnded: boolean = false; - public constructor(private readonly stage: Stage, private readonly index: number) { - if (stage.configuration.generator === undefined) throw new Error('Error in Generator: no generators were present in stage configuration') - super() - this.index = index + public constructor( + private readonly stage: Stage, + private readonly index: number + ) { + if (stage.configuration.generator === undefined) + throw new Error( + 'Error in Generator: no generators were present in stage configuration' + ); + super(); + this.index = index; this.query = getSPARQLQuery( stage.configuration.generator[this.index].query, - "construct" + 'construct' ); this.endpoint = stage.configuration.generator[this.index].endpoint === undefined ? stage.iterator.endpoint - : getEndpoint(stage, "generator", this.index); + : getEndpoint(stage, 'generator', this.index); - this.engine = getEngine(this.endpoint) + this.engine = getEngine(this.endpoint); - stage.iterator.on('end', _count => { + stage.iterator.on('end', () => { this.flush(); - }) + }); } public run($this: NamedNode, batchSize?: number): void { - this.$thisList.push($this) + this.$thisList.push($this); this.iterationsIncoming++; if (this.$thisList.length >= (batchSize ?? this.batchSize)) { this.runBatch(this.$thisList); @@ -62,38 +80,57 @@ class Generator extends EventEmitter { } private get batchSize(): number { - return this.stage.configuration.generator[this.index].batchSize ?? DEFAULT_BATCH_SIZE + return ( + this.stage.configuration.generator[this.index].batchSize ?? + DEFAULT_BATCH_SIZE + ); } private runBatch(batch: NamedNode[]): void { - const error = (e: any): Error => new Error(`The Generator did not run successfully, it could not get the results from the endpoint ${this.source}: ${(e as Error).message}`) - if (this.source === '') this.source = getEngineSource(this.endpoint) - const unionQuery = getSPARQLQuery(getSPARQLQueryString(this.query), "construct"); + const error = (e: unknown): Error => + new Error( + `The Generator did not run successfully, it could not get the results from the endpoint ${ + this.source + }: ${(e as Error).message}` + ); + if (this.source === '') this.source = getEngineSource(this.endpoint); + const unionQuery = getSPARQLQuery( + getSPARQLQueryString(this.query), + 'construct' + ); const patterns = unionQuery.where ?? []; - const valuePatterns: ValuePatternRow[] = [] + const valuePatterns: ValuePatternRow[] = []; for (const $this of batch) { - valuePatterns.push({'?this': $this}) + valuePatterns.push({'?this': $this}); } - patterns.push({ type: 'values', values: valuePatterns }); - unionQuery.where = [{ type: 'group', patterns }] + patterns.push({type: 'values', values: valuePatterns}); + unionQuery.where = [{type: 'group', patterns}]; - this.engine.queryQuads(getSPARQLQueryString(unionQuery), { - sources: [this.source] - }).then(stream => { - stream.on('data', (quad: Quad) => { - this.statements++ - this.emit('data', quad) + this.engine + .queryQuads(getSPARQLQueryString(unionQuery), { + sources: [this.source], }) - stream.on('error', (e) => { - this.emit("error", error(e)) + .then(stream => { + stream.on('data', (quad: Quad) => { + this.statements++; + this.emit('data', quad); + }); + stream.on('error', e => { + this.emit('error', error(e)); + }); + stream.on('end', () => { + this.iterationsProcessed += batch.length; + this.emit( + 'end', + this.iterationsIncoming, + this.statements, + this.iterationsProcessed + ); + }); }) - stream.on('end', () => { - this.iterationsProcessed += batch.length; - this.emit('end', this.iterationsIncoming, this.statements, this.iterationsProcessed); - }) - }).catch(e => { - this.emit("error", error(e)) - }) + .catch(e => { + this.emit('error', error(e)); + }); } private flush(): void { @@ -101,5 +138,4 @@ class Generator extends EventEmitter { } } - -export default Generator +export default Generator; diff --git a/src/lib/Iterator.class.ts b/src/lib/Iterator.class.ts index 8573f6c..1a15ff9 100644 --- a/src/lib/Iterator.class.ts +++ b/src/lib/Iterator.class.ts @@ -1,98 +1,106 @@ /* eslint-disable @typescript-eslint/method-signature-style */ -import EventEmitter from "node:events"; -import type { SelectQuery } from "sparqljs"; -import type Stage from "./Stage.class.js"; -import type { NamedNode } from "@rdfjs/types"; -import getSPARQLQuery from "../utils/getSPARQLQuery.js"; -import { type Bindings } from "@comunica/types"; -import getSPARQLQueryString from "../utils/getSPARQLQueryString.js"; -import getEndpoint from "../utils/getEndpoint.js"; -import type { Endpoint, QueryEngine } from "./types.js"; -import getEngine from "../utils/getEngine.js"; -import getEngineSource from "../utils/getEngineSource.js"; -import parse from 'parse-duration' +import EventEmitter from 'node:events'; +import type {SelectQuery} from 'sparqljs'; +import type Stage from './Stage.class.js'; +import type {NamedNode} from '@rdfjs/types'; +import getSPARQLQuery from '../utils/getSPARQLQuery.js'; +import {type Bindings} from '@comunica/types'; +import getSPARQLQueryString from '../utils/getSPARQLQueryString.js'; +import getEndpoint from '../utils/getEndpoint.js'; +import type {Endpoint, QueryEngine} from './types.js'; +import getEngine from '../utils/getEngine.js'; +import getEngineSource from '../utils/getEngineSource.js'; +import parse from 'parse-duration'; const DEFAULT_LIMIT = 10; declare interface Iterator { - on(event: "data", listener: ($this: NamedNode) => void): this; - on(event: "end", listener: (numResults: number) => void): this; - on(event: "error", listener: (e: Error) => void): this; + on(event: 'data', listener: ($this: NamedNode) => void): this; + on(event: 'end', listener: (numResults: number) => void): this; + on(event: 'error', listener: (e: Error) => void): this; - emit(event: "data", $this: NamedNode): boolean; - emit(event: "end", numResults: number): boolean; - emit(event: "error", e: Error): boolean; + emit(event: 'data', $this: NamedNode): boolean; + emit(event: 'end', numResults: number): boolean; + emit(event: 'error', e: Error): boolean; } class Iterator extends EventEmitter { private readonly query: SelectQuery; public readonly endpoint: Endpoint; private readonly engine: QueryEngine; - private readonly delay: number | undefined - private source: string = ""; + private readonly delay: number | undefined; + private source = ''; private $offset = 0; public totalResults = 0; constructor(stage: Stage) { super(); - this.query = getSPARQLQuery(stage.configuration.iterator.query, "select"); + this.query = getSPARQLQuery(stage.configuration.iterator.query, 'select'); this.query.limit = stage.configuration.iterator.batchSize ?? this.query.limit ?? DEFAULT_LIMIT; this.endpoint = getEndpoint(stage); this.engine = getEngine(this.endpoint); - if (stage.configuration.iterator.delay !== undefined){ - const delay = parse(stage.configuration.iterator.delay) - if (delay === undefined) throw new Error(`Error in stage \`${stage.configuration.name}\`: incorrect delay format was provided.`) - this.delay = delay + if (stage.configuration.iterator.delay !== undefined) { + const delay = parse(stage.configuration.iterator.delay); + if (delay === undefined) + throw new Error( + `Error in stage \`${stage.configuration.name}\`: incorrect delay format was provided.` + ); + this.delay = delay; } } public run(): void { - setTimeout(() => { + setTimeout(() => { let resultsPerPage = 0; - if (this.source === "") this.source = getEngineSource(this.endpoint); + if (this.source === '') this.source = getEngineSource(this.endpoint); this.query.offset = this.$offset; const queryString = getSPARQLQueryString(this.query); - const error = (e: any): Error => new Error( - `The Iterator did not run succesfully, it could not get the results from the endpoint ${this.source} (offset: ${this.$offset}, limit ${this.query.limit}): ${(e as Error).message}` - ) + const error = (e: unknown): Error => + new Error( + `The Iterator did not run succesfully, it could not get the results from the endpoint ${ + this.source + } (offset: ${this.$offset}, limit ${this.query.limit}): ${ + (e as Error).message + }` + ); this.engine .queryBindings(queryString, { sources: [this.source], }) - .then((stream) => { - stream.on("data", (binding: Bindings) => { + .then(stream => { + stream.on('data', (binding: Bindings) => { resultsPerPage++; - if (!binding.has("this")) - throw new Error("Missing binding $this in the Iterator result."); - const $this = binding.get("this")!; - if ($this.termType !== "NamedNode") { + if (!binding.has('this')) + throw new Error('Missing binding $this in the Iterator result.'); + const $this = binding.get('this')!; + if ($this.termType !== 'NamedNode') { throw new Error( `Binding $this in the Iterator result must be an Iri/NamedNode, but it is of type ${$this.termType}.` ); } else { - this.emit("data", $this); + this.emit('data', $this); } }); - stream.on("end", () => { + stream.on('end', () => { this.totalResults += resultsPerPage; this.$offset += this.query.limit!; if (resultsPerPage < this.query.limit!) { - this.emit("end", this.totalResults); + this.emit('end', this.totalResults); } else { this.run(); } }); - - stream.on('error', (e) => { - this.emit("error", error(e)) - }) + + stream.on('error', e => { + this.emit('error', error(e)); + }); }) - .catch((e) => { - this.emit("error", error(e)) + .catch(e => { + this.emit('error', error(e)); }); - }, this.delay ?? 0) + }, this.delay ?? 0); } } diff --git a/src/lib/Pipeline.class.ts b/src/lib/Pipeline.class.ts index 1fc870a..dfdcc31 100644 --- a/src/lib/Pipeline.class.ts +++ b/src/lib/Pipeline.class.ts @@ -1,15 +1,15 @@ -import ora from "ora"; -import kebabcase from "lodash.kebabcase"; -import type { LDWorkbenchConfiguration } from "./LDWorkbenchConfiguration.js"; -import chalk from "chalk"; -import Stage from "./Stage.class.js"; -import formatDuration from "../utils/formatDuration.js"; -import { millify } from "millify"; -import File from "./File.class.js"; -import path from "node:path"; -import * as fs from "node:fs"; -import { isFilePathString, isTriplyDBPathString } from "../utils/guards.js"; -import TriplyDB from "./TriplyDB.class.js"; +import ora from 'ora'; +import kebabcase from 'lodash.kebabcase'; +import type {LDWorkbenchConfiguration} from './LDWorkbenchConfiguration.js'; +import chalk from 'chalk'; +import Stage from './Stage.class.js'; +import formatDuration from '../utils/formatDuration.js'; +import {millify} from 'millify'; +import File from './File.class.js'; +import path from 'node:path'; +import * as fs from 'node:fs'; +import {isFilePathString, isTriplyDBPathString} from '../utils/guards.js'; +import TriplyDB from './TriplyDB.class.js'; interface PipelineOptions { startFromStageName?: string; silent?: boolean; @@ -17,9 +17,9 @@ interface PipelineOptions { class Pipeline { public readonly stages = new Map(); public dataDir: string; - private $isValidated: boolean = false; + private $isValidated = false; private stageNames: string[] = []; - private startTime = performance.now() + private startTime = performance.now(); private readonly destination: File | TriplyDB; private readonly opts?: PipelineOptions; @@ -30,28 +30,28 @@ class Pipeline { // create data folder: this.opts = pipelineOptions; this.dataDir = path.join( - "pipelines", - "data", + 'pipelines', + 'data', kebabcase(this.$configuration.name) ); - fs.mkdirSync(this.dataDir, { recursive: true }); + fs.mkdirSync(this.dataDir, {recursive: true}); const destinationFile = this.configuration.destination ?? - `file://${path.join(this.dataDir, "statements.nt")}`; - const actualPath = destinationFile.replace(/^file:\/\//, '') + `file://${path.join(this.dataDir, 'statements.nt')}`; + const actualPath = destinationFile.replace(/^file:\/\//, ''); if (fs.existsSync(actualPath)) { // removing destintation if it already exists - fs.unlinkSync(actualPath) - } + fs.unlinkSync(actualPath); + } if ( !isFilePathString(destinationFile) && !isTriplyDBPathString(destinationFile) ) { throw new Error( - "We currently only allow publishing data to local files and TriplyDB." + 'We currently only allow publishing data to local files and TriplyDB.' ); } - if (isFilePathString(destinationFile) && !destinationFile.endsWith(".nt")) { + if (isFilePathString(destinationFile) && !destinationFile.endsWith('.nt')) { throw new Error( "We currently only writing results in N-Triples format,\nmake sure your destination filename ends with '.nt'." ); @@ -67,7 +67,7 @@ class Pipeline { message = `stage ${chalk.italic(stage)} of ${message}`; console.error(chalk.red(message)); console.error(chalk.red(e.message)); - process.exit(100); + throw e; } public getPreviousStage(stage: Stage): Stage | undefined { @@ -78,7 +78,7 @@ class Pipeline { ); } const names = Array.from(this.stages.keys()); - const ix = names.findIndex((name) => name === stage.name); + const ix = names.findIndex(name => name === stage.name); if (ix === 0) return undefined; else return this.stages.get(names[ix - 1]); } @@ -87,12 +87,12 @@ class Pipeline { if (this.$isValidated) return; let i = 0; if (this.$configuration.stages.length === 0) { - throw new Error("Your pipeline contains no stages."); + throw new Error('Your pipeline contains no stages.'); } for (const stageConfiguration of this.$configuration.stages) { if (i === 0 && stageConfiguration.iterator.endpoint === undefined) { throw new Error( - "The first stage of your pipeline must have an endpoint defined for the Iterator." + 'The first stage of your pipeline must have an endpoint defined for the Iterator.' ); } if (this.stages.has(stageConfiguration.name)) { @@ -114,12 +114,12 @@ class Pipeline { } public async run(): Promise { - this.startTime = performance.now() + this.startTime = performance.now(); if (!(this.opts?.silent === true)) console.info( chalk.cyan(`🏁 starting pipeline "${chalk.bold(this.name)}"`) ); - const spinner = ora("validating pipeline"); + const spinner = ora('validating pipeline'); if (!(this.opts?.silent === true)) spinner.start(); let startFromStage = 0; try { @@ -152,7 +152,7 @@ class Pipeline { this.error(e); } else { startFromStage = Array.from(this.stages.keys()).findIndex( - (value) => value === this.opts?.startFromStageName + value => value === this.opts?.startFromStageName ); } } @@ -166,7 +166,7 @@ class Pipeline { Array.from(this.stages.keys()) .slice(0, startFromStage) - .forEach((stagename) => { + .forEach(stagename => { ora() .start() .info(`stage "${chalk.bold(stagename)}" was skipped`) @@ -177,28 +177,35 @@ class Pipeline { private async runRecursive(): Promise { const stage = this.stages.get(this.stageNames.shift()!)!; - const spinner = ora("Loading results from Iterator"); - const startTime = performance.now() - let iterationsProcessed = 0 + const spinner = ora('Loading results from Iterator'); + const startTime = performance.now(); + let iterationsProcessed = 0; if (!(this.opts?.silent === true)) spinner.start(); await new Promise((resolve, reject) => { - stage.on("iteratorResult", (_$this, quadsGenerated) => { - iterationsProcessed++ - if (!(this.opts?.silent === true)) spinner.text = `Running ${stage.name}:\n\n Processed elements: ${millify(iterationsProcessed)}\n Generated quads: ${millify(quadsGenerated)}\n Duration: ${formatDuration(startTime, performance.now())} `; + stage.on('iteratorResult', (_$this, quadsGenerated) => { + iterationsProcessed++; + if (!(this.opts?.silent === true)) + spinner.text = `Running ${ + stage.name + }:\n\n Processed elements: ${millify( + iterationsProcessed + )}\n Generated quads: ${millify( + quadsGenerated + )}\n Duration: ${formatDuration(startTime, performance.now())} `; }); - stage.on("error", (e) => { + stage.on('error', e => { spinner.fail(); this.error(e); reject(e); }); - stage.on("end", (iris, statements) => { + stage.on('end', (iris, statements) => { if (!(this.opts?.silent === true)) spinner.succeed( `stage "${chalk.bold( stage.name )}" resulted in ${statements.toLocaleString()} statement${ - statements === 1 ? "" : "s" - } in ${iris.toLocaleString()} iteration${iris === 1 ? "" : "s"}.` + statements === 1 ? '' : 's' + } in ${iris.toLocaleString()} iteration${iris === 1 ? '' : 's'}.` ); resolve(); }); @@ -214,7 +221,7 @@ class Pipeline { try { await this.writeResult(); } catch (e) { - throw new Error("Pipeline failed: " + (e as Error).message); + throw new Error('Pipeline failed: ' + (e as Error).message); } if (!(this.opts?.silent === true)) @@ -222,13 +229,16 @@ class Pipeline { chalk.green( `✔ your pipeline "${chalk.bold( this.name - )}" was completed in ${formatDuration(this.startTime, performance.now())}` + )}" was completed in ${formatDuration( + this.startTime, + performance.now() + )}` ) ); } private async writeResult(): Promise { - const spinner = ora("Writing results to destination"); + const spinner = ora('Writing results to destination'); if (!(this.opts?.silent === true)) spinner.start(); await this.destination.write(this, spinner); if (!(this.opts?.silent === true)) @@ -245,4 +255,4 @@ class Pipeline { } } -export default Pipeline; \ No newline at end of file +export default Pipeline; diff --git a/src/lib/PreviousStage.class.ts b/src/lib/PreviousStage.class.ts index c9fa352..059c86f 100644 --- a/src/lib/PreviousStage.class.ts +++ b/src/lib/PreviousStage.class.ts @@ -1,25 +1,31 @@ -import { isPreviousStage } from '../utils/guards.js'; +import {isPreviousStage} from '../utils/guards.js'; import type Stage from './Stage.class.js'; export default class PreviousStage { - public readonly $id = 'PreviousStage' - public constructor ( + public readonly $id = 'PreviousStage'; + public constructor( public readonly nextStage: Stage, public readonly name: string ) {} public load(): Stage { if (!this.nextStage.pipeline.stages.has(this.name)) { - throw new Error(`This is unexpected: missing stage "${this.name}" in stages.`) + throw new Error( + `This is unexpected: missing stage "${this.name}" in stages.` + ); } - const previousStage = this.nextStage.pipeline.getPreviousStage(this.nextStage) + const previousStage = this.nextStage.pipeline.getPreviousStage( + this.nextStage + ); if (previousStage === undefined) { - throw new Error('no endpoint was defined, but there is also no previous stage to use') + throw new Error( + 'no endpoint was defined, but there is also no previous stage to use' + ); } - return previousStage + return previousStage; } - public static is(value: any): value is PreviousStage { - return isPreviousStage(value) + public static is(value: unknown): value is PreviousStage { + return isPreviousStage(value); } - } \ No newline at end of file +} diff --git a/src/lib/Stage.class.ts b/src/lib/Stage.class.ts index 238954a..f08ec29 100644 --- a/src/lib/Stage.class.ts +++ b/src/lib/Stage.class.ts @@ -1,74 +1,104 @@ /* eslint-disable @typescript-eslint/method-signature-style */ import EventEmitter from 'node:events'; import File from './File.class.js'; -import { type LDWorkbenchConfiguration } from './LDWorkbenchConfiguration.js'; +import {type LDWorkbenchConfiguration} from './LDWorkbenchConfiguration.js'; import Iterator from './Iterator.class.js'; import Generator from './Generator.class.js'; -import kebabcase from 'lodash.kebabcase' +import kebabcase from 'lodash.kebabcase'; import type Pipeline from './Pipeline.class.js'; import path from 'node:path'; -import { Writer } from 'n3' -import type { NamedNode } from '@rdfjs/types' -import type { WriteStream } from 'node:fs'; +import {Writer} from 'n3'; +import type {NamedNode} from '@rdfjs/types'; +import type {WriteStream} from 'node:fs'; declare interface Stage { - on(event: "generatorResult", listener: (count: number) => void): this; - on(event: "end", listener: (iteratorCount: number, statements: number) => void): this; - on(event: "iteratorResult", listener: ($this: NamedNode, quadsGenerated: number) => void): this; - on(event: "error", listener: (e: Error) => void): this; - - emit(event: "generatorResult", count: number): boolean; - emit(event: "end", iteratorCount: number, statements: number): boolean; - emit(event: "iteratorResult", $this: NamedNode, quadsGenerated: number): boolean; - emit(event: "error", e: Error): boolean; + on(event: 'generatorResult', listener: (count: number) => void): this; + on( + event: 'end', + listener: (iteratorCount: number, statements: number) => void + ): this; + on( + event: 'iteratorResult', + listener: ($this: NamedNode, quadsGenerated: number) => void + ): this; + on(event: 'error', listener: (e: Error) => void): this; + + emit(event: 'generatorResult', count: number): boolean; + emit(event: 'end', iteratorCount: number, statements: number): boolean; + emit( + event: 'iteratorResult', + $this: NamedNode, + quadsGenerated: number + ): boolean; + emit(event: 'error', e: Error): boolean; } class Stage extends EventEmitter { - public destination: () => WriteStream - public iterator: Iterator - public generators: Generator[] = [] - private iteratorEnded: boolean = false; + public destination: () => WriteStream; + public iterator: Iterator; + public generators: Generator[] = []; + private iteratorEnded = false; public constructor( public readonly pipeline: Pipeline, public readonly configuration: LDWorkbenchConfiguration['stages'][0] ) { - super() + super(); try { - this.iterator = new Iterator(this) - } catch(e) { - throw new Error(`Error in the iterator of stage \`${configuration.name}\`: ${(e as Error).message}`) + this.iterator = new Iterator(this); + } catch (e) { + throw new Error( + `Error in the iterator of stage \`${configuration.name}\`: ${ + (e as Error).message + }` + ); } // Handle both single generator and array of generators for (let index = 0; index < this.configuration.generator.length; index++) { const generatorConfig = this.configuration.generator[index]; try { - this.generators.push(new Generator({...this, generators: [generatorConfig]}, index)) - } catch(e) { - throw new Error(`Error in the generator of stage \`${configuration.name}\`: ${(e as Error).message}`) + this.generators.push( + new Generator({...this, generators: [generatorConfig]}, index) + ); + } catch (e) { + throw new Error( + `Error in the generator of stage \`${configuration.name}\`: ${ + (e as Error).message + }` + ); } } - this.destination = () => new File(this.destinationPath).getStream() + this.destination = () => new File(this.destinationPath).getStream(); } public get destinationPath(): string { - return path.join(this.pipeline.dataDir, kebabcase(this.configuration.name) + '.nt') + return path.join( + this.pipeline.dataDir, + kebabcase(this.configuration.name) + '.nt' + ); } public get name(): string { - return this.configuration.name + return this.configuration.name; } public run(): void { - const writer = new Writer(this.destination(), { end: false, format: 'N-Triples' }); + const writer = new Writer(this.destination(), { + end: false, + format: 'N-Triples', + }); let quadCount = 0; const generatorProcessedCounts = new Map(); let quadsGenerated = 0; const checkEnd = (iterationsIncoming: number, statements: number): void => { - if (![...generatorProcessedCounts].some(([_, processed]) => processed < iterationsIncoming) - && this.iteratorEnded) { + if ( + ![...generatorProcessedCounts].some( + ([, processed]) => processed < iterationsIncoming + ) && + this.iteratorEnded + ) { this.emit('end', iterationsIncoming, statements); } }; @@ -76,8 +106,8 @@ class Stage extends EventEmitter { this.generators.forEach((generator, index) => { generatorProcessedCounts.set(index, 0); - generator.on('data', (quad) => { - quadsGenerated++ + generator.on('data', quad => { + quadsGenerated++; writer.addQuad(quad); quadCount++; this.emit('generatorResult', quadCount); @@ -88,33 +118,29 @@ class Stage extends EventEmitter { checkEnd(iterationsIncoming, statements); }); - generator.on('error', (e) => { + generator.on('error', e => { this.emit('error', e); }); }); - this.iterator.on('data', ($this) => { + this.iterator.on('data', $this => { this.generators.forEach(generator => { generator.run($this); }); this.emit('iteratorResult', $this, quadsGenerated); }); - this.iterator.on('end', (_count) => { + this.iterator.on('end', () => { this.iteratorEnded = true; }); + this.iterator.on('error', e => { + this.emit('error', e); + }); - this.iterator.on('error', e => { - this.emit('error', e) - }) - - // Start the iterator - this.iterator.run(); - - -} - + // Start the iterator + this.iterator.run(); + } } -export default Stage +export default Stage; diff --git a/src/lib/TriplyDB.class.ts b/src/lib/TriplyDB.class.ts index da9874a..6741b03 100644 --- a/src/lib/TriplyDB.class.ts +++ b/src/lib/TriplyDB.class.ts @@ -1,60 +1,70 @@ -import { type Ora } from 'ora' -import type Pipeline from './Pipeline.class.js' -import App from '@triply/triplydb' +import {type Ora} from 'ora'; +import type Pipeline from './Pipeline.class.js'; +import App from '@triply/triplydb'; -const pattern = /^triplydb:\/\/([a-z0-9-]+)\/([a-z0-9-]+)$/ +const pattern = /^triplydb:\/\/([a-z0-9-]+)\/([a-z0-9-]+)$/; export default class TriplyDB { - public static $id = 'TriplyDB' - public datasetname: string - public accountname: string - public app: App | undefined - protected $datasetUrl: string | undefined + public static $id = 'TriplyDB'; + public datasetname: string; + public accountname: string; + public app: App | undefined; + protected $datasetUrl: string | undefined; constructor(protected $dsn: string) { - TriplyDB.assertValidDsn($dsn) - this.accountname = $dsn.match(pattern)![1] - this.datasetname = $dsn.match(pattern)![2] + TriplyDB.assertValidDsn($dsn); + this.accountname = $dsn.match(pattern)![1]; + this.datasetname = $dsn.match(pattern)![2]; } public static assertValidDsn(value: string): void { if (!pattern.test(value)) - throw new Error('A TriplyDB path should look like this: "triplydb://accountname/dataset"') + throw new Error( + 'A TriplyDB path should look like this: "triplydb://accountname/dataset"' + ); } public toString(): string { - return this.$dsn + return this.$dsn; } public validate(): TriplyDB { if (process.env.TOKEN === undefined) { - throw new Error('To publish to triply you need an environment variable "TOKEN" with your TriplyDB API Token, see https://docs.triply.cc/triply-api/#creating-an-api-token') + throw new Error( + 'To publish to triply you need an environment variable "TOKEN" with your TriplyDB API Token, see https://docs.triply.cc/triply-api/#creating-an-api-token' + ); } try { - this.app = App.get({ token: process.env.TOKEN }) + this.app = App.get({token: process.env.TOKEN}); } catch (e) { - throw new Error(`Failed to create TriplyDB App: ${(e as Error).message}`) + throw new Error(`Failed to create TriplyDB App: ${(e as Error).message}`); } - return this + return this; } public get path(): string { - return this.$datasetUrl ?? this.$dsn + return this.$datasetUrl ?? this.$dsn; } public async write(pipeline: Pipeline, spinner: Ora): Promise { - const filenames = Array.from(pipeline.stages.keys()) - .map(stageName => pipeline.stages.get(stageName)!.destinationPath) + const filenames = Array.from(pipeline.stages.keys()).map( + stageName => pipeline.stages.get(stageName)!.destinationPath + ); await this.app!.getAccount(this.accountname) .then(async account => account.ensureDataset(this.datasetname)) .then(async dataset => { - const appInfo = await this.app!.getInfo() - this.$datasetUrl = `${appInfo.consoleUrl}/${this.accountname}/${this.datasetname}` - spinner.info(`uploading data to ${this.$dsn}`) - await dataset.importFromFiles(filenames, {mergeGraphs: true}) - }).catch(e => { - throw new Error(`Failed to upload your data to TriplyDB ${this.accountname}/${this.datasetname}: ${(e as Error).message}.`) + const appInfo = await this.app!.getInfo(); + this.$datasetUrl = `${appInfo.consoleUrl}/${this.accountname}/${this.datasetname}`; + spinner.info(`uploading data to ${this.$dsn}`); + await dataset.importFromFiles(filenames, {mergeGraphs: true}); }) + .catch(e => { + throw new Error( + `Failed to upload your data to TriplyDB ${this.accountname}/${ + this.datasetname + }: ${(e as Error).message}.` + ); + }); } -} \ No newline at end of file +} diff --git a/src/lib/tests/File.class.test.ts b/src/lib/tests/File.class.test.ts index 8483eb6..f82a701 100644 --- a/src/lib/tests/File.class.test.ts +++ b/src/lib/tests/File.class.test.ts @@ -1,85 +1,93 @@ import * as fs from 'fs'; import * as path from 'path'; -import File from "../File.class.js" -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -chai.use(chaiAsPromised) -const expect = chai.expect +import File from '../File.class.js'; +import * as chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +chai.use(chaiAsPromised); +const expect = chai.expect; describe('File Class', () => { - describe('constructor', () => { - it('should set properties correctly', () => { - const file = new File(`file://${path.join('./static/example/config.yml')}`) - expect(file).to.be.an.instanceOf(File); - expect(file).to.have.property('$path'); - expect(file).to.have.property('skipExistsCheck'); - expect(file).to.have.property('$id'); - }); + describe('constructor', () => { + it('should set properties correctly', () => { + const file = new File( + `file://${path.join('./static/example/config.yml')}` + ); + expect(file).to.be.an.instanceOf(File); + expect(file).to.have.property('$path'); + expect(file).to.have.property('skipExistsCheck'); + expect(file).to.have.property('$id'); + }); + }); + describe('validate', () => { + it('should validate a valid file path', () => { + const path = './static/example/config.yml'; + const validFilePath = `file://${path}`; + const file = new File(validFilePath); + expect(file.validate()); + expect(file.path).to.equal(path); }); - describe('validate', () => { - it('should validate a valid file path', () => { - const path = './static/example/config.yml'; - const validFilePath = `file://${path}`; - const file = new File(validFilePath) - expect(file.validate()); - expect(file.path).to.equal(path); - }); - it('should throw an error for an invalid file path', () => { - const filePath = 'invalid/file/path.txt'; - const file = new File(filePath); - expect((file.validate.bind(file))).to.throw('The filename `invalid/file/path.txt` should start with `file://`'); - }); + it('should throw an error for an invalid file path', () => { + const filePath = 'invalid/file/path.txt'; + const file = new File(filePath); + expect(file.validate.bind(file)).to.throw( + 'The filename `invalid/file/path.txt` should start with `file://`' + ); + }); - it('should throw an error if file does not exist', () => { - const filePath = 'file://nonexistent/file.txt'; - const file = new File(filePath); - expect(file.validate.bind(file)).to.throw('File not found: `nonexistent/file.txt`'); - }); + it('should throw an error if file does not exist', () => { + const filePath = 'file://nonexistent/file.txt'; + const file = new File(filePath); + expect(file.validate.bind(file)).to.throw( + 'File not found: `nonexistent/file.txt`' + ); + }); - it('should skip exists check when skipExistsCheck is true', () => { - const filePath = 'file://nonexistent/file.txt'; - const file = new File(filePath, true); - expect(() => file.validate()).to.not.throw(); - expect(file.path).to.equal('nonexistent/file.txt'); - }); + it('should skip exists check when skipExistsCheck is true', () => { + const filePath = 'file://nonexistent/file.txt'; + const file = new File(filePath, true); + expect(() => file.validate()).to.not.throw(); + expect(file.path).to.equal('nonexistent/file.txt'); }); + }); - describe('getStream', () => { - beforeEach(() => { - const filePath = 'file.txt'; - if (!fs.existsSync(filePath)) { - fs.writeFileSync(filePath, 'Initial content'); - } - }); - afterEach(() => { - const filePath = 'file.txt'; - if (fs.existsSync(filePath)) { - fs.unlinkSync(filePath); - } - if (fs.existsSync('./new')) { - fs.rmSync('./new', { recursive: true, force: true }); - } - }); - it('should create a write stream for a new file', () => { - const filePath = 'new/file.txt'; - const file = new File(filePath); - const writeStream = file.getStream(); - expect(writeStream).to.be.an.instanceOf(fs.WriteStream); - }); + describe('getStream', () => { + beforeEach(() => { + const filePath = 'file.txt'; + if (!fs.existsSync(filePath)) { + fs.writeFileSync(filePath, 'Initial content'); + } + }); + afterEach(() => { + const filePath = 'file.txt'; + if (fs.existsSync(filePath)) { + fs.unlinkSync(filePath); + } + if (fs.existsSync('./new')) { + fs.rmSync('./new', {recursive: true, force: true}); + } + }); + it('should create a write stream for a new file', () => { + const filePath = 'new/file.txt'; + const file = new File(filePath); + const writeStream = file.getStream(); + expect(writeStream).to.be.an.instanceOf(fs.WriteStream); + }); - it('should append to an existing file when append is true', () => { - const filePath = 'file.txt'; - const file = new File(filePath); - const writeStream = file.getStream(true); - expect(writeStream).to.be.an.instanceOf(fs.WriteStream); - }); - it('should create parent directories if they do not exist', () => { - const filePath = 'file://new/directory/nested/file.txt'; - const file = new File(filePath, true).validate(); - const writeStream = file.getStream(); - expect(writeStream).to.be.an.instanceOf(fs.WriteStream); - expect(fs.existsSync(path.dirname(filePath).replace('file://', ''))).to.equal(true); - }); + it('should append to an existing file when append is true', () => { + const filePath = 'file.txt'; + const file = new File(filePath); + const writeStream = file.getStream(true); + expect(writeStream).to.be.an.instanceOf(fs.WriteStream); + }); + it('should create parent directories if they do not exist', () => { + const filePath = 'file://new/directory/nested/file.txt'; + const file = new File(filePath, true).validate(); + const writeStream = file.getStream(); + expect(writeStream).to.be.an.instanceOf(fs.WriteStream); + expect( + fs.existsSync(path.dirname(filePath).replace('file://', '')) + ).to.equal(true); }); + }); }); diff --git a/src/lib/tests/Generator.class.test.ts b/src/lib/tests/Generator.class.test.ts index 542fbc7..acce184 100644 --- a/src/lib/tests/Generator.class.test.ts +++ b/src/lib/tests/Generator.class.test.ts @@ -1,217 +1,247 @@ -import Generator from "../Generator.class.js"; -import { EventEmitter } from 'events'; -import Stage from "../Stage.class.js"; -import Pipeline from "../Pipeline.class.js"; -import * as chai from 'chai' +import Generator from '../Generator.class.js'; +import {EventEmitter} from 'events'; +import Stage from '../Stage.class.js'; +import Pipeline from '../Pipeline.class.js'; +import * as chai from 'chai'; import * as path from 'path'; -import chaiAsPromised from 'chai-as-promised' -import { NamedNode } from "n3"; -import * as fs from "fs" -import type { LDWorkbenchConfiguration } from "../LDWorkbenchConfiguration.js"; -import { fileURLToPath } from "url"; -import removeDirectory from "../../utils/removeDir.js"; -chai.use(chaiAsPromised) -const expect = chai.expect +import chaiAsPromised from 'chai-as-promised'; +import {NamedNode} from 'n3'; +import * as fs from 'fs'; +import type {LDWorkbenchConfiguration} from '../LDWorkbenchConfiguration.js'; +import {fileURLToPath} from 'url'; +import removeDirectory from '../../utils/removeDir.js'; +import {Quad} from '@rdfjs/types'; + +chai.use(chaiAsPromised); +const expect = chai.expect; describe('Generator Class', () => { - const _filename = fileURLToPath(import.meta.url); - const _dirname = path.dirname(_filename); - const dataDirectoryPath = path.join(_dirname, 'pipelines', 'data'); + const _filename = fileURLToPath(import.meta.url); + const _dirname = path.dirname(_filename); + const dataDirectoryPath = path.join(_dirname, 'pipelines', 'data'); - before(async function () { - // Remove the data directory before running tests - await removeDirectory(dataDirectoryPath); - }); + before(async () => { + // Remove the data directory before running tests + await removeDirectory(dataDirectoryPath); + }); - describe('constructor', () => { - it('should set query, engine, endpoint, and source properties correctly', () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig) - const generator = new Generator(stage, 0) - expect(generator).to.be.an.instanceOf(Generator); - expect(generator).to.be.an.instanceOf(EventEmitter); - expect(generator).to.have.property('query'); - expect(generator).to.have.property('engine'); - expect(generator).to.have.property('endpoint'); - expect(generator).to.have.property('source'); - }); + describe('constructor', () => { + it('should set query, engine, endpoint, and source properties correctly', () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const generator = new Generator(stage, 0); + expect(generator).to.be.an.instanceOf(Generator); + expect(generator).to.be.an.instanceOf(EventEmitter); + expect(generator).to.have.property('query'); + expect(generator).to.have.property('engine'); + expect(generator).to.have.property('endpoint'); + expect(generator).to.have.property('source'); }); - describe('run', () => { - it('Should work with multiple generators in parallel for one pipeline', async function (){ - const filePath = 'pipelines/data/example-pipelineParallel.nt'; - - const config: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://'+ filePath, - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: - [ - {query: 'file://static/example/generator-stage-1-1.rq'}, - {query: 'file://static/example/generator-stage-1-2.rq'} - ] - }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq' - }, - generator: - [{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - }] - } - ] - } - // read file after pipeline has finished - const pipelineParallelGenerators = new Pipeline(config, {silent: true}) - pipelineParallelGenerators.validate() - - await pipelineParallelGenerators.run() - const file = fs.readFileSync(filePath, {encoding: 'utf-8'}) - const fileLines = file.split('\n').sort() - expect(fileLines.length).to.equal(741) - expect(fileLines[0]).to.equal('') - expect(fileLines[1]).to.equal(' .') - expect(fileLines[fileLines.length - 1]).to.equal(' "Instance 150 of the Iris Virginica"@en .') - }) - it('Should work in batchSize for pipeline\'s generator', async function () { - const filePath = 'pipelines/data/example-pipelineBatch.nt'; - + }); + describe('run', () => { + it('Should work with multiple generators in parallel for one pipeline', async () => { + const filePath = 'pipelines/data/example-pipelineParallel.nt'; - const batchConfiguration: LDWorkbenchConfiguration = { - name: 'Example Pipeline Batch', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: "file://" + filePath, - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq', - // adjust batchsize for test here - batchSize: 7 - } -] } - ] - } - const pipelineBatch = new Pipeline(batchConfiguration, {silent: true}) - pipelineBatch.validate() - pipelineBatch.run().then(() => { - // read file after pipeline has finished - const file = fs.readFileSync(filePath, {encoding: "utf-8"}) - const fileLines = file.split("\n").sort() - expect(fileLines.length).to.equal(460) - expect(fileLines[0]).to.equal('') - expect(fileLines[1]).to.equal(' .') - expect(fileLines[fileLines.length - 1]).to.equal(' "Instance 150 of the Iris Virginica"@en .') - }).catch(error => {throw error}); + const config: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://' + filePath, + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + {query: 'file://static/example/generator-stage-1-1.rq'}, + {query: 'file://static/example/generator-stage-1-2.rq'}, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + // read file after pipeline has finished + const pipelineParallelGenerators = new Pipeline(config, {silent: true}); + pipelineParallelGenerators.validate(); + await pipelineParallelGenerators.run(); + const file = fs.readFileSync(filePath, {encoding: 'utf-8'}); + const fileLines = file.split('\n').sort(); + expect(fileLines.length).to.equal(741); + expect(fileLines[0]).to.equal(''); + expect(fileLines[1]).to.equal( + ' .' + ); + expect(fileLines[fileLines.length - 1]).to.equal( + ' "Instance 150 of the Iris Virginica"@en .' + ); + }); + it("Should work in batchSize for pipeline's generator", async () => { + const filePath = 'pipelines/data/example-pipelineBatch.nt'; + const batchConfiguration: LDWorkbenchConfiguration = { + name: 'Example Pipeline Batch', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://' + filePath, + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + // adjust batchsize for test here + batchSize: 7, + }, + ], + }, + ], + }; + const pipelineBatch = new Pipeline(batchConfiguration, {silent: true}); + pipelineBatch.validate(); + pipelineBatch + .run() + .then(() => { + // read file after pipeline has finished + const file = fs.readFileSync(filePath, {encoding: 'utf-8'}); + const fileLines = file.split('\n').sort(); + expect(fileLines.length).to.equal(460); + expect(fileLines[0]).to.equal(''); + expect(fileLines[1]).to.equal( + ' .' + ); + expect(fileLines[fileLines.length - 1]).to.equal( + ' "Instance 150 of the Iris Virginica"@en .' + ); }) - it.skip('should emit "data" and "end" events with the correct number of statements', async () => { - const configuration : LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig) - const generator = new Generator(stage, 0); - const emittedEvents: any[] = []; - - const testNamedNode = new NamedNode('https://triplydb.com/triply/iris/id/floweringPlant/00106'); + .catch(error => { + throw error; + }); + }); + it.skip('should emit "data" and "end" events with the correct number of statements', async () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const generator = new Generator(stage, 0); + const emittedEvents: {event: string; quad?: Quad; numResults?: number}[] = + []; - async function runGeneratorWithPromise(): Promise { - return new Promise((resolve, reject) => { - generator.addListener('data', (quad) => { - emittedEvents.push({ event: 'data', quad }); - }); - generator.addListener('end', (numResults) => { - emittedEvents.push({ event: 'end', numResults }); - resolve(true); - }); - generator.addListener('error', (error) => { - reject(error); - }); - generator.run(testNamedNode); - }); - } + const testNamedNode = new NamedNode( + 'https://triplydb.com/triply/iris/id/floweringPlant/00106' + ); - await runGeneratorWithPromise() - expect(emittedEvents).to.have.lengthOf(4); - expect(emittedEvents[0].event).to.equal('data'); - expect(emittedEvents[0].quad._subject.id).to.equal('https://triplydb.com/triply/iris/id/floweringPlant/00106') - expect(emittedEvents[0].quad._predicate.id).to.equal('http://www.w3.org/1999/02/22-rdf-syntax-ns#type') - expect(emittedEvents[0].quad._object.id).to.equal('https://schema.org/Thing') - expect(emittedEvents[emittedEvents.length - 1].event).to.equal('end'); - expect(emittedEvents[emittedEvents.length - 1].numResults).to.equal(3); + async function runGeneratorWithPromise(): Promise { + return new Promise((resolve, reject) => { + generator.addListener('data', quad => { + emittedEvents.push({event: 'data', quad}); + }); + generator.addListener('end', numResults => { + emittedEvents.push({event: 'end', numResults}); + resolve(true); + }); + generator.addListener('error', error => { + reject(error); + }); + generator.run(testNamedNode); }); + } + + await runGeneratorWithPromise(); + expect(emittedEvents).to.have.lengthOf(4); + expect(emittedEvents[0].event).to.equal('data'); + expect(emittedEvents[0].quad?.subject.value).to.equal( + 'https://triplydb.com/triply/iris/id/floweringPlant/00106' + ); + expect(emittedEvents[0].quad?.predicate.value).to.equal( + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' + ); + expect(emittedEvents[0].quad?.object.value).to.equal( + 'https://schema.org/Thing' + ); + expect(emittedEvents[emittedEvents.length - 1].event).to.equal('end'); + expect(emittedEvents[emittedEvents.length - 1].numResults).to.equal(3); }); + }); }); diff --git a/src/lib/tests/Iterator.class.test.ts b/src/lib/tests/Iterator.class.test.ts index 46eebcc..8613736 100644 --- a/src/lib/tests/Iterator.class.test.ts +++ b/src/lib/tests/Iterator.class.test.ts @@ -1,130 +1,138 @@ -import Iterator from "../Iterator.class.js"; -import { EventEmitter } from 'events'; -import Stage from "../Stage.class.js"; -import Pipeline from "../Pipeline.class.js"; -import * as chai from 'chai' +import Iterator from '../Iterator.class.js'; +import {EventEmitter} from 'events'; +import Stage from '../Stage.class.js'; +import Pipeline from '../Pipeline.class.js'; +import * as chai from 'chai'; import * as path from 'path'; -import chaiAsPromised from 'chai-as-promised' -import type { LDWorkbenchConfiguration } from "../LDWorkbenchConfiguration.js"; -import { fileURLToPath } from "url"; -import removeDirectory from "../../utils/removeDir.js"; -chai.use(chaiAsPromised) -const expect = chai.expect +import chaiAsPromised from 'chai-as-promised'; +import type {LDWorkbenchConfiguration} from '../LDWorkbenchConfiguration.js'; +import {fileURLToPath} from 'url'; +import removeDirectory from '../../utils/removeDir.js'; +import {NamedNode} from 'n3'; +chai.use(chaiAsPromised); +const expect = chai.expect; describe('Iterator Class', () => { - const _filename = fileURLToPath(import.meta.url); - const _dirname = path.dirname(_filename); - const dataDirectoryPath = path.join(_dirname, 'pipelines', 'data'); + const _filename = fileURLToPath(import.meta.url); + const _dirname = path.dirname(_filename); + const dataDirectoryPath = path.join(_dirname, 'pipelines', 'data'); - before(async function () { - // Remove the data directory before running tests - await removeDirectory(dataDirectoryPath); - }); + before(async () => { + // Remove the data directory before running tests + await removeDirectory(dataDirectoryPath); + }); - describe('constructor', () => { - it('should set query, endpoint, engine, $offset, and totalResults properties correctly', () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig) - const iterator = new Iterator(stage); - expect(iterator).to.be.an.instanceOf(Iterator); - expect(iterator).to.be.an.instanceOf(EventEmitter); - expect(iterator).to.have.property('query'); - expect(iterator).to.have.property('endpoint'); - expect(iterator).to.have.property('engine'); - expect(iterator).to.have.property('source'); - expect(iterator).to.have.property('$offset', 0); - expect(iterator).to.have.property('totalResults', 0); - }); + describe('constructor', () => { + it('should set query, endpoint, engine, $offset, and totalResults properties correctly', () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const iterator = new Iterator(stage); + expect(iterator).to.be.an.instanceOf(Iterator); + expect(iterator).to.be.an.instanceOf(EventEmitter); + expect(iterator).to.have.property('query'); + expect(iterator).to.have.property('endpoint'); + expect(iterator).to.have.property('engine'); + expect(iterator).to.have.property('source'); + expect(iterator).to.have.property('$offset', 0); + expect(iterator).to.have.property('totalResults', 0); }); - describe.skip('run', () => { - it('should emit "data" and "end" events with the correct $this and numResults', async () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig) - const iterator = new Iterator(stage); - const emittedEvents: any = [] - async function runIteratorWithPromise(): Promise { - return new Promise((resolve, reject) => { - iterator.addListener('data', (bindings) => { - emittedEvents.push({ event: 'data', bindings }); - }); - iterator.addListener('end', () => { - emittedEvents.push({ event: 'end' }); - resolve(true); - }); - iterator.addListener('error', (error) => { - reject(error); - }); - iterator.run(); - }); - } - - await runIteratorWithPromise() - expect(emittedEvents).to.have.lengthOf(154); - expect(emittedEvents[0].event).to.equal('data'); - expect(emittedEvents[0].bindings.termType).to.equal('NamedNode') - expect(emittedEvents[0].bindings.value).to.equal('http://dbpedia.org/resource/Iris_virginica') - expect(emittedEvents[emittedEvents.length - 1].event).to.equal('end'); - + }); + describe.skip('run', () => { + it('should emit "data" and "end" events with the correct $this and numResults', async () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const iterator = new Iterator(stage); + const emittedEvents: {event: string; bindings?: NamedNode}[] = []; + async function runIteratorWithPromise(): Promise { + return new Promise((resolve, reject) => { + iterator.addListener('data', bindings => { + emittedEvents.push({event: 'data', bindings}); + }); + iterator.addListener('end', () => { + emittedEvents.push({event: 'end'}); + resolve(true); + }); + iterator.addListener('error', error => { + reject(error); + }); + iterator.run(); }); + } + + await runIteratorWithPromise(); + expect(emittedEvents).to.have.lengthOf(154); + expect(emittedEvents[0].event).to.equal('data'); + expect(emittedEvents[0].bindings?.termType).to.equal('NamedNode'); + expect(emittedEvents[0].bindings?.value).to.equal( + 'http://dbpedia.org/resource/Iris_virginica' + ); + expect(emittedEvents[emittedEvents.length - 1].event).to.equal('end'); }); + }); }); diff --git a/src/lib/tests/Pipeline.class.test.ts b/src/lib/tests/Pipeline.class.test.ts index 0a306f8..1bf2b74 100644 --- a/src/lib/tests/Pipeline.class.test.ts +++ b/src/lib/tests/Pipeline.class.test.ts @@ -1,356 +1,380 @@ -import File from "../File.class.js"; -import type { LDWorkbenchConfiguration } from "../LDWorkbenchConfiguration.js"; -import Pipeline from "../Pipeline.class.js"; -import * as chai from 'chai' +import File from '../File.class.js'; +import type {LDWorkbenchConfiguration} from '../LDWorkbenchConfiguration.js'; +import Pipeline from '../Pipeline.class.js'; +import * as chai from 'chai'; import * as path from 'path'; -import chaiAsPromised from 'chai-as-promised' -import Stage from "../Stage.class.js"; -import removeDirectory from "../../utils/removeDir.js"; -chai.use(chaiAsPromised) -const expect = chai.expect +import chaiAsPromised from 'chai-as-promised'; +import Stage from '../Stage.class.js'; +import removeDirectory from '../../utils/removeDir.js'; +chai.use(chaiAsPromised); +const expect = chai.expect; describe('Pipeline Class', () => { - const dataDirectoryPath = path.join('pipelines', 'data'); + const dataDirectoryPath = path.join('pipelines', 'data'); - before(async function () { - // Remove the data directory before running tests - await removeDirectory(dataDirectoryPath); - }); + before(async () => { + // Remove the data directory before running tests + await removeDirectory(dataDirectoryPath); + }); - describe('constructor', () => { - it('should set properties correctly', () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ - { - query: 'file://static/example/generator-stage-1-1.rq' - } - ] - }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ - { - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } - ] - } - ] - } - const pipeline = new Pipeline(configuration, { silent: true }); - expect(pipeline).to.be.an.instanceOf(Pipeline); - expect(pipeline).to.have.property('stages').that.is.a('Map'); - expect(pipeline).to.have.property('dataDir').that.is.a('string'); - expect(pipeline).to.have.property('$isValidated', false); - expect(pipeline).to.have.property('stageNames').that.is.an('array'); - expect(pipeline).to.have.property('startTime').that.is.an('number'); - expect(pipeline).to.have.property('destination').that.is.an.instanceOf(File); - }); + describe('constructor', () => { + it('should set properties correctly', () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + expect(pipeline).to.be.an.instanceOf(Pipeline); + expect(pipeline).to.have.property('stages').that.is.a('Map'); + expect(pipeline).to.have.property('dataDir').that.is.a('string'); + expect(pipeline).to.have.property('$isValidated', false); + expect(pipeline).to.have.property('stageNames').that.is.an('array'); + expect(pipeline).to.have.property('startTime').that.is.an('number'); + expect(pipeline) + .to.have.property('destination') + .that.is.an.instanceOf(File); }); + }); - describe('getPreviousStage', () => { - it('should return the previous stage correctly', () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ - { - query: 'file://static/example/generator-stage-1-1.rq' - } - ] - }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ - { - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } - ] - } - ] - } - const pipeline = new Pipeline(configuration, { silent: true }); - pipeline.validate() - - const stage1 = pipeline.stages.get('Stage 1')!; - const stage2 = pipeline.stages.get('Stage 2')!; + describe('getPreviousStage', () => { + it('should return the previous stage correctly', () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + pipeline.validate(); - expect(pipeline.getPreviousStage(stage1)).to.equal(undefined) - expect(pipeline.getPreviousStage(stage2)).to.equal(stage1); - }); - // BUG error can never be reached - Error: Detected a duplicate name for stage `undefined` in your pipeline: each stage must have a unique name. - // will be thrown instead - it.skip('should throw error if stage name is missing', () => { - const configuration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ - { - query: 'file://static/example/generator-stage-1-1.rq' - } - ] - }, - { - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ - { - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } - ] - } - ] - } as unknown as LDWorkbenchConfiguration - const pipeline = new Pipeline(configuration, { silent: true }); - const stage2: Stage = new Stage(pipeline, configuration.stages[1]) - pipeline.getPreviousStage(stage2) + const stage1 = pipeline.stages.get('Stage 1')!; + const stage2 = pipeline.stages.get('Stage 2')!; - }); + expect(pipeline.getPreviousStage(stage1)).to.equal(undefined); + expect(pipeline.getPreviousStage(stage2)).to.equal(stage1); }); + // BUG error can never be reached - Error: Detected a duplicate name for stage `undefined` in your pipeline: each stage must have a unique name. + // will be thrown instead + it.skip('should throw error if stage name is missing', () => { + const configuration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + } as unknown as LDWorkbenchConfiguration; + const pipeline = new Pipeline(configuration, {silent: true}); + const stage2: Stage = new Stage(pipeline, configuration.stages[1]); + pipeline.getPreviousStage(stage2); + }); + }); - describe('validate', () => { - it('should throw an error if the pipeline\'s configuration has no stages', () => { - const invalidConfiguration = { - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [] - } as unknown as LDWorkbenchConfiguration - const pipeline = new Pipeline(invalidConfiguration, { silent: true }); - let failed = false - try { - pipeline.validate() - } catch (error) { - if (error instanceof Error) { - if (error.message === 'Your pipeline contains no stages.') { - failed = true - } - else { - throw new Error(`This test expected an error with message "Your pipeline contains no stages.", but received: ${error.message}`) - } - } else { throw error } - } - expect(failed).to.equal(true); - }); - it('should throw an error if the pipeline\'s configuration has no endpoint for the Iterator', () => { - const invalidConfiguration = { - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - }, - generator: [ - { - query: 'file://static/example/generator-stage-1-1.rq' - } - ] - }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ - { - query: 'file://static/example/generator-stage-2.rq', - } - ] - } - ] - } as unknown as LDWorkbenchConfiguration - const pipeline = new Pipeline(invalidConfiguration, { silent: true }); - let failed = false - try { - pipeline.validate() - } catch (error) { - if (error instanceof Error) { - if (error.message === 'The first stage of your pipeline must have an endpoint defined for the Iterator.') { - failed = true - } - else { - throw new Error(`This test expected an error with message "The first stage of your pipeline must have an endpoint defined for the Iterator.", but received: ${error.message}`) - } - } else { throw error } - } - expect(failed).to.equal(true); - }); - it('should throw an error if the pipeline\'s configuration has duplicate stage name', () => { - const configDuplicateStageName: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ - { - query: 'file://static/example/generator-stage-1-1.rq' - } - ] - }, - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ - { - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } - ] - } - ] - } - const pipeline = new Pipeline(configDuplicateStageName, { silent: true }); - let failed = false - try { - pipeline.validate() - } catch (error) { - if (error instanceof Error) { - if (error.message === 'Detected a duplicate name for stage `Stage 1` in your pipeline: each stage must have a unique name.') { - failed = true - } - else { - throw new Error(`This test expected an error with message "Detected a duplicate name for stage \`Stage 1\` in your pipeline: each stage must have a unique name.", but received: ${error.message}`) - } - } else { throw error } - } - expect(failed).to.equal(true); - - }); - - it('should succeed if pipeline is valid', () => { - const configDuplicateStageName: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ - { - query: 'file://static/example/generator-stage-1-1.rq' - } - ] - }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ - { - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } - ] - } - ] - } - const pipeline = new Pipeline(configDuplicateStageName, { silent: true }); - let failed = false - try { - pipeline.validate() - } catch (error) { - failed = true - if (error instanceof Error) { - throw new Error(`This test was expected to succeed, but failed with: ${error.message}`) - } else { throw error } - } - expect(failed).to.equal(false); - }); + describe('validate', () => { + it("should throw an error if the pipeline's configuration has no stages", () => { + const invalidConfiguration = { + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [], + } as unknown as LDWorkbenchConfiguration; + const pipeline = new Pipeline(invalidConfiguration, {silent: true}); + let failed = false; + try { + pipeline.validate(); + } catch (error) { + if (error instanceof Error) { + if (error.message === 'Your pipeline contains no stages.') { + failed = true; + } else { + throw new Error( + `This test expected an error with message "Your pipeline contains no stages.", but received: ${error.message}` + ); + } + } else { + throw error; + } + } + expect(failed).to.equal(true); + }); + it("should throw an error if the pipeline's configuration has no endpoint for the Iterator", () => { + const invalidConfiguration = { + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + }, + ], + }, + ], + } as unknown as LDWorkbenchConfiguration; + const pipeline = new Pipeline(invalidConfiguration, {silent: true}); + let failed = false; + try { + pipeline.validate(); + } catch (error) { + if (error instanceof Error) { + if ( + error.message === + 'The first stage of your pipeline must have an endpoint defined for the Iterator.' + ) { + failed = true; + } else { + throw new Error( + `This test expected an error with message "The first stage of your pipeline must have an endpoint defined for the Iterator.", but received: ${error.message}` + ); + } + } else { + throw error; + } + } + expect(failed).to.equal(true); + }); + it("should throw an error if the pipeline's configuration has duplicate stage name", () => { + const configDuplicateStageName: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configDuplicateStageName, {silent: true}); + let failed = false; + try { + pipeline.validate(); + } catch (error) { + if (error instanceof Error) { + if ( + error.message === + 'Detected a duplicate name for stage `Stage 1` in your pipeline: each stage must have a unique name.' + ) { + failed = true; + } else { + throw new Error( + `This test expected an error with message "Detected a duplicate name for stage \`Stage 1\` in your pipeline: each stage must have a unique name.", but received: ${error.message}` + ); + } + } else { + throw error; + } + } + expect(failed).to.equal(true); }); - describe('run', () => { - it('should run the pipeline correctly', async () => { - try { + it('should succeed if pipeline is valid', () => { + const configDuplicateStageName: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configDuplicateStageName, {silent: true}); + let failed = false; + try { + pipeline.validate(); + } catch (error) { + failed = true; + if (error instanceof Error) { + throw new Error( + `This test was expected to succeed, but failed with: ${error.message}` + ); + } else { + throw error; + } + } + expect(failed).to.equal(false); + }); + }); - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ - { - query: 'file://static/example/generator-stage-1-1.rq' - } - ] - }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ - { - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } - ] - } - ] - } - const pipeline = new Pipeline(configuration, { silent: true }) - - await pipeline.run() - } catch(e) { - console.log(e) - throw e - } + describe('run', () => { + it('should run the pipeline correctly', async () => { + try { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); - }); + await pipeline.run(); + } catch (e) { + console.log(e); + throw e; + } }); - + }); }); diff --git a/src/lib/tests/PreviousStage.class.test.ts b/src/lib/tests/PreviousStage.class.test.ts index 18ea014..4e3fba4 100644 --- a/src/lib/tests/PreviousStage.class.test.ts +++ b/src/lib/tests/PreviousStage.class.test.ts @@ -1,182 +1,196 @@ import PreviousStage from '../PreviousStage.class.js'; -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import type { LDWorkbenchConfiguration } from '../LDWorkbenchConfiguration.js'; +import * as chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import type {LDWorkbenchConfiguration} from '../LDWorkbenchConfiguration.js'; import Pipeline from '../Pipeline.class.js'; import Stage from '../Stage.class.js'; -chai.use(chaiAsPromised) -const expect = chai.expect +chai.use(chaiAsPromised); +const expect = chai.expect; describe('PreviousStage Class', () => { - describe('constructor', () => { - it('should set properties correctly', () => { - const config: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - pipeline.validate() - const stage: Stage = new Stage(pipeline, config.stages[1]) - const stagesSoFar = Array.from(stage.pipeline.stages.keys()); - const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); - expect(previousStage).to.be.an.instanceOf(PreviousStage); - expect(previousStage).to.have.property('nextStage'); - expect(previousStage).to.have.property('name'); - expect(previousStage.$id).to.equal('PreviousStage'); - }); + describe('constructor', () => { + it('should set properties correctly', () => { + const config: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + pipeline.validate(); + const stage: Stage = new Stage(pipeline, config.stages[1]); + const stagesSoFar = Array.from(stage.pipeline.stages.keys()); + const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); + expect(previousStage).to.be.an.instanceOf(PreviousStage); + expect(previousStage).to.have.property('nextStage'); + expect(previousStage).to.have.property('name'); + expect(previousStage.$id).to.equal('PreviousStage'); + }); + }); + describe('load', () => { + it('should throw an error if the previous stage is not found', () => { + const config: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + pipeline.validate(); + const stage: Stage = new Stage(pipeline, config.stages[0]); + const stagesSoFar = Array.from(stage.pipeline.stages.keys()); + const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); + expect(() => previousStage.load()).to.throw( + 'no endpoint was defined, but there is also no previous stage to use' + ); }); - describe('load', () => { - it('should throw an error if the previous stage is not found', () => { - const config: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - pipeline.validate() - const stage: Stage = new Stage(pipeline, config.stages[0]) - const stagesSoFar = Array.from(stage.pipeline.stages.keys()); - const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); - expect(() => previousStage.load()).to.throw("no endpoint was defined, but there is also no previous stage to use") - }); - it('should return the previous stage correctly', () => { - const config: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - pipeline.validate() - const stageTwo: Stage = new Stage(pipeline, config.stages[1]) - const stagesSoFar = Array.from(stageTwo.pipeline.stages.keys()); - const previousStage = new PreviousStage(stageTwo, stagesSoFar.pop()!); // should be stage one - const stage2 = pipeline.stages.get('Stage 2')!; - const testPreviousStage = pipeline.getPreviousStage(stage2) - expect(previousStage.load()).to.equal(testPreviousStage) - }); + it('should return the previous stage correctly', () => { + const config: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + pipeline.validate(); + const stageTwo: Stage = new Stage(pipeline, config.stages[1]); + const stagesSoFar = Array.from(stageTwo.pipeline.stages.keys()); + const previousStage = new PreviousStage(stageTwo, stagesSoFar.pop()!); // should be stage one + const stage2 = pipeline.stages.get('Stage 2')!; + const testPreviousStage = pipeline.getPreviousStage(stage2); + expect(previousStage.load()).to.equal(testPreviousStage); }); + }); - describe('is', () => { - it('should return true for a valid PreviousStage instance', () => { - const config: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - pipeline.validate() - const stage: Stage = new Stage(pipeline, config.stages[1]) - const stagesSoFar = Array.from(stage.pipeline.stages.keys()); - const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); - previousStage.load() - const result = PreviousStage.is(previousStage); - expect(result).to.equal(true); - }); + describe('is', () => { + it('should return true for a valid PreviousStage instance', () => { + const config: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + pipeline.validate(); + const stage: Stage = new Stage(pipeline, config.stages[1]); + const stagesSoFar = Array.from(stage.pipeline.stages.keys()); + const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); + previousStage.load(); + const result = PreviousStage.is(previousStage); + expect(result).to.equal(true); + }); - it('should return false for an invalid instance', () => { - const invalidInstance = { $id: 'invalid' } - const result = PreviousStage.is(invalidInstance); - expect(result).to.equal(false); - }); + it('should return false for an invalid instance', () => { + const invalidInstance = {$id: 'invalid'}; + const result = PreviousStage.is(invalidInstance); + expect(result).to.equal(false); }); + }); }); diff --git a/src/lib/tests/Stage.class.test.ts b/src/lib/tests/Stage.class.test.ts index 4e9ac90..faaffd1 100644 --- a/src/lib/tests/Stage.class.test.ts +++ b/src/lib/tests/Stage.class.test.ts @@ -1,221 +1,247 @@ -import Stage from "../Stage.class.js"; +import Stage from '../Stage.class.js'; import Pipeline from '../Pipeline.class.js'; -import kebabcase from 'lodash.kebabcase' +import kebabcase from 'lodash.kebabcase'; import Iterator from '../Iterator.class.js'; import Generator from '../Generator.class.js'; -import * as chai from 'chai' +import * as chai from 'chai'; import * as path from 'path'; -import chaiAsPromised from 'chai-as-promised' -import type { NamedNode } from "n3"; -import type { LDWorkbenchConfiguration } from "../LDWorkbenchConfiguration.js"; -import { fileURLToPath } from "url"; -import removeDirectory from "../../utils/removeDir.js"; +import chaiAsPromised from 'chai-as-promised'; +import type {NamedNode} from 'n3'; +import type {LDWorkbenchConfiguration} from '../LDWorkbenchConfiguration.js'; +import {fileURLToPath} from 'url'; +import removeDirectory from '../../utils/removeDir.js'; -chai.use(chaiAsPromised) -const expect = chai.expect +chai.use(chaiAsPromised); +const expect = chai.expect; describe('Stage Class', () => { - const _filename = fileURLToPath(import.meta.url); - const _dirname = path.dirname(_filename); - const dataDirectoryPath = path.join(_dirname, 'pipelines', 'data'); - - before(async function () { - // Remove the data directory before running tests - await removeDirectory(dataDirectoryPath); - }); + const _filename = fileURLToPath(import.meta.url); + const _dirname = path.dirname(_filename); + const dataDirectoryPath = path.join(_dirname, 'pipelines', 'data'); + before(async () => { + // Remove the data directory before running tests + await removeDirectory(dataDirectoryPath); + }); - describe('constructor', () => { - it('should set properties correctly', () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig) - expect(stage).to.be.an.instanceOf(Stage); - expect(stage).to.have.property('destination'); - expect(stage).to.have.property('iterator'); - expect(stage).to.have.property('generators'); - expect(stage.iterator).to.be.an.instanceOf(Iterator); - expect(stage.generators[0]).to.be.an.instanceOf(Generator); - expect(stage.pipeline).to.be.an.instanceOf(Pipeline); - expect(stage).to.have.property('pipeline', pipeline); - expect(stage).to.have.property('configuration'); - }); + describe('constructor', () => { + it('should set properties correctly', () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + expect(stage).to.be.an.instanceOf(Stage); + expect(stage).to.have.property('destination'); + expect(stage).to.have.property('iterator'); + expect(stage).to.have.property('generators'); + expect(stage.iterator).to.be.an.instanceOf(Iterator); + expect(stage.generators[0]).to.be.an.instanceOf(Generator); + expect(stage.pipeline).to.be.an.instanceOf(Pipeline); + expect(stage).to.have.property('pipeline', pipeline); + expect(stage).to.have.property('configuration'); }); + }); - describe('destinationPath', () => { - it('should return the correct destination path', () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig); - const expectedPath = path.join(pipeline.dataDir, kebabcase(stageConfig.name) + '.nt') - expect(stage.destinationPath).to.equal(expectedPath.replace('file://', '')); - }); + describe('destinationPath', () => { + it('should return the correct destination path', () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const expectedPath = path.join( + pipeline.dataDir, + kebabcase(stageConfig.name) + '.nt' + ); + expect(stage.destinationPath).to.equal( + expectedPath.replace('file://', '') + ); }); + }); - describe('name', () => { - it('should return the correct stage name', () => { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig); - expect(stage.name).to.equal(stageConfig.name); - }); + describe('name', () => { + it('should return the correct stage name', () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + expect(stage.name).to.equal(stageConfig.name); }); + }); - describe.skip('run', () => { - it('should run the stage correctly', async function () { - const configuration: LDWorkbenchConfiguration = { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig); + describe.skip('run', () => { + it('should run the stage correctly', async () => { + const configuration: LDWorkbenchConfiguration = { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); - const iteratorEvents: Array<{event: 'iteratorResult', namedNode: NamedNode}> = []; - const generatorEvents: Array<{event: 'generatorResult', count: number}> = []; - const endEvents: Array<{ event: 'end', iteratorCount: number, statements: number }> = []; - async function runStageWithPromise(): Promise { - return new Promise((resolve, reject) => { - stage.addListener('generatorResult', (count) => { - generatorEvents.push({ event: 'generatorResult', count }); - }); - stage.addListener('iteratorResult', (namedNode) => { - iteratorEvents.push({ event: 'iteratorResult', namedNode }); - }); - stage.addListener('end', (iteratorCount, statements) => { - endEvents.push({ event: 'end', iteratorCount, statements }); - resolve(true); - }); - stage.addListener('error', (error) => { - reject(error); - }); - stage.run(); - }); - } - await runStageWithPromise() - expect(iteratorEvents[0].event).to.equal('iteratorResult') - expect(iteratorEvents[0].namedNode.termType).to.equal('NamedNode') - expect(iteratorEvents[0].namedNode.value).to.equal('http://dbpedia.org/resource/Iris_virginica') - expect(iteratorEvents.length).to.equal(153) - expect(generatorEvents[0].event).to.equal('generatorResult') - expect(generatorEvents[0].count).to.equal(1) - expect(generatorEvents.length).to.equal(459) - expect(endEvents[0].event).to.equal('end') - expect(endEvents[0].iteratorCount).to.equal(153) - expect(endEvents[0].statements).to.equal(459) - expect(endEvents.length).to.equal(1) + const iteratorEvents: Array<{ + event: 'iteratorResult'; + namedNode: NamedNode; + }> = []; + const generatorEvents: Array<{event: 'generatorResult'; count: number}> = + []; + const endEvents: Array<{ + event: 'end'; + iteratorCount: number; + statements: number; + }> = []; + async function runStageWithPromise(): Promise { + return new Promise((resolve, reject) => { + stage.addListener('generatorResult', count => { + generatorEvents.push({event: 'generatorResult', count}); + }); + stage.addListener('iteratorResult', namedNode => { + iteratorEvents.push({event: 'iteratorResult', namedNode}); + }); + stage.addListener('end', (iteratorCount, statements) => { + endEvents.push({event: 'end', iteratorCount, statements}); + resolve(true); + }); + stage.addListener('error', error => { + reject(error); + }); + stage.run(); }); + } + await runStageWithPromise(); + expect(iteratorEvents[0].event).to.equal('iteratorResult'); + expect(iteratorEvents[0].namedNode.termType).to.equal('NamedNode'); + expect(iteratorEvents[0].namedNode.value).to.equal( + 'http://dbpedia.org/resource/Iris_virginica' + ); + expect(iteratorEvents.length).to.equal(153); + expect(generatorEvents[0].event).to.equal('generatorResult'); + expect(generatorEvents[0].count).to.equal(1); + expect(generatorEvents.length).to.equal(459); + expect(endEvents[0].event).to.equal('end'); + expect(endEvents[0].iteratorCount).to.equal(153); + expect(endEvents[0].statements).to.equal(459); + expect(endEvents.length).to.equal(1); }); + }); }); diff --git a/src/lib/types.ts b/src/lib/types.ts index 35c98a2..aaff9e2 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,7 +1,7 @@ -import type File from './File.class.js' -import type PreviousStage from './PreviousStage.class.js' -import { type QueryEngine as QueryEngineSparql } from "@comunica/query-sparql"; -import { type QueryEngine as QueryEngineFile } from '@comunica/query-sparql-file'; +import type File from './File.class.js'; +import type PreviousStage from './PreviousStage.class.js'; +import {type QueryEngine as QueryEngineSparql} from '@comunica/query-sparql'; +import {type QueryEngine as QueryEngineFile} from '@comunica/query-sparql-file'; -export type Endpoint = File | URL | PreviousStage -export type QueryEngine = QueryEngineSparql | QueryEngineFile \ No newline at end of file +export type Endpoint = File | URL | PreviousStage; +export type QueryEngine = QueryEngineSparql | QueryEngineFile; diff --git a/src/main.tsx b/src/main.ts similarity index 53% rename from src/main.tsx rename to src/main.ts index 08b412d..c432bf4 100644 --- a/src/main.tsx +++ b/src/main.ts @@ -1,19 +1,23 @@ #!/usr/bin/env node import inquirer from 'inquirer'; import chalk from 'chalk'; -import { error } from './utils/error.js'; +import {error} from './utils/error.js'; import version from './utils/version.js'; -import type { LDWorkbenchConfiguration } from './lib/LDWorkbenchConfiguration.js'; +import type {LDWorkbenchConfiguration} from './lib/LDWorkbenchConfiguration.js'; import loadPipelines from './utils/loadPipelines.js'; import Pipeline from './lib/Pipeline.class.js'; -import { cliArgs } from './cliArgs.js'; +import {cliArgs} from './cliArgs.js'; -console.info(chalk.bold(`Welcome to LD Workbench version ${chalk.cyan(version())}`)); +console.info( + chalk.bold(`Welcome to LD Workbench version ${chalk.cyan(version())}`) +); async function main(): Promise { let pipelines = new Map(); try { - pipelines = loadPipelines(cliArgs.config ?? cliArgs.configDir ?? './pipelines/'); + pipelines = loadPipelines( + cliArgs.config ?? cliArgs.configDir ?? './pipelines/' + ); } catch (e) { error(e as Error); } @@ -26,14 +30,18 @@ async function main(): Promise { if (cliArgs.pipeline !== undefined) { const config = pipelines.get(cliArgs.pipeline); if (config === undefined) { - error(`No pipeline named "${cliArgs.pipeline}" was found.`, 2, `Valid pipeline names are: ${names.map(name => `"${name}"`).join(', ')}`); + error( + `No pipeline named "${cliArgs.pipeline}" was found.`, + 2, + `Valid pipeline names are: ${names.map(name => `"${name}"`).join(', ')}` + ); } configuration = pipelines.get(cliArgs.pipeline); } else if (names.length === 1) { configuration = pipelines.get(names[0]); } - const answers: { pipeline?: string } = await inquirer.prompt({ + const answers: {pipeline?: string} = await inquirer.prompt({ type: 'list', name: 'pipeline', when: configuration === undefined, @@ -43,30 +51,42 @@ async function main(): Promise { if (answers.pipeline !== undefined) { if (!pipelines.has(answers.pipeline)) { - error(`This should not happen: pipeline ${chalk.italic(answers.pipeline)} does not exist.`); + error( + `This should not happen: pipeline ${chalk.italic( + answers.pipeline + )} does not exist.` + ); } configuration = pipelines.get(answers.pipeline); } else if (names.length !== 1) { - error('This should not happen: no pipeline was picked, but we have multiple.'); + error( + 'This should not happen: no pipeline was picked, but we have multiple.' + ); } else { configuration = pipelines.get(names[0]); } - if (configuration === undefined) { - throw new Error("Unable to get a configuration based on the CLI arguments."); + throw new Error( + 'Unable to get a configuration based on the CLI arguments.' + ); } - const pipeline = new Pipeline(configuration, { startFromStageName: cliArgs.stage }); + const pipeline = new Pipeline(configuration, { + startFromStageName: cliArgs.stage, + }); try { await pipeline.run(); - process.exit(0) } catch (e) { - error(`Error in pipeline ${chalk.italic(configuration.name)}`, 5, e as Error); + error( + `Error in pipeline ${chalk.italic(configuration.name)}`, + 5, + e as Error + ); } } -main().catch((e) => { +main().catch(e => { error(e as Error); }); diff --git a/src/utils/error.ts b/src/utils/error.ts index 3094012..5294139 100644 --- a/src/utils/error.ts +++ b/src/utils/error.ts @@ -1,11 +1,17 @@ import chalk from 'chalk'; -export const error = (message: string | Error, exitCode?: number, ...info: Array): void => { - console.error(chalk.red(message instanceof Error ? message.message : message)); +export const error = ( + message: string | Error, + exitCode?: number, + ...info: Array +): void => { + console.error( + chalk.red(message instanceof Error ? message.message : message) + ); if (info.length > 0) { for (const i of info) { console.info(i instanceof Error ? i.message : i); } } - if ((exitCode ?? 1) > 0) process.exit(exitCode); + throw message; }; diff --git a/src/utils/formatDuration.ts b/src/utils/formatDuration.ts index f640383..788a38a 100644 --- a/src/utils/formatDuration.ts +++ b/src/utils/formatDuration.ts @@ -1,11 +1,16 @@ -export default function formatDuration(startTime: number, endTime: number): string { +export default function formatDuration( + startTime: number, + endTime: number +): string { const durationInMilliseconds = endTime - startTime; const hours = Math.floor(durationInMilliseconds / 3600000); const minutes = Math.floor((durationInMilliseconds % 3600000) / 60000); const seconds = Math.floor((durationInMilliseconds % 60000) / 1000); - const formattedDuration = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; + const formattedDuration = `${hours.toString().padStart(2, '0')}:${minutes + .toString() + .padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; return formattedDuration; -} \ No newline at end of file +} diff --git a/src/utils/getEndpoint.ts b/src/utils/getEndpoint.ts index b256e57..b2147f4 100644 --- a/src/utils/getEndpoint.ts +++ b/src/utils/getEndpoint.ts @@ -1,14 +1,11 @@ -import File from "../lib/File.class.js"; -import type { LDWorkbenchConfiguration } from '../lib/LDWorkbenchConfiguration.js'; -import PreviousStage from "../lib/PreviousStage.class.js"; +import File from '../lib/File.class.js'; +import type {LDWorkbenchConfiguration} from '../lib/LDWorkbenchConfiguration.js'; +import PreviousStage from '../lib/PreviousStage.class.js'; import type Stage from '../lib/Stage.class.js'; -import type { Endpoint } from '../lib/types.js'; -import { isFilePathString } from './guards.js'; +import type {Endpoint} from '../lib/types.js'; +import {isFilePathString} from './guards.js'; -export default function getEndpoint( - stage: Stage, - type?: 'iterator' -): Endpoint; +export default function getEndpoint(stage: Stage, type?: 'iterator'): Endpoint; export default function getEndpoint( stage: Stage, type: 'generator', @@ -19,8 +16,11 @@ export default function getEndpoint( type: 'iterator' | 'generator' = 'iterator', index?: number ): Endpoint { - const t: keyof LDWorkbenchConfiguration['stages'][number] = type - const endpoint = t === "generator" ? stage.configuration[t]?.[index!]?.endpoint : stage.configuration[t]?.endpoint; + const t: keyof LDWorkbenchConfiguration['stages'][number] = type; + const endpoint = + t === 'generator' + ? stage.configuration[t]?.[index!]?.endpoint + : stage.configuration[t]?.endpoint; if (isFilePathString(endpoint)) { return new File(endpoint); } else if (endpoint !== undefined) { diff --git a/src/utils/getEngine.ts b/src/utils/getEngine.ts index 4ebff88..3c711ee 100644 --- a/src/utils/getEngine.ts +++ b/src/utils/getEngine.ts @@ -1,13 +1,15 @@ -import { QueryEngine as QueryEngineSparql } from "@comunica/query-sparql"; -import { QueryEngine as QueryEngineFile } from "@comunica/query-sparql-file"; -import type { Endpoint } from "../lib/types.js"; +import {QueryEngine as QueryEngineSparql} from '@comunica/query-sparql'; +import {QueryEngine as QueryEngineFile} from '@comunica/query-sparql-file'; +import type {Endpoint} from '../lib/types.js'; -export default function getEngine(endpoint: Endpoint): QueryEngineFile | QueryEngineSparql { +export default function getEngine( + endpoint: Endpoint +): QueryEngineFile | QueryEngineSparql { let engine: QueryEngineFile | QueryEngineSparql; if (endpoint instanceof URL) { engine = new QueryEngineSparql(); } else { engine = new QueryEngineFile(); } - return engine + return engine; } diff --git a/src/utils/getEngineSource.ts b/src/utils/getEngineSource.ts index aea6c01..39603cb 100644 --- a/src/utils/getEngineSource.ts +++ b/src/utils/getEngineSource.ts @@ -1,7 +1,7 @@ -import { isPreviousStage } from './guards.js'; -import { existsSync } from 'fs'; +import {isPreviousStage} from './guards.js'; +import {existsSync} from 'fs'; import path from 'path'; -import type { Endpoint } from '../lib/types.js'; +import type {Endpoint} from '../lib/types.js'; export default function getEngineSource(endpoint: Endpoint): string { let source: string; @@ -16,5 +16,5 @@ export default function getEngineSource(endpoint: Endpoint): string { } else { source = endpoint.toString(); } - return source + return source; } diff --git a/src/utils/getSPARQLQuery.ts b/src/utils/getSPARQLQuery.ts index 962ffcd..0e1a074 100644 --- a/src/utils/getSPARQLQuery.ts +++ b/src/utils/getSPARQLQuery.ts @@ -1,41 +1,41 @@ -import chalk from "chalk"; -import fs from "fs"; +import chalk from 'chalk'; +import fs from 'fs'; import { type SelectQuery, type ConstructQuery, Parser, type Pattern, -} from "sparqljs"; +} from 'sparqljs'; -type QueryTypes = "select" | "construct"; +type QueryTypes = 'select' | 'construct'; -type QueryType = T extends "select" +type QueryType = T extends 'select' ? SelectQuery - : T extends "construct" - ? ConstructQuery - : never; + : T extends 'construct' + ? ConstructQuery + : never; export default function getSPARQLQuery( queryStringOrFile: string, type: T ): QueryType { - let query = ""; - if (queryStringOrFile.startsWith("file://")) { - const file = queryStringOrFile.replace("file://", ""); + let query = ''; + if (queryStringOrFile.startsWith('file://')) { + const file = queryStringOrFile.replace('file://', ''); if (!fs.existsSync(file) || !fs.statSync(file).isFile()) { throw new Error(`File not found: ${chalk.italic(file)}`); } - query = fs.readFileSync(file, "utf-8"); + query = fs.readFileSync(file, 'utf-8'); } else { query = queryStringOrFile; } const parsed = new Parser().parse(query); - if (parsed.type !== "query") { + if (parsed.type !== 'query') { throw new Error(`Unexpected querytype ${parsed.type}`); } if (parsed.queryType.toLowerCase() === type) { const query = parsed as QueryType; - if (query.queryType === "CONSTRUCT") { + if (query.queryType === 'CONSTRUCT') { checkSPARQLConstructQuery(query.where); } return query; @@ -54,27 +54,29 @@ function checkSPARQLConstructQuery(patterns?: Pattern[]): void { if (patterns === undefined) return; for (const pattern of patterns) { if (pattern.type === 'bind') { - if(pattern.variable.value === 'this') { - throw new Error('SPARQL queries must not use the syntax form `AS ?this` because it is a pre-bound variable') + if (pattern.variable.value === 'this') { + throw new Error( + 'SPARQL queries must not use the syntax form `AS ?this` because it is a pre-bound variable' + ); } } - if (pattern.type === "minus") + if (pattern.type === 'minus') throw new Error( - "SPARQL construct queries must not contain a MINUS clause" + 'SPARQL construct queries must not contain a MINUS clause' ); - if (pattern.type === "service") + if (pattern.type === 'service') throw new Error( - "SPARQL construct queries must not contain a SERVICE clause" + 'SPARQL construct queries must not contain a SERVICE clause' ); - if (pattern.type === "values") + if (pattern.type === 'values') throw new Error( - "SPARQL construct queries must not contain a VALUES clause" + 'SPARQL construct queries must not contain a VALUES clause' ); if ( - pattern.type === "optional" || - pattern.type === "union" || - pattern.type === "group" || - pattern.type === "graph" + pattern.type === 'optional' || + pattern.type === 'union' || + pattern.type === 'group' || + pattern.type === 'graph' ) { checkSPARQLConstructQuery(pattern.patterns); } diff --git a/src/utils/getSPARQLQueryString.ts b/src/utils/getSPARQLQueryString.ts index b24b580..c80a1e3 100644 --- a/src/utils/getSPARQLQueryString.ts +++ b/src/utils/getSPARQLQueryString.ts @@ -1,10 +1,10 @@ -import sparqljs from 'sparqljs' -import { type SelectQuery, type ConstructQuery } from 'sparqljs' -const { Generator } = sparqljs +import sparqljs from 'sparqljs'; +import {type SelectQuery, type ConstructQuery} from 'sparqljs'; +const {Generator} = sparqljs; function getSPARQLQueryString(query: SelectQuery | ConstructQuery): string { const generator = new Generator(); return generator.stringify(query); } -export default getSPARQLQueryString \ No newline at end of file +export default getSPARQLQueryString; diff --git a/src/utils/guards.ts b/src/utils/guards.ts index e09ba28..d632dd0 100644 --- a/src/utils/guards.ts +++ b/src/utils/guards.ts @@ -1,30 +1,30 @@ -import type { LDWorkbenchConfiguration } from '../lib/LDWorkbenchConfiguration.js'; -import type PreviousStage from '../lib/PreviousStage.class.js'; -import type File from '../lib/File.class.js'; +import type {LDWorkbenchConfiguration} from '../lib/LDWorkbenchConfiguration.js'; +import PreviousStage from '../lib/PreviousStage.class.js'; import validate from './validate.js'; import TriplyDB from '../lib/TriplyDB.class.js'; +import File from '../lib/File.class.js'; -export const isConfiguration = (value: any): value is LDWorkbenchConfiguration => - typeof value === 'object' && validate(value) === null +export const isConfiguration = ( + value: unknown +): value is LDWorkbenchConfiguration => + value !== null && typeof value === 'object' && validate(value) === null; +type FilePathString = string; +export const isFilePathString = (value?: string): value is FilePathString => { + return value !== undefined && value.startsWith('file://'); +}; -type FilePathString = string -export const isFilePathString = (value: any): value is FilePathString => { - if (typeof value !== 'string') return false - if (!value.startsWith('file://')) return false - return true -} +type TriplyDBPathString = string; +export const isTriplyDBPathString = ( + value: unknown +): value is TriplyDBPathString => { + if (typeof value !== 'string') return false; + if (!value.startsWith('triplydb://')) return false; + TriplyDB.assertValidDsn(value); + return true; +}; -type TriplyDBPathString = string -export const isTriplyDBPathString = (value: any): value is TriplyDBPathString => { - if (typeof value !== 'string') return false - if (!value.startsWith('triplydb://')) return false - TriplyDB.assertValidDsn(value) - return true -} +export const isPreviousStage = (value: unknown): value is PreviousStage => + value instanceof PreviousStage; -export const isPreviousStage = (value: any): value is PreviousStage => - typeof value === 'object' && Object.hasOwn(value, '$id') && value.$id === 'PreviousStage' - -export const isFile = (value: any): value is File => - typeof value === 'object' && Object.hasOwn(value, '$id') && value.$id === 'File' +export const isFile = (value: unknown): value is File => value instanceof File; diff --git a/src/utils/init.ts b/src/utils/init.ts index 36ff438..ec963a8 100644 --- a/src/utils/init.ts +++ b/src/utils/init.ts @@ -1,71 +1,113 @@ import fs from 'fs'; -import { fileURLToPath } from 'url'; +import {fileURLToPath} from 'url'; import * as path from 'path'; -import glob from 'glob' +import glob from 'glob'; export default function init(): void { const $dirname = path.dirname(fileURLToPath(import.meta.url)); - if(fs.existsSync(path.join('pipelines', 'configurations', 'example'))) { - throw new Error('The --init script found an existing directory "' + path.join('pipelines', 'configurations', 'example') + '". Make sure this directory does not exists before running this script.') + if (fs.existsSync(path.join('pipelines', 'configurations', 'example'))) { + throw new Error( + 'The --init script found an existing directory "' + + path.join('pipelines', 'configurations', 'example') + + '". Make sure this directory does not exists before running this script.' + ); } - fs.mkdirSync(path.join('pipelines', 'data'), {recursive: true}) - fs.mkdirSync(path.join('pipelines', 'configurations', 'example'), {recursive: true}) - const filepaths = glob.sync(path.join($dirname, '..', '..', 'static', 'example', '*')) - for(const filepath of filepaths) { - fs.copyFileSync(filepath, path.join('pipelines', 'configurations', 'example', path.basename(filepath))) + fs.mkdirSync(path.join('pipelines', 'data'), {recursive: true}); + fs.mkdirSync(path.join('pipelines', 'configurations', 'example'), { + recursive: true, + }); + const filepaths = glob.sync( + path.join($dirname, '..', '..', 'static', 'example', '*') + ); + for (const filepath of filepaths) { + fs.copyFileSync( + filepath, + path.join( + 'pipelines', + 'configurations', + 'example', + path.basename(filepath) + ) + ); } - const yamlFile = path.join('pipelines', 'configurations', 'example', 'config.yml') - const yaml = fs.readFileSync(yamlFile, 'utf-8') - .replaceAll(/\/static\//g, '/pipelines/configurations/') - fs.writeFileSync(yamlFile, yaml) + const yamlFile = path.join( + 'pipelines', + 'configurations', + 'example', + 'config.yml' + ); + const yaml = fs + .readFileSync(yamlFile, 'utf-8') + .replaceAll(/\/static\//g, '/pipelines/configurations/'); + fs.writeFileSync(yamlFile, yaml); const yamlSchemasSettings = { - "yaml.schemas": { - "node_modules/ld-workbench/static/ld-workbench.schema.json": [ - "pipelines/configurations/**/*.yml", - "static/example/*.yml", + 'yaml.schemas': { + 'node_modules/ld-workbench/static/ld-workbench.schema.json': [ + 'pipelines/configurations/**/*.yml', + 'static/example/*.yml', ], - } - } + }, + }; const extensions = [ - "dbaeumer.vscode-eslint", - "stardog-union.vscode-langserver-sparql", - "stardog-union.stardog-rdf-grammars", - "MarkLindeman.turtle-vocab-autocomplete" - ] + 'dbaeumer.vscode-eslint', + 'stardog-union.vscode-langserver-sparql', + 'stardog-union.stardog-rdf-grammars', + 'MarkLindeman.turtle-vocab-autocomplete', + ]; // setting up VSC/Git settings, if this fails, that's fine: try { if (!fs.existsSync('.gitignore')) { - fs.writeFileSync('.gitignore', 'node_modules\n') + fs.writeFileSync('.gitignore', 'node_modules\n'); } - if (!fs.existsSync('.vscode')) fs.mkdirSync('.vscode') - const settingsFile = path.join('.vscode', 'settings.json') - const extensionsFile = path.join('.vscode', 'extensions.json') + if (!fs.existsSync('.vscode')) fs.mkdirSync('.vscode'); + const settingsFile = path.join('.vscode', 'settings.json'); + const extensionsFile = path.join('.vscode', 'extensions.json'); if (!fs.existsSync(settingsFile)) { - fs.writeFileSync(settingsFile, JSON.stringify(yamlSchemasSettings, undefined, 2)) + fs.writeFileSync( + settingsFile, + JSON.stringify(yamlSchemasSettings, undefined, 2) + ); } else { - const settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8')) + const settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8')); if (!Object.hasOwn(settings, 'yaml.schemas')) { - settings['yaml.schemas'] = yamlSchemasSettings['yaml.schemas'] + settings['yaml.schemas'] = yamlSchemasSettings['yaml.schemas']; } else { - settings['yaml.schemas']["node_modules/ld-workbench/static/ld-workbench.schema.json"] = yamlSchemasSettings['yaml.schemas']["node_modules/ld-workbench/static/ld-workbench.schema.json"] + settings['yaml.schemas'][ + 'node_modules/ld-workbench/static/ld-workbench.schema.json' + ] = + yamlSchemasSettings['yaml.schemas'][ + 'node_modules/ld-workbench/static/ld-workbench.schema.json' + ]; } - fs.writeFileSync(settingsFile, JSON.stringify(yamlSchemasSettings, undefined, 2)) + fs.writeFileSync( + settingsFile, + JSON.stringify(yamlSchemasSettings, undefined, 2) + ); } if (!fs.existsSync(extensionsFile)) { - fs.writeFileSync(extensionsFile, JSON.stringify({recommendations: extensions}, undefined, 2)) + fs.writeFileSync( + extensionsFile, + JSON.stringify({recommendations: extensions}, undefined, 2) + ); } else { - const settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8')) + const settings = JSON.parse(fs.readFileSync(settingsFile, 'utf-8')); if (!Object.hasOwn(settings, 'recommendations')) { - settings.recommendations = extensions + settings.recommendations = extensions; } else { - settings.recommendations = (settings.recommendations as string[]).concat(extensions) + settings.recommendations = ( + settings.recommendations as string[] + ).concat(extensions); } - fs.writeFileSync(settingsFile, JSON.stringify(settingsFile, undefined, 2)) + fs.writeFileSync( + settingsFile, + JSON.stringify(settingsFile, undefined, 2) + ); } - } catch(e) {} - -} \ No newline at end of file + } catch (e) { + // Ignore. + } +} diff --git a/src/utils/loadConfiguration.ts b/src/utils/loadConfiguration.ts index b924f57..f70fb71 100644 --- a/src/utils/loadConfiguration.ts +++ b/src/utils/loadConfiguration.ts @@ -1,4 +1,4 @@ -import type { LDWorkbenchConfiguration } from '../lib/LDWorkbenchConfiguration.js'; +import type {LDWorkbenchConfiguration} from '../lib/LDWorkbenchConfiguration.js'; import parseYamlFile from './parseYamlFile.js'; import validate from './validate.js'; @@ -6,11 +6,15 @@ import validate from './validate.js'; * This is a wrapper for the YAML Parser and Schema Validator * to provide a 1 step loader. */ -export default function loadConfiguration (filePath: string): LDWorkbenchConfiguration { - const configuration = parseYamlFile(filePath) - const errors = validate(configuration) +export default function loadConfiguration( + filePath: string +): LDWorkbenchConfiguration { + const configuration = parseYamlFile(filePath); + const errors = validate(configuration); if (errors !== null) { - throw new Error(`The YAML file \`${filePath}\` is not a valid LD Workbench configuration file.`) + throw new Error( + `The YAML file \`${filePath}\` is not a valid LD Workbench configuration file.` + ); } - return configuration -} \ No newline at end of file + return configuration as LDWorkbenchConfiguration; +} diff --git a/src/utils/loadPipelines.ts b/src/utils/loadPipelines.ts index 0651e69..a2449c0 100644 --- a/src/utils/loadPipelines.ts +++ b/src/utils/loadPipelines.ts @@ -1,40 +1,51 @@ - import fs from 'fs' -import type { LDWorkbenchConfiguration } from '../lib/LDWorkbenchConfiguration.js' -import chalk from 'chalk' -import glob from 'glob' -import loadConfiguration from './loadConfiguration.js' +import fs from 'fs'; +import type {LDWorkbenchConfiguration} from '../lib/LDWorkbenchConfiguration.js'; +import chalk from 'chalk'; +import glob from 'glob'; +import loadConfiguration from './loadConfiguration.js'; -export default function loadPipelines (configDirOrFile: string): Map { - const pipelines = new Map() +export default function loadPipelines( + configDirOrFile: string +): Map { + const pipelines = new Map(); if (!fs.existsSync(configDirOrFile)) - throw new Error(`Configuration directory/file ${chalk.italic(configDirOrFile)} could not be found.\nIf this is your first run of LDWorkbench, you might want to use \`npx ld-workbench --init\` to setup an example workbench project.`) + throw new Error( + `Configuration directory/file ${chalk.italic( + configDirOrFile + )} could not be found.\nIf this is your first run of LDWorkbench, you might want to use \`npx ld-workbench --init\` to setup an example workbench project.` + ); - const files: string[] = [] + const files: string[] = []; if (fs.lstatSync(configDirOrFile).isDirectory()) { try { - files.push(...glob.sync(`${configDirOrFile}/**/*.yml`)) + files.push(...glob.sync(`${configDirOrFile}/**/*.yml`)); } catch (e) { - throw (e as Error) + throw e as Error; } - if (files.length <= 0) - throw new Error(`No configuration files found matching pattern ${chalk.italic(`${configDirOrFile}/**/*.yml`)}`) + if (files.length <= 0) + throw new Error( + `No configuration files found matching pattern ${chalk.italic( + `${configDirOrFile}/**/*.yml` + )}` + ); } else { - files.push(configDirOrFile) + files.push(configDirOrFile); } files.forEach(file => { - let configuration: any - try { - configuration = loadConfiguration(file) - } catch (e) { - throw(e as Error) - } + const configuration = loadConfiguration(file); if (pipelines.has(configuration.name)) { - console.warn(chalk.yellow(`Warning: skipping a duplicate configuration from file ${chalk.italic(file)} with name ${chalk.italic(configuration.name)}`)) + console.warn( + chalk.yellow( + `Warning: skipping a duplicate configuration from file ${chalk.italic( + file + )} with name ${chalk.italic(configuration.name)}` + ) + ); } else { - pipelines.set(configuration.name, configuration) + pipelines.set(configuration.name, configuration); } - }) - return pipelines -} \ No newline at end of file + }); + return pipelines; +} diff --git a/src/utils/parseYamlFile.ts b/src/utils/parseYamlFile.ts index 892205c..00650e6 100644 --- a/src/utils/parseYamlFile.ts +++ b/src/utils/parseYamlFile.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as yaml from 'js-yaml'; -export default function parseYamlFile(filePath: string): any { +export default function parseYamlFile(filePath: string): object { // Check if the file exists and is a file if (!fs.existsSync(filePath) || !fs.statSync(filePath).isFile()) { throw new Error(`File not found: ${filePath}`); @@ -12,10 +12,10 @@ export default function parseYamlFile(filePath: string): any { try { // Parse YAML to JSON - const jsonObject = yaml.load(yamlContent); - - return jsonObject; + return yaml.load(yamlContent) as object; } catch (e) { - throw new Error(`Error parsing file: \`${filePath}\`, are you sure it is a YAML file?`); + throw new Error( + `Error parsing file: \`${filePath}\`, are you sure it is a YAML file?` + ); } } diff --git a/src/utils/removeDir.ts b/src/utils/removeDir.ts index dc8efe7..2a71f90 100644 --- a/src/utils/removeDir.ts +++ b/src/utils/removeDir.ts @@ -1,11 +1,13 @@ import * as fs from 'fs'; -export default async function removeDirectory(directory: string): Promise { +export default async function removeDirectory( + directory: string +): Promise { return new Promise((resolve, reject) => { try { if (fs.existsSync(directory)) { - fs.rm(directory, { recursive: true }, (error) => { - if (error != null) { + fs.rm(directory, {recursive: true}, error => { + if (error !== null) { console.error('Error removing directory:', error); reject(error); } else { diff --git a/src/utils/tests/utilities.test.ts b/src/utils/tests/utilities.test.ts index 8b01669..dbe186b 100644 --- a/src/utils/tests/utilities.test.ts +++ b/src/utils/tests/utilities.test.ts @@ -1,126 +1,131 @@ -import version from '../version.js' -import parseYamlFile from '../parseYamlFile.js' -import validate from '../validate.js' -import { isConfiguration, isFile, isFilePathString, isPreviousStage } from '../guards.js' -import loadConfiguration from '../loadConfiguration.js' -import Pipeline from "../../lib/Pipeline.class.js" -import Stage from "../../lib/Stage.class.js" -import PreviousStage from "../../lib/PreviousStage.class.js" -import File from '../../lib/File.class.js' -import path from "path" -import loadPipelines from "../loadPipelines.js" -import chalk from "chalk" -import assert from "assert" -import getEndpoint from "../getEndpoint.js" -import type { LDWorkbenchConfiguration } from "../../lib/LDWorkbenchConfiguration.js" -import getEngine from "../getEngine.js" -import { QueryEngine as QueryEngineSparql } from "@comunica/query-sparql"; -import { QueryEngine as QueryEngineFile } from "@comunica/query-sparql-file"; -import getEngineSource from "../getEngineSource.js" -import { existsSync, rename } from "fs" -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import getSPARQLQuery from '../getSPARQLQuery.js' -import getSPARQLQueryString from '../getSPARQLQueryString.js' -chai.use(chaiAsPromised) -const expect = chai.expect +import version from '../version.js'; +import loadConfiguration from '../loadConfiguration.js'; +import validate from '../validate.js'; +import { + isConfiguration, + isFile, + isFilePathString, + isPreviousStage, +} from '../guards.js'; +import Pipeline from '../../lib/Pipeline.class.js'; +import Stage from '../../lib/Stage.class.js'; +import PreviousStage from '../../lib/PreviousStage.class.js'; +import File from '../../lib/File.class.js'; +import path from 'path'; +import loadPipelines from '../loadPipelines.js'; +import chalk from 'chalk'; +import assert from 'assert'; +import getEndpoint from '../getEndpoint.js'; +import type {LDWorkbenchConfiguration} from '../../lib/LDWorkbenchConfiguration.js'; +import getEngine from '../getEngine.js'; +import {QueryEngine as QueryEngineSparql} from '@comunica/query-sparql'; +import {QueryEngine as QueryEngineFile} from '@comunica/query-sparql-file'; +import getEngineSource from '../getEngineSource.js'; +import {existsSync, rename} from 'fs'; +import * as chai from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import getSPARQLQuery from '../getSPARQLQuery.js'; +import getSPARQLQueryString from '../getSPARQLQueryString.js'; +chai.use(chaiAsPromised); +const expect = chai.expect; -function testDeepEqualTwoObjects(objectOne: any, objectTwo: any): boolean { +function testDeepEqualTwoObjects( + objectOne: object, + objectTwo: object +): boolean { try { // lodash could not properly deep equal check - assert.deepEqual(objectOne, objectTwo) - return true + assert.deepEqual(objectOne, objectTwo); + return true; } catch (error) { - console.error(error) - return false + console.error(error); + return false; } } describe('Utilities', () => { it('should correctly get a version number', () => { - expect(version()).match(/0.0.0-development/) - }) + expect(version()).match(/0.0.0-development/); + }); describe('YAML Parser', () => { it('should parse a YAML file', () => { - expect(() => parseYamlFile('./static/example/config.yml')).to.not.throw() - }) - it('should parse a JSON file', () => { - expect(() => parseYamlFile('./static/ld-workbench.schema.json')).to.not.throw() - }) + expect(() => + loadConfiguration('./static/example/config.yml') + ).to.not.throw(); + }); it('should throw on non-YAML file', () => { - expect(() => { parseYamlFile('./README.md') }).to.throw('Error parsing file: `./README.md`, are you sure it is a YAML file?') - }) + expect(() => { + loadConfiguration('./README.md'); + }).to.throw( + 'Error parsing file: `./README.md`, are you sure it is a YAML file?' + ); + }); it('should throw on non existing YAML file', () => { - expect(() => { parseYamlFile('./non-existing-file') }).to.throw('File not found: ./non-existing-file') - }) + expect(() => { + loadConfiguration('./non-existing-file'); + }).to.throw('File not found: ./non-existing-file'); + }); it('should throw on on directories', () => { - expect(() => { parseYamlFile('./src') }).to.throw('File not found: ./src') - }) - }) + expect(() => { + loadConfiguration('./src'); + }).to.throw('File not found: ./src'); + }); + }); describe('Validation of YAML files', () => { it('should correctly detect a valid YAML configuration', () => { - expect(validate('./static/example/config.yml')).to.equal(null) - }) + expect(validate('./static/example/config.yml')).to.equal(null); + }); it('should correctly detect a valid configuration using an object', () => { - const configuration = parseYamlFile('./static/example/config.yml') - expect(validate(configuration)).to.equal(null) - }) + const configuration = loadConfiguration('./static/example/config.yml'); + expect(validate(configuration)).to.equal(null); + }); it('should correctly detect an invalid YAML configuration', () => { - expect(validate('./package.json')).to.not.equal(null) - }) - }) + expect(validate('./package.json')).to.not.equal(null); + }); + }); describe('Type guards', () => { it('should assert a configuration', () => { const configuration: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' - }, - generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', - }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - expect(isConfiguration(configuration)).to.equal(true) - }) - it('should not assert an invalid configuration', () => { - const configuration = parseYamlFile('./package.json') - for (const val of [configuration, '', undefined, null, [], {}]) { - expect(isConfiguration(val)).to.equal(false) - } - }) + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + expect(isConfiguration(configuration)).to.equal(true); + }); it('should return true for a valid FilePathString with isFilePathString', () => { const validFilePath = 'file://path/to/file.txt'; const result = isFilePathString(validFilePath); expect(result).to.equal(true); }); - it('should return false for a non-string value with isFilePathString', () => { - const nonStringValue = 42; - const result = isFilePathString(nonStringValue); - expect(result).to.equal(false); - }); - it('should return false for a string that does not start with "file://" with isFilePathString', () => { const invalidFilePath = 'http://example.com/file.txt'; const result = isFilePathString(invalidFilePath); @@ -132,23 +137,21 @@ describe('Utilities', () => { const result = isFilePathString(emptyString); expect(result).to.equal(false); }); - it('should return false for undefined or null with isFilePathString', () => { + it('should return false for undefined', () => { const result1 = isFilePathString(undefined); - const result2 = isFilePathString(null); expect(result1).to.equal(false); - expect(result2).to.equal(false); }); it('should return true for valid PreviousStage object with isPreviousStage', () => { - const configuration = parseYamlFile('./static/example/config.yml') - const pipeline = new Pipeline(configuration, {silent: true}) - const stageConfig = configuration.stages[0] - const stage = new Stage(pipeline, stageConfig) - const prevStage = new PreviousStage(stage, configuration.stages.names) + const configuration = loadConfiguration('./static/example/config.yml'); + const pipeline = new Pipeline(configuration, {silent: true}); + const stageConfig = configuration.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const prevStage = new PreviousStage(stage, configuration.stages[0].name); const result = isPreviousStage(prevStage); expect(result).to.equal(true); }); it('should return false for invalid object with isPreviousStage', () => { - const invalidObject = { $id: 'Invalid' }; + const invalidObject = {$id: 'Invalid'}; const result = isPreviousStage(invalidObject); expect(result).to.be.equal(false); }); @@ -158,12 +161,12 @@ describe('Utilities', () => { expect(result).to.equal(false); }); it('should return true for valid PreviousStage object with isFile', () => { - const f = new File(`file://${path.join('./static/example/config.yml')}`) + const f = new File(`file://${path.join('./static/example/config.yml')}`); const result = isFile(f); expect(result).to.equal(true); }); it('should return false for invalid object with isFile', () => { - const invalidObject = { $id: 'Invalid' }; + const invalidObject = {$id: 'Invalid'}; const result = isFile(invalidObject); expect(result).to.be.equal(false); }); @@ -172,439 +175,511 @@ describe('Utilities', () => { const result = isFile(nonObjectValue); expect(result).to.equal(false); }); - }) + }); it('should load and validate using the wrapper', () => { - expect(isConfiguration(loadConfiguration('./static/example/config.yml'))).to.equal(true) - expect(() => isConfiguration(loadConfiguration('./package.json'))).to.throw('he YAML file `./package.json` is not a valid LD Workbench configuration file.') - }) + expect( + isConfiguration(loadConfiguration('./static/example/config.yml')) + ).to.equal(true); + expect(() => isConfiguration(loadConfiguration('./package.json'))).to.throw( + 'The YAML file `./package.json` is not a valid LD Workbench configuration file.' + ); + }); describe('loadPipelines', () => { it('should throw if configuration file & directory could not be found', () => { - const nonExistentConfFile = 'fileDoesNotExist.yml' - const nonExistentDirWithFile = './dirDoesNotExist/' + nonExistentConfFile - expect(() => loadPipelines(nonExistentConfFile)).to.throw(`Configuration directory/file ${chalk.italic(nonExistentConfFile)} could not be found.\nIf this is your first run of LDWorkbench, you might want to use \`npx ld-workbench --init\` to setup an example workbench project.`) - expect(() => loadPipelines(nonExistentDirWithFile)).to.throw(`Configuration directory/file ${chalk.italic(nonExistentDirWithFile)} could not be found.\nIf this is your first run of LDWorkbench, you might want to use \`npx ld-workbench --init\` to setup an example workbench project.`) - }) + const nonExistentConfFile = 'fileDoesNotExist.yml'; + const nonExistentDirWithFile = './dirDoesNotExist/' + nonExistentConfFile; + expect(() => loadPipelines(nonExistentConfFile)).to.throw( + `Configuration directory/file ${chalk.italic( + nonExistentConfFile + )} could not be found.\nIf this is your first run of LDWorkbench, you might want to use \`npx ld-workbench --init\` to setup an example workbench project.` + ); + expect(() => loadPipelines(nonExistentDirWithFile)).to.throw( + `Configuration directory/file ${chalk.italic( + nonExistentDirWithFile + )} could not be found.\nIf this is your first run of LDWorkbench, you might want to use \`npx ld-workbench --init\` to setup an example workbench project.` + ); + }); it('should throw if directory has no .yml configuration file', () => { - const dirWithoutConfFile = './src/utils/tests/static/dirWithoutYmlFile' - expect(() => loadPipelines(dirWithoutConfFile)).to.throw(`No configuration files found matching pattern ${chalk.italic(`${dirWithoutConfFile}/**/*.yml`)}`) - }) + const dirWithoutConfFile = './src/utils/tests/static/dirWithoutYmlFile'; + expect(() => loadPipelines(dirWithoutConfFile)).to.throw( + `No configuration files found matching pattern ${chalk.italic( + `${dirWithoutConfFile}/**/*.yml` + )}` + ); + }); it('should load multiple configuration files in directory', () => { - const pipelines = loadPipelines('./src/utils/tests/static/correct') - const loadedElements = [...pipelines] + const pipelines = loadPipelines('./src/utils/tests/static/correct'); + const loadedElements = [...pipelines]; const testElements = [ [ 'Example Pipeline A', { name: 'Example Pipeline A', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1A', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' + endpoint: 'file://static/tests/iris.nt', }, generator: [ -{ query: 'file://static/example/generator-stage-1-1.rq' } -] } - ] - } + {query: 'file://static/example/generator-stage-1-1.rq'}, + ], + }, + ], + }, ], [ 'Example Pipeline B', { name: 'Example Pipeline B', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1B', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' + endpoint: 'file://static/tests/iris.nt', }, generator: [ -{ query: 'file://static/example/generator-stage-1-1.rq' } -] } - ] - } - ] - ] - expect(testDeepEqualTwoObjects(loadedElements, testElements)).to.equal(true) - }) + {query: 'file://static/example/generator-stage-1-1.rq'}, + ], + }, + ], + }, + ], + ]; + expect(testDeepEqualTwoObjects(loadedElements, testElements)).to.equal( + true + ); + }); it('should load single configuration file in directory', () => { - const pipeline = loadPipelines('./src/utils/tests/static/single') - const loadedElement = [...pipeline] - const testElement = [[ - 'Example Pipeline', - { - name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', - destination: 'file://pipelines/data/example-pipeline.nt', - stages: [ - { - name: 'Stage 1', - iterator: { - query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' + const pipeline = loadPipelines('./src/utils/tests/static/single'); + const loadedElement = [...pipeline]; + const testElement = [ + [ + 'Example Pipeline', + { + name: 'Example Pipeline', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + destination: 'file://pipelines/data/example-pipeline.nt', + stages: [ + { + name: 'Stage 1', + iterator: { + query: 'file://static/example/iterator-stage-1.rq', + endpoint: 'file://static/tests/iris.nt', + }, + generator: [ + {query: 'file://static/example/generator-stage-1-1.rq'}, + ], }, - generator: [ -{ query: 'file://static/example/generator-stage-1-1.rq' } -] }, - { - name: 'Stage 2', - iterator: { - query: 'file://static/example/iterator-stage-2.rq', + { + name: 'Stage 2', + iterator: { + query: 'file://static/example/iterator-stage-2.rq', + }, + generator: [ + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], }, - generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - ]] - expect(testDeepEqualTwoObjects(loadedElement, testElement)).to.equal(true) - }) + ], + }, + ], + ]; + expect(testDeepEqualTwoObjects(loadedElement, testElement)).to.equal( + true + ); + }); it('should log duplicate names in configuration file', () => { const originalConsoleError = console.warn; let capturedConsoleError = ''; console.warn = (message: string) => { capturedConsoleError += message + '\n'; }; - loadPipelines('./src/utils/tests/static/duplicate') + loadPipelines('./src/utils/tests/static/duplicate'); console.warn = originalConsoleError; - expect(capturedConsoleError).to.contain(chalk.yellow(`Warning: skipping a duplicate configuration from file ${chalk.italic('./src/utils/tests/static/duplicate/conf2.yml')} with name ${chalk.italic('Duplicate Example Pipeline')}`)); - }) - }) + expect(capturedConsoleError).to.contain( + chalk.yellow( + `Warning: skipping a duplicate configuration from file ${chalk.italic( + './src/utils/tests/static/duplicate/conf2.yml' + )} with name ${chalk.italic('Duplicate Example Pipeline')}` + ) + ); + }); + }); describe('getEndpoint', () => { it('should return File when filePath is provided in Stage', () => { - const filePath = 'file://path/to/file.txt' + const filePath = 'file://path/to/file.txt'; const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: filePath + endpoint: filePath, }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - const stageConfig = config.stages[0] - const stage = new Stage(pipeline, stageConfig) - const retrievedEndpoint = getEndpoint(stage) - expect(isFile(retrievedEndpoint) && (retrievedEndpoint.path === 'file://path/to/file.txt')).to.equal(true) - }) + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + const stageConfig = config.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const retrievedEndpoint = getEndpoint(stage); + expect( + isFile(retrievedEndpoint) && + retrievedEndpoint.path === 'file://path/to/file.txt' + ).to.equal(true); + }); it('should return URL when URL is provided in Stage', () => { - const url = new URL('https://example.com').toString() + const url = new URL('https://example.com').toString(); const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: url + endpoint: url, }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - const stageConfig = config.stages[0] - const stage = new Stage(pipeline, stageConfig) - const retrievedEndpoint = getEndpoint(stage) - expect((retrievedEndpoint instanceof URL) && (retrievedEndpoint.href === 'https://example.com/')).to.equal(true) - }) + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + const stageConfig = config.stages[0]; + const stage = new Stage(pipeline, stageConfig); + const retrievedEndpoint = getEndpoint(stage); + expect( + retrievedEndpoint instanceof URL && + retrievedEndpoint.href === 'https://example.com/' + ).to.equal(true); + }); it('should throw error if invalid URL is provided', () => { - const url = 'invalidExample' // will be accepted + const url = 'invalidExample'; // will be accepted const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: url + endpoint: url, }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - const stageConfig = config.stages[0] + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + const stageConfig = config.stages[0]; // getEndpoint is use in Stage's Iterator, and it will throw there. - expect(() => new Stage(pipeline, stageConfig)).to.throw('Error in the iterator of stage `Stage 1`: "invalidExample" is not a valid URL') - }) - it('should work with URL\'s prepended with \'sparql@\'', () => { - const url = 'sparql@https://www.goudatijdmachine.nl/sparql/repositories/nafotocollectie' // will be accepted + expect(() => new Stage(pipeline, stageConfig)).to.throw( + 'Error in the iterator of stage `Stage 1`: "invalidExample" is not a valid URL' + ); + }); + it("should work with URL's prepended with 'sparql@'", () => { + const url = + 'sparql@https://www.goudatijdmachine.nl/sparql/repositories/nafotocollectie'; // will be accepted const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: url + endpoint: url, }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - const stageConfig = config.stages[0] + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + const stageConfig = config.stages[0]; // getEndpoint is use in Stage's Iterator, and it will throw there. - expect(() => new Stage(pipeline, stageConfig)).to.not.throw() - }) + expect(() => new Stage(pipeline, stageConfig)).to.not.throw(); + }); it('should throw if stage has undefined endpoint and is first stage', () => { - const endpoint = undefined + const endpoint = undefined; const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint + endpoint, }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - const stageConfig = config.stages[0] - expect(() => new Stage(pipeline, stageConfig)).to.throw('Error in the iterator of stage `Stage 1`: no destination defined for the iterator and no previous stage to use that result') - }) + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + const stageConfig = config.stages[0]; + expect(() => new Stage(pipeline, stageConfig)).to.throw( + 'Error in the iterator of stage `Stage 1`: no destination defined for the iterator and no previous stage to use that result' + ); + }); it('should return PreviousStage if stage has undefined endpoint', () => { - const url = new URL('https://example.com').toString() + const url = new URL('https://example.com').toString(); const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: url + endpoint: url, }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, { name: 'Stage 2', iterator: { query: 'file://static/example/iterator-stage-2.rq', }, generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - pipeline.validate() - const stage = new Stage(pipeline, config.stages[1]) - const retrievedEndpoint = getEndpoint(stage) - expect(isPreviousStage(retrievedEndpoint)).to.equal(true) - }) - }) + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + pipeline.validate(); + const stage = new Stage(pipeline, config.stages[1]); + const retrievedEndpoint = getEndpoint(stage); + expect(isPreviousStage(retrievedEndpoint)).to.equal(true); + }); + }); describe('getEngine', () => { it('should return QueryEngineSparql when input is URL', () => { - const url = new URL('https://www.example.com/endpoint') - const result = getEngine(url) - expect(result instanceof QueryEngineSparql).to.equal(true) - }) + const url = new URL('https://www.example.com/endpoint'); + const result = getEngine(url); + expect(result instanceof QueryEngineSparql).to.equal(true); + }); it('should return QueryEngineFile when input is File', () => { - const file = new File('file://exampleFile.txt') - const result = getEngine(file) - expect(result instanceof QueryEngineFile).to.equal(true) - }) + const file = new File('file://exampleFile.txt'); + const result = getEngine(file); + expect(result instanceof QueryEngineFile).to.equal(true); + }); it('should return QueryEngineFile when input is PreviousStage', () => { const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' + endpoint: 'file://static/tests/iris.nt', }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, { name: 'Stage 2', iterator: { query: 'file://static/example/iterator-stage-2.rq', }, generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - pipeline.validate() - const stage: Stage = new Stage(pipeline, config.stages[1]) + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + pipeline.validate(); + const stage: Stage = new Stage(pipeline, config.stages[1]); const stagesSoFar = Array.from(stage.pipeline.stages.keys()); const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); - const result = getEngine(previousStage) - expect(result instanceof QueryEngineFile).to.equal(true) - }) - }) + const result = getEngine(previousStage); + expect(result instanceof QueryEngineFile).to.equal(true); + }); + }); describe('getEngineSource', () => { it('should return string when input is File', () => { - const f = new File(`file://${path.join('./static/example/config.yml')}`) - expect(typeof getEngineSource(f) === "string").to.equal(true) - }) + const f = new File(`file://${path.join('./static/example/config.yml')}`); + expect(typeof getEngineSource(f) === 'string').to.equal(true); + }); it('should return string when input is URL', () => { - const url = new URL('https://www.example.com') - expect(typeof getEngineSource(url) === "string").to.equal(true) - }) + const url = new URL('https://www.example.com'); + expect(typeof getEngineSource(url) === 'string').to.equal(true); + }); it('should return engine source string when input is PreviousStage with destinationPath', async () => { const config: LDWorkbenchConfiguration = { name: 'Example Pipeline', - description: 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', + description: + 'This is an example pipeline. It uses files that are available in this repository and SPARQL endpoints that should work.\n', destination: 'file://pipelines/data/example-pipeline.nt', stages: [ { name: 'Stage 1', iterator: { query: 'file://static/example/iterator-stage-1.rq', - endpoint: 'file://static/tests/iris.nt' + endpoint: 'file://static/tests/iris.nt', }, generator: [ -{ - query: 'file://static/example/generator-stage-1-1.rq' - } -] }, + { + query: 'file://static/example/generator-stage-1-1.rq', + }, + ], + }, { name: 'Stage 2', iterator: { query: 'file://static/example/iterator-stage-2.rq', }, generator: [ -{ - query: 'file://static/example/generator-stage-2.rq', - endpoint: 'file://static/tests/wikidata.nt' - } -] } - ] - } - const pipeline = new Pipeline(config, {silent: true}) - pipeline.validate() - const stage2: Stage = new Stage(pipeline, config.stages[1]) + { + query: 'file://static/example/generator-stage-2.rq', + endpoint: 'file://static/tests/wikidata.nt', + }, + ], + }, + ], + }; + const pipeline = new Pipeline(config, {silent: true}); + pipeline.validate(); + const stage2: Stage = new Stage(pipeline, config.stages[1]); const stagesSoFar = Array.from(stage2.pipeline.stages.keys()); const previousStage = new PreviousStage(stage2, stagesSoFar.pop()!); - const engineSource = getEngineSource(previousStage) - expect(engineSource === path.join(process.cwd(), "/pipelines/data/example-pipeline/stage-1.nt")).to.equal(true) - }) + const engineSource = getEngineSource(previousStage); + expect( + engineSource === + path.join( + process.cwd(), + '/pipelines/data/example-pipeline/stage-1.nt' + ) + ).to.equal(true); + }); describe('should throw', () => { beforeEach(() => { - const configuration = parseYamlFile('./static/example/config.yml') - const pipeline = new Pipeline(configuration, {silent: true}) - pipeline.validate() - const stage: Stage = new Stage(pipeline, configuration.stages[1]) + const configuration = loadConfiguration('./static/example/config.yml'); + const pipeline = new Pipeline(configuration, {silent: true}); + pipeline.validate(); + const stage: Stage = new Stage(pipeline, configuration.stages[1]); const stagesSoFar = Array.from(stage.pipeline.stages.keys()); const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); - const loadedPreviousStage = previousStage.load() - const destPath = loadedPreviousStage?.destinationPath - const editedDesPath = destPath + '123' + const loadedPreviousStage = previousStage.load(); + const destPath = loadedPreviousStage?.destinationPath; + const editedDesPath = destPath + '123'; if (destPath !== undefined) { if (existsSync(destPath)) { - rename(destPath, editedDesPath, (err) => { - if (err != null) { - throw err + rename(destPath, editedDesPath, err => { + if (err !== null) { + throw err; } - }) + }); } } else { - throw new Error('Test Failed, no destination path found') + throw new Error('Test Failed, no destination path found'); } - }) + }); afterEach(() => { - const configuration = parseYamlFile('./static/example/config.yml') - const pipeline = new Pipeline(configuration, {silent: true}) - pipeline.validate() - const stage: Stage = new Stage(pipeline, configuration.stages[1]) + const configuration = loadConfiguration('./static/example/config.yml'); + const pipeline = new Pipeline(configuration, {silent: true}); + pipeline.validate(); + const stage: Stage = new Stage(pipeline, configuration.stages[1]); const stagesSoFar = Array.from(stage.pipeline.stages.keys()); const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); - const loadedPreviousStage = previousStage.load() - const destPath = loadedPreviousStage?.destinationPath - const editedDesPath = destPath + '123' + const loadedPreviousStage = previousStage.load(); + const destPath = loadedPreviousStage?.destinationPath; + const editedDesPath = destPath + '123'; if (existsSync(editedDesPath)) { - - rename(editedDesPath, destPath, (err) => { - if (err != null) { - throw err + rename(editedDesPath, destPath, err => { + if (err !== null) { + throw err; } - }) + }); } - }) + }); it('should throw when input is PreviousStage and destinationPath does not exist', () => { - const configuration = parseYamlFile('./static/example/config.yml') - const pipeline = new Pipeline(configuration, {silent: true}) - pipeline.validate() - const stage: Stage = new Stage(pipeline, configuration.stages[1]) + const configuration = loadConfiguration('./static/example/config.yml'); + const pipeline = new Pipeline(configuration, {silent: true}); + pipeline.validate(); + const stage: Stage = new Stage(pipeline, configuration.stages[1]); const stagesSoFar = Array.from(stage.pipeline.stages.keys()); const previousStage = new PreviousStage(stage, stagesSoFar.pop()!); - const loadedPreviousStage = previousStage.load() - const destPath = loadedPreviousStage?.destinationPath + const loadedPreviousStage = previousStage.load(); + const destPath = loadedPreviousStage?.destinationPath; - expect(() => getEngineSource(previousStage)).to.throw(`The result from stage "${loadedPreviousStage?.name}" (${destPath}) is not available, make sure to run that stage first`) - }) - }) - }) + expect(() => getEngineSource(previousStage)).to.throw( + `The result from stage "${loadedPreviousStage?.name}" (${destPath}) is not available, make sure to run that stage first` + ); + }); + }); + }); describe('getSPARQLQuery', () => { it('should return SPARQL query when input is filepath with query file', () => { - const queryFile = 'file://static/example/iterator-stage-1.rq' - const result = getSPARQLQuery(queryFile, 'select') - expect(result.queryType).to.equal('SELECT') - expect(result.limit).to.equal(10) - expect(result.prefixes.dbo).to.equal('http://dbpedia.org/ontology/') - }) + const queryFile = 'file://static/example/iterator-stage-1.rq'; + const result = getSPARQLQuery(queryFile, 'select'); + expect(result.queryType).to.equal('SELECT'); + expect(result.limit).to.equal(10); + expect(result.prefixes.dbo).to.equal('http://dbpedia.org/ontology/'); + }); it('should return SPARQL query when input is string with query', () => { const queryString = `prefix dbo: prefix rdf: @@ -612,40 +687,44 @@ describe('Utilities', () => { select * where { $this a/rdfs:subClassOf* dbo:Plant } limit 10 - ` - const result = getSPARQLQuery(queryString, 'select') - expect(result.queryType).to.equal('SELECT') - expect(result.limit).to.equal(10) - expect(result.prefixes.dbo).to.equal('http://dbpedia.org/ontology/') - - }) + `; + const result = getSPARQLQuery(queryString, 'select'); + expect(result.queryType).to.equal('SELECT'); + expect(result.limit).to.equal(10); + expect(result.prefixes.dbo).to.equal('http://dbpedia.org/ontology/'); + }); it('should throw when filepath is given and does not exist', () => { - const nonExistentFile = 'file://./does/not/exits.txt' - expect(getSPARQLQuery.bind(getSPARQLQuery, nonExistentFile, 'construct')).to.throw(`File not found: ${chalk.italic(nonExistentFile.replace('file://', ''))}`) - }) + const nonExistentFile = 'file://./does/not/exits.txt'; + expect( + getSPARQLQuery.bind(getSPARQLQuery, nonExistentFile, 'construct') + ).to.throw( + `File not found: ${chalk.italic( + nonExistentFile.replace('file://', '') + )}` + ); + }); it('should throw if query is not a SPARQL query', () => { const sqlQuery = `SELECT first_name, last_name, birthdate FROM employees WHERE department = 'IT' ORDER BY last_name, first_name; - ` - let failed: boolean + `; + let failed: boolean; try { - getSPARQLQuery(sqlQuery, 'select') - failed = false + getSPARQLQuery(sqlQuery, 'select'); + failed = false; } catch (error) { // @ts-expect-error error has no type so we check if hash is invalid - if (error.hash.token === "INVALID"){ - failed = true - } - else { - failed = false - console.log(error) + if (error.hash.token === 'INVALID') { + failed = true; + } else { + failed = false; + console.log(error); } } - expect(failed).to.equal(true) - }) + expect(failed).to.equal(true); + }); describe('should throw if CONSTRUCT query contains minus, service, values', () => { it('should throw for minus', () => { const minusQuery = `PREFIX rdf: @@ -659,10 +738,11 @@ describe('Utilities', () => { MINUS { ?city ex:isCapitalOf ?country. } } - ` - expect(() => getSPARQLQuery(minusQuery, 'construct')).to.throw('SPARQL construct queries must not contain a MINUS clause') - - }) + `; + expect(() => getSPARQLQuery(minusQuery, 'construct')).to.throw( + 'SPARQL construct queries must not contain a MINUS clause' + ); + }); it('should throw for service', () => { const serviceQuery = `PREFIX foaf: PREFIX ex: @@ -677,9 +757,11 @@ describe('Utilities', () => { ?person ex:hasEmail ?email. } } - ` - expect(() => getSPARQLQuery(serviceQuery, 'construct')).to.throw('SPARQL construct queries must not contain a SERVICE clause') - }) + `; + expect(() => getSPARQLQuery(serviceQuery, 'construct')).to.throw( + 'SPARQL construct queries must not contain a SERVICE clause' + ); + }); it('should throw for values', () => { const valuesQuery = `PREFIX ex: @@ -690,11 +772,12 @@ describe('Utilities', () => { VALUES ?city { ex:City1 ex:City2 ex:City3 } ?city ex:hasPopulation ?population. } - ` - expect(() => getSPARQLQuery(valuesQuery, 'construct')).to.throw('SPARQL construct queries must not contain a VALUES clause') - - }) - }) + `; + expect(() => getSPARQLQuery(valuesQuery, 'construct')).to.throw( + 'SPARQL construct queries must not contain a VALUES clause' + ); + }); + }); describe('should throw if CONSTRUCT query contains optional, union, group, graph with minus, service, values', () => { it('should throw for minus with optional', () => { const minusOptionalQuery = `PREFIX ex: @@ -712,9 +795,11 @@ describe('Utilities', () => { } } } - ` - expect(() => getSPARQLQuery(minusOptionalQuery, 'construct')).to.throw('SPARQL construct queries must not contain a MINUS clause') - }) + `; + expect(() => getSPARQLQuery(minusOptionalQuery, 'construct')).to.throw( + 'SPARQL construct queries must not contain a MINUS clause' + ); + }); it('should throw for service with union', () => { const serviceUnionQuery = `PREFIX ex: @@ -735,10 +820,11 @@ describe('Utilities', () => { } } - ` - expect(() => getSPARQLQuery(serviceUnionQuery, 'construct')).to.throw('SPARQL construct queries must not contain a SERVICE clause') - - }) + `; + expect(() => getSPARQLQuery(serviceUnionQuery, 'construct')).to.throw( + 'SPARQL construct queries must not contain a SERVICE clause' + ); + }); it('should throw for minus with group by', () => { const minusGroupByQuery = `PREFIX ex: @@ -765,10 +851,11 @@ describe('Utilities', () => { } } } - ` - expect(() => getSPARQLQuery(minusGroupByQuery, 'construct')).to.throw('SPARQL construct queries must not contain a MINUS clause') - - }) + `; + expect(() => getSPARQLQuery(minusGroupByQuery, 'construct')).to.throw( + 'SPARQL construct queries must not contain a MINUS clause' + ); + }); it('should throw for values', () => { const valuesGraphQuery = `PREFIX ex: @@ -786,11 +873,13 @@ describe('Utilities', () => { ?city ex:hasPopulation ?population. } } - ` - expect(() => getSPARQLQuery(valuesGraphQuery, 'construct')).to.throw('SPARQL construct queries must not contain a VALUES clause') - }) - }) - }) + `; + expect(() => getSPARQLQuery(valuesGraphQuery, 'construct')).to.throw( + 'SPARQL construct queries must not contain a VALUES clause' + ); + }); + }); + }); describe('getSPARQLQueryString', () => { it('should return query string for correct SELECT/CONSTRUCT SPARQL query', () => { const selectQuery = `PREFIX ex: @@ -799,7 +888,7 @@ describe('Utilities', () => { WHERE { ?city ex:hasPopulation ?population. } - ` + `; const constructQuery = `PREFIX ex: CONSTRUCT { @@ -808,33 +897,40 @@ describe('Utilities', () => { WHERE { ?city ex:hasPopulation ?population. } - ` + `; const expectedSelectQuery = `PREFIX ex: -SELECT ?city ?population WHERE { ?city ex:hasPopulation ?population. }` +SELECT ?city ?population WHERE { ?city ex:hasPopulation ?population. }`; const expectedConstructQuery = `PREFIX ex: CONSTRUCT { ?city ex:hasPopulation ?population. } -WHERE { ?city ex:hasPopulation ?population. }` +WHERE { ?city ex:hasPopulation ?population. }`; - const selectStr = getSPARQLQueryString(getSPARQLQuery(selectQuery, 'select')) - const constructStr = getSPARQLQueryString(getSPARQLQuery(constructQuery, 'construct')) + const selectStr = getSPARQLQueryString( + getSPARQLQuery(selectQuery, 'select') + ); + const constructStr = getSPARQLQueryString( + getSPARQLQuery(constructQuery, 'construct') + ); - expect(selectStr).to.equal(expectedSelectQuery) - expect(constructStr).to.equal(expectedConstructQuery) - }) + expect(selectStr).to.equal(expectedSelectQuery); + expect(constructStr).to.equal(expectedConstructQuery); + }); describe('should throw error for incorrect SPARQL queries', () => { it('should throw for incorrect syntax SPARQL query', () => { - const incorrectQuery =`SELECT ?subject ?predicate ?object + const incorrectQuery = `SELECT ?subject ?predicate ?object WHERE { ?subject ?predicate ?object FILTER (?object > 100) - ` - expect(() => getSPARQLQueryString(getSPARQLQuery(incorrectQuery, 'select'))).to.throw() - }) + `; + expect(() => + getSPARQLQueryString(getSPARQLQuery(incorrectQuery, 'select')) + ).to.throw(); + }); it('should throw for empty string', () => { - expect(() => getSPARQLQueryString(getSPARQLQuery('', 'select'))).to.throw('Unexpected querytype undefined') - - }) + expect(() => + getSPARQLQueryString(getSPARQLQuery('', 'select')) + ).to.throw('Unexpected querytype undefined'); + }); it('should throw for UPDATE SPARQL query', () => { const updateQuery = `PREFIX ex: @@ -845,10 +941,11 @@ WHERE { ?city ex:hasPopulation ?population. }` ex:City1 ex:hasPopulation ?oldPopulation. FILTER (?oldPopulation = "some_old_value") } - ` - expect(() => getSPARQLQueryString(getSPARQLQuery(updateQuery, 'select'))).to.throw('Unexpected querytype update') - - }) + `; + expect(() => + getSPARQLQueryString(getSPARQLQuery(updateQuery, 'select')) + ).to.throw('Unexpected querytype update'); + }); it('should throw for ASK SPARQL query', () => { const askQuery = `PREFIX ex: @@ -857,16 +954,20 @@ WHERE { ?city ex:hasPopulation ?population. }` ex:City1 ex:hasPopulation ?population. FILTER (?population > 1000000) } - ` - expect(() => getSPARQLQueryString(getSPARQLQuery(askQuery, 'select'))).to.throw('Unexpected querytype ASK') - }) + `; + expect(() => + getSPARQLQueryString(getSPARQLQuery(askQuery, 'select')) + ).to.throw('Unexpected querytype ASK'); + }); it('should throw for DESCRIBE SPARQL query', () => { const describeQuery = `PREFIX ex: DESCRIBE ex:City1 - ` - expect(() => getSPARQLQueryString(getSPARQLQuery(describeQuery, 'select'))).to.throw('Unexpected querytype DESCRIBE') - }) - }) - }) -}) + `; + expect(() => + getSPARQLQueryString(getSPARQLQuery(describeQuery, 'select')) + ).to.throw('Unexpected querytype DESCRIBE'); + }); + }); + }); +}); diff --git a/src/utils/validate.ts b/src/utils/validate.ts index aa9077b..2de61f2 100644 --- a/src/utils/validate.ts +++ b/src/utils/validate.ts @@ -1,6 +1,6 @@ -import Ajv, { type ValidateFunction, type ErrorObject } from 'ajv'; +import Ajv, {type ValidateFunction, type ErrorObject} from 'ajv'; import parseYamlFile from './parseYamlFile.js'; -import { fileURLToPath } from 'url'; +import {fileURLToPath} from 'url'; import * as path from 'path'; /** @@ -9,14 +9,19 @@ import * as path from 'path'; * @param schemaFilePath - The path to the YAML file containing the JSON Schema. * @returns An array of validation errors if any, otherwise returns the configuration. */ -export default function validate(filePathOrObject: object | string): ErrorObject[] | null { +export default function validate( + filePathOrObject: object | string +): ErrorObject[] | null { // Parse the YAML schema file const dirname = path.dirname(fileURLToPath(import.meta.url)); - const filename = path.resolve(path.join(dirname, '..', '..', 'static', 'ld-workbench.schema.json')) + const filename = path.resolve( + path.join(dirname, '..', '..', 'static', 'ld-workbench.schema.json') + ); const schema = parseYamlFile(filename); - const configuration = typeof filePathOrObject === 'string' - ? parseYamlFile(filePathOrObject) - : filePathOrObject + const configuration = + typeof filePathOrObject === 'string' + ? parseYamlFile(filePathOrObject) + : filePathOrObject; // Create an Ajv instance // @ts-expect-error This expression is constructable, probably an error in the types.. diff --git a/src/utils/version.ts b/src/utils/version.ts index 35c567c..f317e77 100644 --- a/src/utils/version.ts +++ b/src/utils/version.ts @@ -1,9 +1,9 @@ import fs from 'fs'; -import { fileURLToPath } from 'url'; +import {fileURLToPath} from 'url'; import * as path from 'path'; export default function version(): string { const dirname = path.dirname(fileURLToPath(import.meta.url)); - const filename = path.resolve(path.join(dirname, '..', '..', 'package.json')) - const { version } = JSON.parse(fs.readFileSync(filename, 'utf-8')); + const filename = path.resolve(path.join(dirname, '..', '..', 'package.json')); + const {version} = JSON.parse(fs.readFileSync(filename, 'utf-8')); return version; } diff --git a/static/example/config.yml b/static/example/config.yml index 4df5e01..8100293 100644 --- a/static/example/config.yml +++ b/static/example/config.yml @@ -15,14 +15,14 @@ stages: query: file://static/example/iterator-stage-1.rq endpoint: https://api.triplydb.com/datasets/Triply/iris/services/demo-service/sparql delay: "50ms" - generator: + generator: # First generator - - query: file://static/example/generator-stage-1-1.rq + - query: file://static/example/generator-stage-1-1.rq # Second generator - query: file://static/example/generator-stage-1-2.rq - name: "Stage 2" - iterator: + iterator: query: file://static/example/iterator-stage-2.rq - generator: + generator: - query: file://static/example/generator-stage-2.rq endpoint: https://query.wikidata.org/sparql diff --git a/tsconfig.json b/tsconfig.json index b278bfa..65959b8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,109 +1,17 @@ { + "extends": "./node_modules/gts/tsconfig-google.json", "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "lib": ["es6", "esnext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "NodeNext", /* Specify what module code is generated. */ - "rootDir": "./src/", /* Specify the root folder within your source files. */ - "moduleResolution": "nodenext", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist", /* Specify an output folder for all emitted files. */ - "removeComments": false, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } + "rootDir": "src/", + "outDir": "build", + "target": "es2020", + "lib": ["esnext"], + "skipLibCheck": true, + "module": "nodenext", + "moduleResolution": "nodenext", + "esModuleInterop": true, + "declarationMap": true + }, + "include": [ + "src/" + ] }