diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3063f07 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +lib +node_modules diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..ac0d2f8 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": ["@typescript-eslint"], + "rules": { + "indent": ["error", 4], + "linebreak-style": ["error", "unix"], + "quotes": ["error", "double"], + "semi": ["error", "always"], + "@typescript-eslint/no-unused-vars": "warn" + } +} diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..9b580b8 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index c1baa3b..3f6ca48 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -20,4 +20,4 @@ jobs: - run: bun i # Install dependencies - run: bun run build # Build sources - - run: bun test # Run tests \ No newline at end of file + - run: bun test # Run tests diff --git a/.github/workflows/npm-publish-github-packages.yml b/.github/workflows/npm-publish-github-packages.yml new file mode 100644 index 0000000..1042f67 --- /dev/null +++ b/.github/workflows/npm-publish-github-packages.yml @@ -0,0 +1,35 @@ +name: Node.js Package + +on: + workflow_dispatch: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 20 + - run: npm ci + - run: npm run build + - run: npm run tests + + publish: + needs: build + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 20 + registry-url: https://npm.pkg.github.com/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.gitignore b/.gitignore index 3637472..a02a1c4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,180 @@ -node_modules -lib + save.json +# Outputs +lib + +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..2312dc5 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx lint-staged diff --git a/.lintstagedrc.json b/.lintstagedrc.json new file mode 100644 index 0000000..5192d1e --- /dev/null +++ b/.lintstagedrc.json @@ -0,0 +1,3 @@ +{ + "*.ts": ["eslint --fix", "prettier --write"] +} diff --git a/.npmignore b/.npmignore index 712e146..6115d69 100644 --- a/.npmignore +++ b/.npmignore @@ -1,2 +1,3 @@ node_modules -tests \ No newline at end of file +test + diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..3063f07 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +lib +node_modules diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..2259cff --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "trailingComma": "all", + "tabWidth": 4, + "semi": true, + "singleQuote": false +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..85fbb03 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jens Pots + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 340e7a9..947c9fb 100644 --- a/README.md +++ b/README.md @@ -79,3 +79,4 @@ This processor can be used to join multiple input streams or Reader Channels (`j ### [`js:Generate`](https://github.com/rdf-connect/sds-processors/blob/master/configs/generator.ttl#L19) This a simple RDF data generator function used for testing. This processor will periodically generate RDF objects with 3 to 4 predicates. + diff --git a/bun.lockb b/bun.lockb index f0a2165..23b5b95 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/configs/bucketizer.ttl b/configs/bucketizer.ttl index ce7fbab..45f17be 100644 --- a/configs/bucketizer.ttl +++ b/configs/bucketizer.ttl @@ -13,7 +13,7 @@ js:Bucketize a js:JsProcess; dc:title "Bucketizer processor"; dc:description "This bucketizer processor is a SDS processor. It takes in SDS records and SDS metadata and bucketizes the incoming records according to some bucketize strategy. The metadata is also transformed to reflect this transformation. Many SDS streams can be present on the incoming data channel, please specify what stream to ingest and what stream to produce."; - js:file <../src/bucketizers.ts>; + js:file <../lib/bucketizers.js>; js:function "bucketize"; js:location <../>; js:mapping [ diff --git a/configs/bucketizer_configs.ttl b/configs/bucketizer_configs.ttl index a4d4ae7..c7a2849 100644 --- a/configs/bucketizer_configs.ttl +++ b/configs/bucketizer_configs.ttl @@ -55,7 +55,7 @@ ], [ sh:name "namePath"; sh:path tree:fragmentationPathName; - sh:class rdfl:pathLens; + sh:class rdfl:PathLens; sh:maxCount 1; ], [ sh:name "defaultName"; diff --git a/configs/sdsify.ttl b/configs/sdsify.ttl index f0b14df..435a556 100644 --- a/configs/sdsify.ttl +++ b/configs/sdsify.ttl @@ -69,5 +69,4 @@ js:Sdsify a js:JsProcess; sh:path js:shapeFilter; sh:name "Shape filters"; sh:minCount 0; - ]. - + ]. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a4ca3d9..2e548cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6734 +1,9754 @@ { - "name": "sds-processors", - "version": "0.3.2", + + "name": "@rdfc/sds-processors-ts", + + "version": "0.4.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { - "name": "sds-processors", - "version": "0.3.2", + + "name": "@rdfc/sds-processors-ts", + + "version": "0.4.0", + "license": "MIT", - "dependencies": { - "@treecg/bucketizers": "^2.1.13", - "@treecg/types": "^0.4.5", - "csv-parse": "^5.5.2", - "extract-cbd-shape": "^0.1.4", - "jsonld": "^8.3.1", - "n3": "^1.17.2", - "rdf-lens": "^1.2.5", + + "dependencies": { + + "@treecg/types": "^0.4.6", + + "csv-parse": "^5.5.6", + + "extract-cbd-shape": "^0.1.8", + + "jsonld": "^8.3.2", + + "n3": "^1.17.3", + + "rdf-lens": "^1.2.8", + "rdf-stores": "^1.0.0" + }, + "devDependencies": { - "@ajuvercr/js-runner": "^0.2.0-alpha.0", - "@jest/globals": "^29.7.0", + + "@rdfc/js-runner": "^0.2.1", + "@rdfjs/types": "^1.1.0", - "@types/jsonld": "^1.5.13", + + "@types/jsonld": "^1.5.14", + "@types/n3": "^1.16.4", - "@types/node": "^20.10.0", + + "@types/node": "^20.14.2", + "@types/rdf-js": "^4.0.2", - "typescript": "^5.3.2" - } - }, - "node_modules/@ajuvercr/js-runner": { - "version": "0.2.0-alpha.1", - "resolved": "https://registry.npmjs.org/@ajuvercr/js-runner/-/js-runner-0.2.0-alpha.1.tgz", - "integrity": "sha512-fk9KukbORPkoeaDnT7kzhbFHt8ls1eiv+oXbQOwC27yjX8tV+8XnxumNcWW8VBTTOD22PQrsJnCJDnhrJaKG3g==", - "dev": true, - "dependencies": { - "@rdfjs/types": "^1.1.0", - "@treecg/types": "^0.4.5", - "command-line-args": "^5.2.1", - "command-line-usage": "^6.1.3", - "debug": "^4.3.4", - "kafkajs": "^2.2.4", - "n3": "^1.17.1", - "rdf-lens": "^1.2.5", - "stream-to-array": "^2.3.0", - "ws": "^8.14.2" - }, - "bin": { - "js-runner": "bin/bundle.mjs" - } - }, + + "@typescript-eslint/eslint-plugin": "^7.13.0", + + "@typescript-eslint/parser": "^7.13.0", + + "@vitest/coverage-v8": "^1.6.0", + + "dotenv": "^16.4.5", + + "eslint": "^8.57.0", + + "eslint-config-prettier": "^9.1.0", + + "husky": "^9.0.11", + + "lint-staged": "^15.2.7", + + "prettier": "^3.3.2", + + "ts-node": "^10.9.2", + + "tsc-alias": "^1.8.10", + + "typescript": "^5.4.5", + + "vite-tsconfig-paths": "^4.3.2", + + "vitest": "^1.6.0" + + } + + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, + + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz", - "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==", + + "license": "MIT", + "dependencies": { + "bidi-js": "^1.0.3", + "css-tree": "^2.3.1", + "is-potential-custom-element-name": "^1.0.1" + } + }, - "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.24.2", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", - "dev": true, + + "node_modules/@babel/helper-string-parser": { + + "version": "7.24.7", + + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, - "node_modules/@babel/core": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", - "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, + + "node_modules/@babel/helper-validator-identifier": { + + "version": "7.24.7", + + "license": "MIT", + "engines": { + "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + } + }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + + "node_modules/@babel/parser": { + + "version": "7.24.7", + + "license": "MIT", + "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + + "parser": "bin/babel-parser.js" + }, + "engines": { - "node": ">=6.9.0" + + "node": ">=6.0.0" + } + }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, + + "node_modules/@babel/types": { + + "version": "7.24.7", + + "license": "MIT", + "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + + "@babel/helper-string-parser": "^7.24.7", + + "@babel/helper-validator-identifier": "^7.24.7", + + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + + "node_modules/@bcoe/v8-coverage": { + + "version": "0.2.3", + + "license": "MIT" + }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" + + "node_modules/@bergos/jsonparse": { + + "version": "1.4.1", + + "engines": [ + + "node >= 0.2.0" + + ], + + "license": "MIT", + + "dependencies": { + + "buffer": "^6.0.3" + } + }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, + + "node_modules/@comunica/actor-abstract-mediatyped": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/core": "^2.10.0", + + "@comunica/types": "^2.10.0" + } + }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, + + "node_modules/@comunica/actor-abstract-parse": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/core": "^2.10.0", + + "readable-stream": "^4.4.2" + } + }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", - "dev": true, + + "node_modules/@comunica/actor-dereference-fallback": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/bus-dereference": "^2.10.0", + + "@comunica/core": "^2.10.0" + } + }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, + + "node_modules/@comunica/actor-dereference-file": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + + "@comunica/bus-dereference": "^2.10.0", + + "@comunica/core": "^2.10.0" + } + }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", - "dev": true, - "engines": { - "node": ">=6.9.0" + + "node_modules/@comunica/actor-dereference-http": { + + "version": "2.10.2", + + "license": "MIT", + + "dependencies": { + + "@comunica/bus-dereference": "^2.10.0", + + "@comunica/bus-http": "^2.10.2", + + "@comunica/core": "^2.10.0", + + "cross-fetch": "^4.0.0", + + "relative-to-absolute-iri": "^1.0.7", + + "stream-to-string": "^1.2.0" + } + }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, + + "node_modules/@comunica/actor-dereference-rdf-parse": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/bus-dereference": "^2.10.0", + + "@comunica/bus-dereference-rdf": "^2.10.0", + + "@comunica/bus-rdf-parse": "^2.10.0" + } + }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, + + "node_modules/@comunica/actor-http-fetch": { + + "version": "2.10.2", + + "license": "MIT", + "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/bus-http": "^2.10.2", + + "@comunica/context-entries": "^2.10.0", + + "@comunica/mediatortype-time": "^2.10.0", + + "abort-controller": "^3.0.0", + + "cross-fetch": "^4.0.0" + } + }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" + + "node_modules/@comunica/actor-http-proxy": { + + "version": "2.10.2", + + "license": "MIT", + + "dependencies": { + + "@comunica/bus-http": "^2.10.2", + + "@comunica/context-entries": "^2.10.0", + + "@comunica/mediatortype-time": "^2.10.0", + + "@comunica/types": "^2.10.0" + } + }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" + + "node_modules/@comunica/actor-rdf-parse-html": { + + "version": "2.10.0", + + "license": "MIT", + + "dependencies": { + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/bus-rdf-parse-html": "^2.10.0", + + "@comunica/core": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "@rdfjs/types": "*", + + "htmlparser2": "^9.0.0", + + "readable-stream": "^4.4.2" + } + }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" + + "node_modules/@comunica/actor-rdf-parse-html-microdata": { + + "version": "2.10.0", + + "license": "MIT", + + "dependencies": { + + "@comunica/bus-rdf-parse-html": "^2.10.0", + + "@comunica/core": "^2.10.0", + + "microdata-rdf-streaming-parser": "^2.0.1" + } + }, - "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", - "dev": true, + + "node_modules/@comunica/actor-rdf-parse-html-rdfa": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/bus-rdf-parse-html": "^2.10.0", + + "@comunica/core": "^2.10.0", + + "rdfa-streaming-parser": "^2.0.1" + } + }, - "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", - "dev": true, + + "node_modules/@comunica/actor-rdf-parse-html-script": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/bus-rdf-parse-html": "^2.10.0", + + "@comunica/context-entries": "^2.10.0", + + "@comunica/core": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "@rdfjs/types": "*", + + "readable-stream": "^4.4.2", + + "relative-to-absolute-iri": "^1.0.7" + } + }, - "node_modules/@babel/highlight/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, + + "node_modules/@comunica/actor-rdf-parse-jsonld": { + + "version": "2.10.2", + + "license": "MIT", + "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + + "@comunica/bus-http": "^2.10.2", + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/context-entries": "^2.10.0", + + "@comunica/core": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "jsonld-context-parser": "^2.2.2", + + "jsonld-streaming-parser": "^3.0.1", + + "stream-to-string": "^1.2.0" + } + }, - "node_modules/@babel/highlight/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, + + "node_modules/@comunica/actor-rdf-parse-n3": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "n3": "^1.17.0" + } + }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + + "node_modules/@comunica/actor-rdf-parse-rdfxml": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "color-name": "1.1.3" + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "rdfxml-streaming-parser": "^2.2.3" + } + }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, + + "node_modules/@comunica/actor-rdf-parse-shaclc": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "@rdfjs/types": "*", + + "asynciterator": "^3.8.1", + + "readable-stream": "^4.4.2", + + "shaclc-parse": "^1.4.0", + + "stream-to-string": "^1.2.0" + } + }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, + + "node_modules/@comunica/actor-rdf-parse-xml-rdfa": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "rdfa-streaming-parser": "^2.0.1" + } + }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, + + "node_modules/@comunica/bus-dereference": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + + "@comunica/actor-abstract-mediatyped": "^2.10.0", + + "@comunica/actor-abstract-parse": "^2.10.0", + + "@comunica/context-entries": "^2.10.0", + + "@comunica/core": "^2.10.0", + + "@comunica/types": "^2.10.0", + + "readable-stream": "^4.4.2" + } + }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", - "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", - "dev": true, + + "node_modules/@comunica/bus-dereference-rdf": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + + "@comunica/bus-dereference": "^2.10.0", + + "@comunica/bus-rdf-parse": "^2.10.0", + + "@comunica/core": "^2.10.0", + + "@rdfjs/types": "*" + } + }, - "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "dev": true, + + "node_modules/@comunica/bus-http": { + + "version": "2.10.2", + + "license": "MIT", + "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" + + "@comunica/core": "^2.10.0", + + "@smessie/readable-web-to-node-stream": "^3.0.3", + + "is-stream": "^2.0.1", + + "readable-stream-node-to-web": "^1.0.1", + + "web-streams-ponyfill": "^1.4.2" + } + }, - "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, + + "node_modules/@comunica/bus-http/node_modules/is-stream": { + + "version": "2.0.1", + + "license": "MIT", + "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + + "node": ">=8" + }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bergos/jsonparse": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.1.tgz", - "integrity": "sha512-vXIT0nzZGX/+yMD5bx2VhTzc92H55tPoehh1BW/FZHOndWGFddrH3MAfdx39FRc7irABirW6EQaGxIJYV6CGuA==", - "engines": [ - "node >= 0.2.0" - ], - "peer": true, - "dependencies": { - "buffer": "^6.0.3" - } - }, - "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/@comunica/actor-abstract-mediatyped": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-mediatyped/-/actor-abstract-mediatyped-2.10.0.tgz", - "integrity": "sha512-0o6WBujsMnIVcwvRJv6Nj+kKPLZzqBS3On48rm01Rh9T1/My0E/buJMXwgcARKCfMonc2mJ9zxpPCh5ilGEU2A==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0", - "@comunica/types": "^2.10.0" + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/@comunica/actor-abstract-parse": { + + "node_modules/@comunica/bus-init": { + "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-parse/-/actor-abstract-parse-2.10.0.tgz", - "integrity": "sha512-0puCWF+y24EDOOAUUVVbC+tOf4UV+LzEbqi8T5v25jcVGCXyTqfra+bDywfrcv3adrVp18jLCJ46ycaH5xhy9Q==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@comunica/core": "^2.10.0", + "readable-stream": "^4.4.2" + } + }, - "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", - "integrity": "sha512-RSc/ScPdC7l13aZjz/6r4niWA8WDETbzuESQKKSWXi/HAlFOyOxdrDADdayVY2oyeZHIQibeNRtSi2ItzU7OPQ==", - "peer": true, - "dependencies": { - "@comunica/bus-dereference": "^2.10.0", - "@comunica/core": "^2.10.0" - } - }, - "node_modules/@comunica/actor-dereference-file": { + + "node_modules/@comunica/bus-rdf-parse": { + "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-file/-/actor-dereference-file-2.10.0.tgz", - "integrity": "sha512-WXfAyHm0M3+YbYEtLtasT6YHsrzTAevmH27ex8r51qKNj2LK74llpw4mSeea3xyjQR30jVnKBIJSxuSbN64Now==", - "peer": true, - "dependencies": { - "@comunica/bus-dereference": "^2.10.0", - "@comunica/core": "^2.10.0" - } - }, - "node_modules/@comunica/actor-dereference-http": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-http/-/actor-dereference-http-2.10.2.tgz", - "integrity": "sha512-gdDo83W1TAgD2jx0kVbzZKzzt++L4Y4fbyTOH3duy6vx1EMGGZlNCp6I1uguepKEjNX4N0zhAcZzdJcv8A3XMA==", - "peer": true, + + "license": "MIT", + "dependencies": { - "@comunica/bus-dereference": "^2.10.0", - "@comunica/bus-http": "^2.10.2", + + "@comunica/actor-abstract-mediatyped": "^2.10.0", + + "@comunica/actor-abstract-parse": "^2.10.0", + "@comunica/core": "^2.10.0", - "cross-fetch": "^4.0.0", - "relative-to-absolute-iri": "^1.0.7", - "stream-to-string": "^1.2.0" + + "@rdfjs/types": "*" + } + }, - "node_modules/@comunica/actor-dereference-rdf-parse": { + + "node_modules/@comunica/bus-rdf-parse-html": { + "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-rdf-parse/-/actor-dereference-rdf-parse-2.10.0.tgz", - "integrity": "sha512-ANWL6Bv+2WHUjVRS7hfkOfVBNJs8xYZ9KHlgBOQ94CKtQZB9uSMjdb1hLp/cQjiDmFIWLn0+GM5Xi0KFwBkVAw==", - "peer": true, - "dependencies": { - "@comunica/bus-dereference": "^2.10.0", - "@comunica/bus-dereference-rdf": "^2.10.0", - "@comunica/bus-rdf-parse": "^2.10.0" - } - }, - "node_modules/@comunica/actor-http-fetch": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@comunica/actor-http-fetch/-/actor-http-fetch-2.10.2.tgz", - "integrity": "sha512-siHGx0TMVNb2gXvOroq0B3JE6uuS+4s+MsDkntqdBNVigwVYqLpNSKEaL5is8pputFfohJfDQY06lAHbfDNEcw==", - "peer": true, + + "license": "MIT", + "dependencies": { - "@comunica/bus-http": "^2.10.2", - "@comunica/context-entries": "^2.10.0", - "@comunica/mediatortype-time": "^2.10.0", - "abort-controller": "^3.0.0", - "cross-fetch": "^4.0.0" + + "@comunica/core": "^2.10.0", + + "@rdfjs/types": "*" + } + }, - "node_modules/@comunica/actor-http-proxy": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@comunica/actor-http-proxy/-/actor-http-proxy-2.10.2.tgz", - "integrity": "sha512-3yUF8BCh4nwq8J6NRILEsyNrQNStkE9ggJ7hYwRfA1XcMgz1pANNaWJ2P2TEKH1jNinr23bL3JeuUZCm9Kz9dA==", - "peer": true, - "dependencies": { - "@comunica/bus-http": "^2.10.2", - "@comunica/context-entries": "^2.10.0", - "@comunica/mediatortype-time": "^2.10.0", - "@comunica/types": "^2.10.0" - } + + "node_modules/@comunica/config-query-sparql": { + + "version": "2.7.0", + + "license": "MIT" + }, - "node_modules/@comunica/actor-rdf-parse-html": { + + "node_modules/@comunica/context-entries": { + "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html/-/actor-rdf-parse-html-2.10.0.tgz", - "integrity": "sha512-zgImXKpc+BN1i6lQiN1Qhlb1HbKdMIeJMOys6qbzRIijdK8GkGGChwhQp7Cso3lY1Nf4K7M3jPLZeQXeED2w7g==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/bus-rdf-parse-html": "^2.10.0", - "@comunica/core": "^2.10.0", - "@comunica/types": "^2.10.0", - "@rdfjs/types": "*", - "htmlparser2": "^9.0.0", - "readable-stream": "^4.4.2" - } - }, - "node_modules/@comunica/actor-rdf-parse-html-microdata": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-microdata/-/actor-rdf-parse-html-microdata-2.10.0.tgz", - "integrity": "sha512-JLfiDauq4SmpI6TDS4HaHzI6iJe1j8lSk5FRRYK6YVEu8eO28jPmxQJiOiwbQiYqsjsV7kON/WIZSoUELoI4Ig==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse-html": "^2.10.0", - "@comunica/core": "^2.10.0", - "microdata-rdf-streaming-parser": "^2.0.1" - } - }, - "node_modules/@comunica/actor-rdf-parse-html-rdfa": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-rdfa/-/actor-rdf-parse-html-rdfa-2.10.0.tgz", - "integrity": "sha512-9K3iaws9+FGl50oZi53hqyzhwjNKZ3mIr2zg/TAJZoapKvc14cthH17zKSSJrqI/NgBStRmZhBBkXcwfu1CANw==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse-html": "^2.10.0", - "@comunica/core": "^2.10.0", - "rdfa-streaming-parser": "^2.0.1" - } - }, - "node_modules/@comunica/actor-rdf-parse-html-script": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-script/-/actor-rdf-parse-html-script-2.10.0.tgz", - "integrity": "sha512-7XYqWchDquWnBLjG7rmmY+tdE81UZ8fPCU0Hn+vI39/MikNOpaiyr/ZYFqhogWFa9SkjmH0a7idVUzmjiwKRZQ==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/bus-rdf-parse-html": "^2.10.0", - "@comunica/context-entries": "^2.10.0", - "@comunica/core": "^2.10.0", - "@comunica/types": "^2.10.0", - "@rdfjs/types": "*", - "readable-stream": "^4.4.2", - "relative-to-absolute-iri": "^1.0.7" - } - }, - "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", - "integrity": "sha512-K4fvD0zMU22KkQCqIFVT5Oy2FREEZ9CAo9u6kOcsMxEvg9aHGIM6hkaXR8I+1JCx1mDuEj3zQ8joR4tQh8fYCw==", - "peer": true, - "dependencies": { - "@comunica/bus-http": "^2.10.2", - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/context-entries": "^2.10.0", - "@comunica/core": "^2.10.0", - "@comunica/types": "^2.10.0", - "jsonld-context-parser": "^2.2.2", - "jsonld-streaming-parser": "^3.0.1", - "stream-to-string": "^1.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", - "integrity": "sha512-o1MAbwJxW4Br2WCZdhFoRmAiOP4mfogeQqJ4nqlsOkoMtQ45EvLHsotb3Kqhuk5V+vsTxyK5v/a4zylGtcU7VQ==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/types": "^2.10.0", - "n3": "^1.17.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", - "integrity": "sha512-HoJN52shXY3cvYtsS0cpin9KXpW3L7g1leebyCRSqnlnHdJv5D6G0Ep8vyt2xhquKNbOQ7LnP5VhiDiqz73XDg==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/types": "^2.10.0", - "rdfxml-streaming-parser": "^2.2.3" - } - }, - "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==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/types": "^2.10.0", - "@rdfjs/types": "*", - "asynciterator": "^3.8.1", - "readable-stream": "^4.4.2", - "shaclc-parse": "^1.4.0", - "stream-to-string": "^1.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", - "integrity": "sha512-68r/6B/fEyA1/OYleVuaPq47J+g4xJcJijpdL1wEj7CqjV+Xa+sDWRpNCyLcD/e1Y/g9UQmLz0ZnSpR00PFddA==", - "peer": true, - "dependencies": { - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/types": "^2.10.0", - "rdfa-streaming-parser": "^2.0.1" - } - }, - "node_modules/@comunica/bus-dereference": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/bus-dereference/-/bus-dereference-2.10.0.tgz", - "integrity": "sha512-nWyQXiH7zbiPTVttWVKJHykhV4IuahfhfUwPx3Op+cVsK489Su84dnGeSmPkxTAFFuxe6wU6ZEH4i7PDu48YvQ==", - "peer": true, - "dependencies": { - "@comunica/actor-abstract-mediatyped": "^2.10.0", - "@comunica/actor-abstract-parse": "^2.10.0", - "@comunica/context-entries": "^2.10.0", - "@comunica/core": "^2.10.0", - "@comunica/types": "^2.10.0", - "readable-stream": "^4.4.2" - } - }, - "node_modules/@comunica/bus-dereference-rdf": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/bus-dereference-rdf/-/bus-dereference-rdf-2.10.0.tgz", - "integrity": "sha512-WY/wPmFpO76wwJ2D5Aus43ZbYnBRLvQ0EOp4yywO0lBiq6F0JisjCVCM4EtWouOEAAfqEoIjHXGyC3gPWqm+SQ==", - "peer": true, - "dependencies": { - "@comunica/bus-dereference": "^2.10.0", - "@comunica/bus-rdf-parse": "^2.10.0", - "@comunica/core": "^2.10.0", - "@rdfjs/types": "*" - } - }, - "node_modules/@comunica/bus-http": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@comunica/bus-http/-/bus-http-2.10.2.tgz", - "integrity": "sha512-MAYRF6uEBAuJ9dCPW2Uyne7w3lNwXFXKfa14XuPG5DFTDpgo/Z2pWupPrBsA1eIWMNJ6WOG6QyEv4rllSIBqlg==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0", - "@smessie/readable-web-to-node-stream": "^3.0.3", - "is-stream": "^2.0.1", - "readable-stream-node-to-web": "^1.0.1", - "web-streams-ponyfill": "^1.4.2" - } - }, - "node_modules/@comunica/bus-init": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/bus-init/-/bus-init-2.10.0.tgz", - "integrity": "sha512-hJejHa8sLVhQLFlduCVnhOd5aW3FCEz8wmWjyeLI3kiHFaQibnGVMhUuuNRX5f8bnnPuTdEiHc1nnYHuSi+j8A==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0", - "readable-stream": "^4.4.2" - } - }, - "node_modules/@comunica/bus-rdf-parse": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse/-/bus-rdf-parse-2.10.0.tgz", - "integrity": "sha512-EgCMZACfTG/+mayQpExWt0HoBT32BBVC1aS1lC43fXKBTxJ8kYrSrorVUuMACoh4dQVGTb+7j1j4K0hGNVzXGA==", - "peer": true, - "dependencies": { - "@comunica/actor-abstract-mediatyped": "^2.10.0", - "@comunica/actor-abstract-parse": "^2.10.0", - "@comunica/core": "^2.10.0", - "@rdfjs/types": "*" - } - }, - "node_modules/@comunica/bus-rdf-parse-html": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse-html/-/bus-rdf-parse-html-2.10.0.tgz", - "integrity": "sha512-RZliz4TtKP63QggoohGuIkGb6lq0BoYJ4aztKtGldWtPAVP/pdEvlDpiZWLB/j19g7S2aDLNY/lJtZ5efM1tHQ==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0", - "@rdfjs/types": "*" - } - }, - "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", - "integrity": "sha512-rMnFgT7cz9+0z7wV4OzIMY5qM9/Z0mTGrR8y2JokoHyyTcBGOSajFmy61XCSLMCsLLG8qDXsJ4ClCCky3TGfqA==", - "peer": true - }, - "node_modules/@comunica/context-entries": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/context-entries/-/context-entries-2.10.0.tgz", - "integrity": "sha512-lmCYCcXxW8C6ecFH2whZCt31NT1ejb0P/sbytK7f4ctyA06Q8iYFEcYE4eWOXMdpfkwkcnz31x9XL77OGeSC2Q==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@comunica/core": "^2.10.0", + "@comunica/types": "^2.10.0", + "@rdfjs/types": "*", + "jsonld-context-parser": "^2.2.2", + "sparqlalgebrajs": "^4.2.0" + } + }, - "node_modules/@comunica/core": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/core/-/core-2.10.0.tgz", - "integrity": "sha512-onsGs2iKHUPRxxMOdx42vdxslk8q9FQZdRjQtHJ6SGiCpJwIL9ciBgPIOl2RL2YfzXHemr/0umeNOppRDcWhJA==", - "peer": true, - "dependencies": { - "@comunica/types": "^2.10.0", - "immutable": "^4.1.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/@comunica/mediator-combine-pipeline": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/mediator-combine-pipeline/-/mediator-combine-pipeline-2.10.0.tgz", - "integrity": "sha512-j7+/oUlbhKB4Rq6g9oNKU+e9cQL8U9z8tAUNhoXUSHajcr4huj0t1+riaOD109/DRWhV793ILhBDzgiZbHd7DA==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0", - "@comunica/types": "^2.10.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", - "integrity": "sha512-QbP4zP1i6nMDZ8teC0RoTz5E8pOpxDhWPBr1ylb2jzPUjPpMgrnbHYTondlN0Oau3SMEehItojg/LYDtPOP/GQ==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0" - } - }, - "node_modules/@comunica/mediator-number": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/mediator-number/-/mediator-number-2.10.0.tgz", - "integrity": "sha512-0T8D1HGTu5Sd8iKb2dBjc6VRc/U4A15TAN6m561ra9pFlP+w31kby0ZYP6WWBHBobbUsX1LCvnbRQaAC4uWwVw==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0" - } - }, - "node_modules/@comunica/mediator-race": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/mediator-race/-/mediator-race-2.10.0.tgz", - "integrity": "sha512-JiEtOLMkPnbjSLabVpE4VqDbu2ZKKnkUdATGBeWX+o+MjPw6c0hhw01RG4WY2rQhDyNl++nLQe3EowQh8xW9TA==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0" - } - }, - "node_modules/@comunica/mediatortype-time": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/mediatortype-time/-/mediatortype-time-2.10.0.tgz", - "integrity": "sha512-nBz1exxrja1Tj8KSlSevG4Hw2u09tTh6gtNfVjI76i/e7muu4RUWVhi9b8PcwBNAfuUqRl+5OgOSa2X4W+6QlA==", - "peer": true, - "dependencies": { - "@comunica/core": "^2.10.0" - } - }, - "node_modules/@comunica/types": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", - "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", - "peer": true, - "dependencies": { - "@rdfjs/types": "*", - "@types/yargs": "^17.0.24", - "asynciterator": "^3.8.1", - "sparqlalgebrajs": "^4.2.0" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@digitalbazaar/http-client": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", - "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", - "dependencies": { - "ky": "^0.33.3", - "ky-universal": "^0.11.0", - "undici": "^5.21.2" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@rdfjs/data-model": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-2.0.2.tgz", - "integrity": "sha512-v5LRNkLRJazMCGU7VtEzhz5wKwz/IrOdJEKapCtd35HuFbQfeGpoJP6QOXGyFHhWwKmtG+UMlZzYFyNDVE1m6g==", - "bin": { - "rdfjs-data-model-test": "bin/test.js" - } - }, - "node_modules/@rdfjs/dataset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-2.0.2.tgz", - "integrity": "sha512-6YJx+5n5Uxzq9dd9I0GGcIo6eopZOPfcsAfxSGX5d+YBzDgVa1cbtEBFnaPyPKiQsOm4+Cr3nwypjpg02YKPlA==", - "bin": { - "rdfjs-dataset-test": "bin/test.js" - } - }, - "node_modules/@rdfjs/environment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rdfjs/environment/-/environment-1.0.0.tgz", - "integrity": "sha512-+S5YjSvfoQR5r7YQCRCCVHvIEyrWia7FJv2gqM3s5EDfotoAQmFeBagApa9c/eQFi5EiNhmBECE5nB8LIxTaHg==" - }, - "node_modules/@rdfjs/namespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/namespace/-/namespace-2.0.1.tgz", - "integrity": "sha512-U85NWVGnL3gWvOZ4eXwUcv3/bom7PAcutSBQqmVWvOaslPy+kDzAJCH1WYBLpdQd4yMmJ+bpJcDl9rcHtXeixg==", - "dependencies": { - "@rdfjs/data-model": "^2.0.1" - } - }, - "node_modules/@rdfjs/term-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/term-map/-/term-map-2.0.1.tgz", - "integrity": "sha512-kyaq8KfTxnMVclD5trsVkB774Q/4/mj+fwNBRxkMHCu/gTw3S1x7W8ZDFN9Yt1AiRkfG2CQe/b/iLbl5RMHvUQ==", - "dependencies": { - "@rdfjs/to-ntriples": "^2.0.0" - } - }, - "node_modules/@rdfjs/term-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rdfjs/term-set/-/term-set-2.0.2.tgz", - "integrity": "sha512-XSP+G9Q+QxeRcmTvUyFzdPJtGHdYDWr166UARO8UPhG/thUY2aHw7Qx17KTwTV0auJDSzO43AoJ6v/WdjrJ6pg==", - "dependencies": { - "@rdfjs/to-ntriples": "^2.0.0" - } - }, - "node_modules/@rdfjs/to-ntriples": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-2.0.0.tgz", - "integrity": "sha512-nDhpfhx6W6HKsy4HjyLp3H1nbrX1CiUCWhWQwKcYZX1s9GOjcoQTwY7GUUbVec0hzdJDQBR6gnjxtENBDt482Q==" - }, - "node_modules/@rdfjs/types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.0.tgz", - "integrity": "sha512-5zm8bN2/CC634dTcn/0AhTRLaQRjXDZs3QfcAsQKNturHT7XVWcKy/8p3P5gXl+YkZTAmy7T5M/LyiT/jbkENw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@rubensworks/saxes": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@rubensworks/saxes/-/saxes-6.0.1.tgz", - "integrity": "sha512-UW4OTIsOtJ5KSXo2Tchi4lhZqu+tlHrOAs4nNti7CrtB53kAZl3/hyrTi6HkMihxdbDM6m2Zc3swc/ZewEe1xw==", - "peer": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.12" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@smessie/readable-web-to-node-stream": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smessie/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.3.tgz", - "integrity": "sha512-8FFE7psRtRWQT31/duqbmgnSf2++QLR2YH9kj5iwsHhnoqSvHdOY3SAN5e7dhc+60p2cNk7rv3HYOiXOapTEXQ==", - "peer": true, - "dependencies": { - "process": "^0.11.10", - "readable-stream": "^4.5.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@tpluscode/rdf-ns-builders": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-4.3.0.tgz", - "integrity": "sha512-x3uh9mYwAU+PrALaDKhVjml1TCCWWduo6J8rybd9SMEEAoooXq1MYb13MRputjRT/kYaFyCND7LMobzhxZ/+bg==", - "dependencies": { - "@rdfjs/data-model": "^2", - "@rdfjs/namespace": "^2", - "@rdfjs/types": "*", - "@types/rdfjs__namespace": "^2.0.2", - "@zazuko/prefixes": "^2.0.1" - } - }, - "node_modules/@treecg/basic-bucketizer": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@treecg/basic-bucketizer/-/basic-bucketizer-2.1.10.tgz", - "integrity": "sha512-3R/HuUK0uja/Enlzud5QrK2epOFa+UawJSDZyvkRy8dJfcYMDdjHgV4+zNyx1/UkjqxWUEqLft9HhL7L0FTing==", - "dependencies": { - "@treecg/bucketizer-core": "^1.1.9", - "winston": "^3.11.0" - } - }, - "node_modules/@treecg/bucketizer-core": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@treecg/bucketizer-core/-/bucketizer-core-1.1.9.tgz", - "integrity": "sha512-qXpQp9fNawuecEyqVKg7pOEsP9nGWX44ZxLQNKO+F8SC65hk6eV4SQX4uwkCrWwAEynubvZYnw+3SV2oFFVpBQ==", - "dependencies": { - "n3": "^1.17.2", - "rdf-data-factory": "^1.1.2" - } - }, - "node_modules/@treecg/bucketizers": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@treecg/bucketizers/-/bucketizers-2.1.13.tgz", - "integrity": "sha512-sv+dDs9nP8o94T6yDzLXhYC7Ao6ldKmtc4bfFsNLeLram7xTvCstIKf1WwuD+YQ7XzcRS6bGDVzo/LwUfz94Lw==", - "dependencies": { - "@treecg/basic-bucketizer": "^2.1.10", - "@treecg/bucketizer-core": "^1.1.9", - "@treecg/geospatial-bucketizer": "^2.1.9", - "@treecg/multi-bucketizer": "^1.0.11", - "@treecg/subject-page-bucketizer": "^2.1.12", - "@treecg/substring-bucketizer": "^2.1.10", - "n3": "^1.17.2", - "rdf-validate-shacl": "^0.5.1", - "winston": "^3.11.0" - } - }, - "node_modules/@treecg/geospatial-bucketizer": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@treecg/geospatial-bucketizer/-/geospatial-bucketizer-2.1.9.tgz", - "integrity": "sha512-iRam8Kq3ZGMePDxqLepJRkWdLxSACDfWCbP8ip8MCMQwrpUGBdoX8X2P7S+BNILIikb6ZZWP1G8+lXunfnYjMg==", - "dependencies": { - "@treecg/bucketizer-core": "^1.1.9", - "@turf/bbox-polygon": "^6.5.0", - "@turf/turf": "^6.5.0", - "geojson-dissolve": "^3.1.0", - "slippy-bbox": "^1.0.0", - "winston": "^3.11.0", - "wkt": "^0.1.1" - } - }, - "node_modules/@treecg/multi-bucketizer": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@treecg/multi-bucketizer/-/multi-bucketizer-1.0.11.tgz", - "integrity": "sha512-qgSfmdnRBX+1k3rAdKNN5zK/+eRXjIWxK10QwN/6b4UgsYpqy5s/I8Rchnogx1WRlVA4OepmVidMSDHoqw1OlQ==", - "dependencies": { - "@treecg/bucketizer-core": "^1.1.9" - } - }, - "node_modules/@treecg/subject-page-bucketizer": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/@treecg/subject-page-bucketizer/-/subject-page-bucketizer-2.1.12.tgz", - "integrity": "sha512-MXiH+cZkslf9FnK/jAorYi/gaWzx9IZdhkwdMBwM0xSoQ6NzxQBNy1rvckhKkGuA7JkSMG+IGMiNxi+x6X/mMg==", - "dependencies": { - "@treecg/bucketizer-core": "^1.1.9", - "winston": "^3.11.0" - } - }, - "node_modules/@treecg/substring-bucketizer": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@treecg/substring-bucketizer/-/substring-bucketizer-2.1.10.tgz", - "integrity": "sha512-nuV6GyCL1sgXbMsCv8xS0hFzOpLS2B++8t/9yYCJPrrgWV0slUKjZdCBtRWDYUD3Hjwcniz8m1BUU8QohcrU8g==", - "dependencies": { - "@treecg/bucketizer-core": "^1.1.9", - "winston": "^3.11.0" - } - }, - "node_modules/@treecg/types": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/@treecg/types/-/types-0.4.6.tgz", - "integrity": "sha512-iL8rBhAX4INvfuHZzJ1RELh1i/fspviylENZTk6D2p/xDazY1pTkd+y/hxKYVWCC0jHNolDWRsH7ozwaFGNQKA==", - "dependencies": { - "@rdfjs/types": "*", - "loglevel": "^1.8.1", - "loglevel-plugin-prefix": "^0.8.4", - "rdf-data-factory": "^1.1.0" - } - }, - "node_modules/@turf/along": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", - "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/angle": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-6.5.0.tgz", - "integrity": "sha512-4pXMbWhFofJJAOvTMCns6N4C8CMd5Ih4O2jSAG9b3dDHakj3O4yN1+Zbm+NUei+eVEZ9gFeVp9svE3aMDenIkw==", - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/area": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.5.0.tgz", - "integrity": "sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", - "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox-clip": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-6.5.0.tgz", - "integrity": "sha512-F6PaIRF8WMp8EmgU/Ke5B1Y6/pia14UAYB5TiBC668w5rVVjy5L8rTm/m2lEkkDMHlzoP9vNY4pxpNthE7rLcQ==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-6.5.0.tgz", - "integrity": "sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==", - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bearing": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", - "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bezier-spline": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-6.5.0.tgz", - "integrity": "sha512-vokPaurTd4PF96rRgGVm6zYYC5r1u98ZsG+wZEv9y3kJTuJRX/O3xIY2QnTGTdbVmAJN1ouOsD0RoZYaVoXORQ==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-clockwise": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-6.5.0.tgz", - "integrity": "sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-contains": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-6.5.0.tgz", - "integrity": "sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-crosses": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.5.0.tgz", - "integrity": "sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/polygon-to-line": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-disjoint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-6.5.0.tgz", - "integrity": "sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/polygon-to-line": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-equal": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-6.5.0.tgz", - "integrity": "sha512-cY0M3yoLC26mhAnjv1gyYNQjn7wxIXmL2hBmI/qs8g5uKuC2hRWi13ydufE3k4x0aNRjFGlg41fjoYLwaVF+9Q==", - "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "geojson-equality": "0.1.6" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-intersects": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-6.5.0.tgz", - "integrity": "sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw==", - "dependencies": { - "@turf/boolean-disjoint": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-overlap": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-6.5.0.tgz", - "integrity": "sha512-8btMIdnbXVWUa1M7D4shyaSGxLRw6NjMcqKBcsTXcZdnaixl22k7ar7BvIzkaRYN3SFECk9VGXfLncNS3ckQUw==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/line-overlap": "^6.5.0", - "@turf/meta": "^6.5.0", - "geojson-equality": "0.1.6" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-parallel": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-6.5.0.tgz", - "integrity": "sha512-aSHJsr1nq9e5TthZGZ9CZYeXklJyRgR5kCLm5X4urz7+MotMOp/LsGOsvKvK9NeUl9+8OUmfMn8EFTT8LkcvIQ==", - "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-in-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz", - "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-on-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz", - "integrity": "sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-within": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.5.0.tgz", - "integrity": "sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/buffer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-6.5.0.tgz", - "integrity": "sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/projection": "^6.5.0", - "d3-geo": "1.7.1", - "turf-jsts": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-6.5.0.tgz", - "integrity": "sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-mean": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-6.5.0.tgz", - "integrity": "sha512-AAX6f4bVn12pTVrMUiB9KrnV94BgeBKpyg3YpfnEbBpkN/znfVhL8dG8IxMAxAoSZ61Zt9WLY34HfENveuOZ7Q==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-median": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-6.5.0.tgz", - "integrity": "sha512-dT8Ndu5CiZkPrj15PBvslpuf01ky41DEYEPxS01LOxp5HOUHXp1oJxsPxvc+i/wK4BwccPNzU1vzJ0S4emd1KQ==", - "dependencies": { - "@turf/center-mean": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-of-mass": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-6.5.0.tgz", - "integrity": "sha512-EWrriU6LraOfPN7m1jZi+1NLTKNkuIsGLZc2+Y8zbGruvUW+QV7K0nhf7iZWutlxHXTBqEXHbKue/o79IumAsQ==", - "dependencies": { - "@turf/centroid": "^6.5.0", - "@turf/convex": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/centroid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.5.0.tgz", - "integrity": "sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/circle": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-6.5.0.tgz", - "integrity": "sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==", - "dependencies": { - "@turf/destination": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clean-coords": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-6.5.0.tgz", - "integrity": "sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clone": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.5.0.tgz", - "integrity": "sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==", - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-6.5.0.tgz", - "integrity": "sha512-Y6gfnTJzQ1hdLfCsyd5zApNbfLIxYEpmDibHUqR5z03Lpe02pa78JtgrgUNt1seeO/aJ4TG1NLN8V5gOrHk04g==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters-dbscan": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-6.5.0.tgz", - "integrity": "sha512-SxZEE4kADU9DqLRiT53QZBBhu8EP9skviSyl+FGj08Y01xfICM/RR9ACUdM0aEQimhpu+ZpRVcUK+2jtiCGrYQ==", - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "density-clustering": "1.3.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters-kmeans": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-6.5.0.tgz", - "integrity": "sha512-DwacD5+YO8kwDPKaXwT9DV46tMBVNsbi1IzdajZu1JDSWoN7yc7N9Qt88oi+p30583O0UPVkAK+A10WAQv4mUw==", - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "skmeans": "0.9.7" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/collect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-6.5.0.tgz", - "integrity": "sha512-4dN/T6LNnRg099m97BJeOcTA5fSI8cu87Ydgfibewd2KQwBexO69AnjEFqfPX3Wj+Zvisj1uAVIZbPmSSrZkjg==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "rbush": "2.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/combine": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-6.5.0.tgz", - "integrity": "sha512-Q8EIC4OtAcHiJB3C4R+FpB4LANiT90t17uOd851qkM2/o6m39bfN5Mv0PWqMZIHWrrosZqRqoY9dJnzz/rJxYQ==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/concave": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-6.5.0.tgz", - "integrity": "sha512-I/sUmUC8TC5h/E2vPwxVht+nRt+TnXIPRoztDFvS8/Y0+cBDple9inLSo9nnPXMXidrBlGXZ9vQx/BjZUJgsRQ==", - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/tin": "^6.5.0", - "topojson-client": "3.x", - "topojson-server": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/convex": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-6.5.0.tgz", - "integrity": "sha512-x7ZwC5z7PJB0SBwNh7JCeCNx7Iu+QSrH7fYgK0RhhNop13TqUlvHMirMLRgf2db1DqUetrAO2qHJeIuasquUWg==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "concaveman": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/destination": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", - "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/difference": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.5.0.tgz", - "integrity": "sha512-l8iR5uJqvI+5Fs6leNbhPY5t/a3vipUF/3AeVLpwPQcgmedNXyheYuy07PcMGH5Jdpi5gItOiTqwiU/bUH4b3A==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/dissolve": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-6.5.0.tgz", - "integrity": "sha512-WBVbpm9zLTp0Bl9CE35NomTaOL1c4TQCtEoO43YaAhNEWJOOIhZMFJyr8mbvYruKl817KinT3x7aYjjCMjTAsQ==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", - "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance-weight": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-6.5.0.tgz", - "integrity": "sha512-a8qBKkgVNvPKBfZfEJZnC3DV7dfIsC3UIdpRci/iap/wZLH41EmS90nM+BokAJflUHYy8PqE44wySGWHN1FXrQ==", - "dependencies": { - "@turf/centroid": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/ellipse": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-6.5.0.tgz", - "integrity": "sha512-kuXtwFviw/JqnyJXF1mrR/cb496zDTSbGKtSiolWMNImYzGGkbsAsFTjwJYgD7+4FixHjp0uQPzo70KDf3AIBw==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/transform-rotate": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/envelope": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-6.5.0.tgz", - "integrity": "sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/bbox-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/explode": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-6.5.0.tgz", - "integrity": "sha512-6cSvMrnHm2qAsace6pw9cDmK2buAlw8+tjeJVXMfMyY+w7ZUi1rprWMsY92J7s2Dar63Bv09n56/1V7+tcj52Q==", + + "node_modules/@comunica/core": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + + "@comunica/types": "^2.10.0", + + "immutable": "^4.1.0" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">=14.0" + } + }, - "node_modules/@turf/flatten": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-6.5.0.tgz", - "integrity": "sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==", + + "node_modules/@comunica/mediator-combine-pipeline": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@comunica/core": "^2.10.0", + + "@comunica/types": "^2.10.0" + } + }, - "node_modules/@turf/flip": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-6.5.0.tgz", - "integrity": "sha512-oyikJFNjt2LmIXQqgOGLvt70RgE2lyzPMloYWM7OR5oIFGRiBvqVD2hA6MNw6JewIm30fWZ8DQJw1NHXJTJPbg==", + + "node_modules/@comunica/mediator-combine-union": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@comunica/core": "^2.10.0" + } + }, - "node_modules/@turf/great-circle": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-6.5.0.tgz", - "integrity": "sha512-7ovyi3HaKOXdFyN7yy1yOMa8IyOvV46RC1QOQTT+RYUN8ke10eyqExwBpL9RFUPvlpoTzoYbM/+lWPogQlFncg==", + + "node_modules/@comunica/mediator-number": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "funding": { - "url": "https://opencollective.com/turf" + + "@comunica/core": "^2.10.0" + } + }, - "node_modules/@turf/hex-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-6.5.0.tgz", - "integrity": "sha512-Ln3tc2tgZT8etDOldgc6e741Smg1CsMKAz1/Mlel+MEL5Ynv2mhx3m0q4J9IB1F3a4MNjDeVvm8drAaf9SF33g==", + + "node_modules/@comunica/mediator-race": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/intersect": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/interpolate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-6.5.0.tgz", - "integrity": "sha512-LSH5fMeiGyuDZ4WrDJNgh81d2DnNDUVJtuFryJFup8PV8jbs46lQGfI3r1DJ2p1IlEJIz3pmAZYeTfMMoeeohw==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/hex-grid": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/point-grid": "^6.5.0", - "@turf/square-grid": "^6.5.0", - "@turf/triangle-grid": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@comunica/core": "^2.10.0" + } + }, - "node_modules/@turf/intersect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz", - "integrity": "sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==", + + "node_modules/@comunica/mediatortype-time": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@comunica/core": "^2.10.0" + } + }, - "node_modules/@turf/invariant": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", - "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", + + "node_modules/@comunica/types": { + + "version": "2.10.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@rdfjs/types": "*", + + "@types/yargs": "^17.0.24", + + "asynciterator": "^3.8.1", + + "sparqlalgebrajs": "^4.2.0" + } + }, - "node_modules/@turf/isobands": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-6.5.0.tgz", - "integrity": "sha512-4h6sjBPhRwMVuFaVBv70YB7eGz+iw0bhPRnp+8JBdX1UPJSXhoi/ZF2rACemRUr0HkdVB/a1r9gC32vn5IAEkw==", + + "node_modules/@cspotcode/source-map-support": { + + "version": "0.8.1", + + "license": "MIT", + "dependencies": { - "@turf/area": "^6.5.0", - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "object-assign": "*" + + "@jridgewell/trace-mapping": "0.3.9" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">=12" + } + }, - "node_modules/@turf/isolines": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-6.5.0.tgz", - "integrity": "sha512-6ElhiLCopxWlv4tPoxiCzASWt/jMRvmp6mRYrpzOm3EUl75OhHKa/Pu6Y9nWtCMmVC/RcWtiiweUocbPLZLm0A==", + + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + + "version": "0.3.9", + + "license": "MIT", + "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "object-assign": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@jridgewell/resolve-uri": "^3.0.3", + + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, - "node_modules/@turf/kinks": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.5.0.tgz", - "integrity": "sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==", + + "node_modules/@digitalbazaar/http-client": { + + "version": "3.4.1", + + "license": "BSD-3-Clause", + "dependencies": { - "@turf/helpers": "^6.5.0" + + "ky": "^0.33.3", + + "ky-universal": "^0.11.0", + + "undici": "^5.21.2" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">=14.0" + + } + + }, + + "node_modules/@esbuild/linux-x64": { + + "version": "0.21.5", + + "cpu": [ + + "x64" + + ], + + "license": "MIT", + + "optional": true, + + "os": [ + + "linux" + + ], + + "engines": { + + "node": ">=12" + } + }, - "node_modules/@turf/length": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", - "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", + + "node_modules/@eslint-community/eslint-utils": { + + "version": "4.4.0", + + "license": "MIT", + "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + + "eslint-visitor-keys": "^3.3.0" + }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-arc": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-6.5.0.tgz", - "integrity": "sha512-I6c+V6mIyEwbtg9P9zSFF89T7QPe1DPTG3MJJ6Cm1MrAY0MdejwQKOpsvNl8LDU2ekHOlz2kHpPVR7VJsoMllA==", - "dependencies": { - "@turf/circle": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/helpers": "^6.5.0" + + "engines": { + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "peerDependencies": { + + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, - "node_modules/@turf/line-chunk": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-6.5.0.tgz", - "integrity": "sha512-i1FGE6YJaaYa+IJesTfyRRQZP31QouS+wh/pa6O3CC0q4T7LtHigyBSYjrbjSLfn2EVPYGlPCMFEqNWCOkC6zg==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/length": "^6.5.0", - "@turf/line-slice-along": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "node_modules/@eslint-community/regexpp": { + + "version": "4.10.1", + + "license": "MIT", + + "engines": { + + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, - "node_modules/@turf/line-intersect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", - "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", + + "node_modules/@eslint/eslintrc": { + + "version": "2.1.4", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "geojson-rbush": "3.x" + + "ajv": "^6.12.4", + + "debug": "^4.3.2", + + "espree": "^9.6.0", + + "globals": "^13.19.0", + + "ignore": "^5.2.0", + + "import-fresh": "^3.2.1", + + "js-yaml": "^4.1.0", + + "minimatch": "^3.1.2", + + "strip-json-comments": "^3.1.1" + + }, + + "engines": { + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "url": "https://opencollective.com/eslint" + } + }, - "node_modules/@turf/line-offset": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-6.5.0.tgz", - "integrity": "sha512-CEXZbKgyz8r72qRvPchK0dxqsq8IQBdH275FE6o4MrBkzMcoZsfSjghtXzKaz9vvro+HfIXal0sTk2mqV1lQTw==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "node_modules/@eslint/js": { + + "version": "8.57.0", + + "license": "MIT", + + "engines": { + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, - "node_modules/@turf/line-overlap": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-6.5.0.tgz", - "integrity": "sha512-xHOaWLd0hkaC/1OLcStCpfq55lPHpPNadZySDXYiYjEz5HXr1oKmtMYpn0wGizsLwrOixRdEp+j7bL8dPt4ojQ==", - "dependencies": { - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0", - "deep-equal": "1.x", - "geojson-rbush": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "node_modules/@fastify/busboy": { + + "version": "2.1.1", + + "license": "MIT", + + "engines": { + + "node": ">=14" + } + }, - "node_modules/@turf/line-segment": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz", - "integrity": "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==", + + "node_modules/@humanwhocodes/config-array": { + + "version": "0.11.14", + + "license": "Apache-2.0", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" + + "@humanwhocodes/object-schema": "^2.0.2", + + "debug": "^4.3.1", + + "minimatch": "^3.0.5" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">=10.10.0" + } + }, - "node_modules/@turf/line-slice": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-6.5.0.tgz", - "integrity": "sha512-vDqJxve9tBHhOaVVFXqVjF5qDzGtKWviyjbyi2QnSnxyFAmLlLnBfMX8TLQCAf2GxHibB95RO5FBE6I2KVPRuw==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0" + + "node_modules/@humanwhocodes/module-importer": { + + "version": "1.0.1", + + "license": "Apache-2.0", + + "engines": { + + "node": ">=12.22" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "type": "github", + + "url": "https://github.com/sponsors/nzakas" + } + }, - "node_modules/@turf/line-slice-along": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-6.5.0.tgz", - "integrity": "sha512-KHJRU6KpHrAj+BTgTNqby6VCTnDzG6a1sJx/I3hNvqMBLvWVA2IrkR9L9DtsQsVY63IBwVdQDqiwCuZLDQh4Ng==", - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + + "node_modules/@humanwhocodes/object-schema": { + + "version": "2.0.3", + + "license": "BSD-3-Clause" + }, - "node_modules/@turf/line-split": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-6.5.0.tgz", - "integrity": "sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0", - "@turf/square": "^6.5.0", - "@turf/truncate": "^6.5.0", - "geojson-rbush": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "node_modules/@istanbuljs/schema": { + + "version": "0.1.3", + + "license": "MIT", + + "engines": { + + "node": ">=8" + } + }, - "node_modules/@turf/line-to-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-6.5.0.tgz", - "integrity": "sha512-qYBuRCJJL8Gx27OwCD1TMijM/9XjRgXH/m/TyuND4OXedBpIWlK5VbTIO2gJ8OCfznBBddpjiObLBrkuxTpN4Q==", + + "node_modules/@jest/schemas": { + + "version": "29.6.3", + + "license": "MIT", + "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + + "@sinclair/typebox": "^0.27.8" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, - "node_modules/@turf/mask": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-6.5.0.tgz", - "integrity": "sha512-RQha4aU8LpBrmrkH8CPaaoAfk0Egj5OuXtv6HuCQnHeGNOQt3TQVibTA3Sh4iduq4EPxnZfDjgsOeKtrCA19lg==", + + "node_modules/@jridgewell/gen-mapping": { + + "version": "0.3.5", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "polygon-clipping": "^0.15.3" + + "@jridgewell/set-array": "^1.2.1", + + "@jridgewell/sourcemap-codec": "^1.4.10", + + "@jridgewell/trace-mapping": "^0.3.24" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">=6.0.0" + } + }, - "node_modules/@turf/meta": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", - "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "node_modules/@jridgewell/resolve-uri": { + + "version": "3.1.2", + + "license": "MIT", + + "engines": { + + "node": ">=6.0.0" + } + }, - "node_modules/@turf/midpoint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-6.5.0.tgz", - "integrity": "sha512-MyTzV44IwmVI6ec9fB2OgZ53JGNlgOpaYl9ArKoF49rXpL84F9rNATndbe0+MQIhdkw8IlzA6xVP4lZzfMNVCw==", - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "node_modules/@jridgewell/set-array": { + + "version": "1.2.1", + + "license": "MIT", + + "engines": { + + "node": ">=6.0.0" + } + }, - "node_modules/@turf/moran-index": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-6.5.0.tgz", - "integrity": "sha512-ItsnhrU2XYtTtTudrM8so4afBCYWNaB0Mfy28NZwLjB5jWuAsvyV+YW+J88+neK/ougKMTawkmjQqodNJaBeLQ==", + + "node_modules/@jridgewell/sourcemap-codec": { + + "version": "1.4.15", + + "license": "MIT" + + }, + + "node_modules/@jridgewell/trace-mapping": { + + "version": "0.3.25", + + "license": "MIT", + "dependencies": { - "@turf/distance-weight": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@jridgewell/resolve-uri": "^3.1.0", + + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, - "node_modules/@turf/nearest-point": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-6.5.0.tgz", - "integrity": "sha512-fguV09QxilZv/p94s8SMsXILIAMiaXI5PATq9d7YWijLxWUj6Q/r43kxyoi78Zmwwh1Zfqz9w+bCYUAxZ5+euA==", + + "node_modules/@nodelib/fs.scandir": { + + "version": "2.1.5", + + "license": "MIT", + "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + + "@nodelib/fs.stat": "2.0.5", + + "run-parallel": "^1.1.9" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">= 8" + } + }, - "node_modules/@turf/nearest-point-on-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz", - "integrity": "sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==", - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "node_modules/@nodelib/fs.stat": { + + "version": "2.0.5", + + "license": "MIT", + + "engines": { + + "node": ">= 8" + } + }, - "node_modules/@turf/nearest-point-to-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-6.5.0.tgz", - "integrity": "sha512-PXV7cN0BVzUZdjj6oeb/ESnzXSfWmEMrsfZSDRgqyZ9ytdiIj/eRsnOXLR13LkTdXVOJYDBuf7xt1mLhM4p6+Q==", + + "node_modules/@nodelib/fs.walk": { + + "version": "1.2.8", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/point-to-line-distance": "^6.5.0", - "object-assign": "*" + + "@nodelib/fs.scandir": "2.1.5", + + "fastq": "^1.6.0" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">= 8" + } + }, - "node_modules/@turf/planepoint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-6.5.0.tgz", - "integrity": "sha512-R3AahA6DUvtFbka1kcJHqZ7DMHmPXDEQpbU5WaglNn7NaCQg9HB0XM0ZfqWcd5u92YXV+Gg8QhC8x5XojfcM4Q==", + + "node_modules/@rdfc/js-runner": { + + "version": "0.2.1", + + "dev": true, + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + + "@rdfjs/types": "^1.1.0", + + "@treecg/types": "^0.4.5", + + "command-line-args": "^5.2.1", + + "command-line-usage": "^6.1.3", + + "debug": "^4.3.4", + + "kafkajs": "^2.2.4", + + "n3": "^1.17.1", + + "rdf-lens": "^1.2.8", + + "stream-to-array": "^2.3.0", + + "ws": "^8.14.2" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "bin": { + + "js-runner": "bin/bundle.mjs" + } + }, - "node_modules/@turf/point-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-6.5.0.tgz", - "integrity": "sha512-Iq38lFokNNtQJnOj/RBKmyt6dlof0yhaHEDELaWHuECm1lIZLY3ZbVMwbs+nXkwTAHjKfS/OtMheUBkw+ee49w==", + + "node_modules/@rdfjs/types": { + + "version": "1.1.0", + + "license": "MIT", + "dependencies": { - "@turf/boolean-within": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + + "@types/node": "*" + + } + + }, + + "node_modules/@rollup/rollup-linux-x64-gnu": { + + "version": "4.18.0", + + "cpu": [ + + "x64" + + ], + + "license": "MIT", + + "optional": true, + + "os": [ + + "linux" + + ] + + }, + + "node_modules/@rollup/rollup-linux-x64-musl": { + + "version": "4.18.0", + + "cpu": [ + + "x64" + + ], + + "license": "MIT", + + "optional": true, + + "os": [ + + "linux" + + ] + }, - "node_modules/@turf/point-on-feature": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-6.5.0.tgz", - "integrity": "sha512-bDpuIlvugJhfcF/0awAQ+QI6Om1Y1FFYE8Y/YdxGRongivix850dTeXCo0mDylFdWFPGDo7Mmh9Vo4VxNwW/TA==", + + "node_modules/@rubensworks/saxes": { + + "version": "6.0.1", + + "license": "ISC", + "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/nearest-point": "^6.5.0" + + "xmlchars": "^2.2.0" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "engines": { + + "node": ">=v12.22.12" + } + + }, + + "node_modules/@sinclair/typebox": { + + "version": "0.27.8", + + "license": "MIT" + }, - "node_modules/@turf/point-to-line-distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-6.5.0.tgz", - "integrity": "sha512-opHVQ4vjUhNBly1bob6RWy+F+hsZDH9SA0UW36pIRzfpu27qipU18xup0XXEePfY6+wvhF6yL/WgCO2IbrLqEA==", + + "node_modules/@smessie/readable-web-to-node-stream": { + + "version": "3.0.3", + + "license": "MIT", + "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/projection": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0" + + "process": "^0.11.10", + + "readable-stream": "^4.5.1" + + }, + + "engines": { + + "node": ">=8" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "type": "github", + + "url": "https://github.com/sponsors/Borewit" + } + }, - "node_modules/@turf/points-within-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-6.5.0.tgz", - "integrity": "sha512-YyuheKqjliDsBDt3Ho73QVZk1VXX1+zIA2gwWvuz8bR1HXOkcuwk/1J76HuFMOQI3WK78wyAi+xbkx268PkQzQ==", + + "node_modules/@treecg/types": { + + "version": "0.4.6", + + "license": "UNLICENSE", + "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@rdfjs/types": "*", + + "loglevel": "^1.8.1", + + "loglevel-plugin-prefix": "^0.8.4", + + "rdf-data-factory": "^1.1.0" + } + + }, + + "node_modules/@tsconfig/node10": { + + "version": "1.0.11", + + "license": "MIT" + + }, + + "node_modules/@tsconfig/node12": { + + "version": "1.0.11", + + "license": "MIT" + }, - "node_modules/@turf/polygon-smooth": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-6.5.0.tgz", - "integrity": "sha512-LO/X/5hfh/Rk4EfkDBpLlVwt3i6IXdtQccDT9rMjXEP32tRgy0VMFmdkNaXoGlSSKf/1mGqLl4y4wHd86DqKbg==", + + "node_modules/@tsconfig/node14": { + + "version": "1.0.3", + + "license": "MIT" + + }, + + "node_modules/@tsconfig/node16": { + + "version": "1.0.4", + + "license": "MIT" + + }, + + "node_modules/@types/estree": { + + "version": "1.0.5", + + "license": "MIT" + + }, + + "node_modules/@types/http-link-header": { + + "version": "1.0.5", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@types/node": "*" + } + + }, + + "node_modules/@types/jsonld": { + + "version": "1.5.14", + + "dev": true, + + "license": "MIT" + }, - "node_modules/@turf/polygon-tangents": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-6.5.0.tgz", - "integrity": "sha512-sB4/IUqJMYRQH9jVBwqS/XDitkEfbyqRy+EH/cMRJURTg78eHunvJ708x5r6umXsbiUyQU4eqgPzEylWEQiunw==", + + "node_modules/@types/n3": { + + "version": "1.16.4", + + "dev": true, + + "license": "MIT", + "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-within": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/nearest-point": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@rdfjs/types": "^1.1.0", + + "@types/node": "*" + } + }, - "node_modules/@turf/polygon-to-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz", - "integrity": "sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==", + + "node_modules/@types/node": { + + "version": "20.14.2", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "undici-types": "~5.26.4" + } + }, - "node_modules/@turf/polygonize": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-6.5.0.tgz", - "integrity": "sha512-a/3GzHRaCyzg7tVYHo43QUChCspa99oK4yPqooVIwTC61npFzdrmnywMv0S+WZjHZwK37BrFJGFrZGf6ocmY5w==", + + "node_modules/@types/rdf-js": { + + "version": "4.0.2", + + "dev": true, + + "license": "MIT", + "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/envelope": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "rdf-js": "*" + } + }, - "node_modules/@turf/projection": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-6.5.0.tgz", - "integrity": "sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==", + + "node_modules/@types/readable-stream": { + + "version": "2.3.15", + + "license": "MIT", + "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@types/node": "*", + + "safe-buffer": "~5.1.1" + } + }, - "node_modules/@turf/random": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/random/-/random-6.5.0.tgz", - "integrity": "sha512-8Q25gQ/XbA7HJAe+eXp4UhcXM9aOOJFaxZ02+XSNwMvY8gtWSCBLVqRcW4OhqilgZ8PeuQDWgBxeo+BIqqFWFQ==", - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + + "node_modules/@types/readable-stream/node_modules/safe-buffer": { + + "version": "5.1.2", + + "license": "MIT" + }, - "node_modules/@turf/rectangle-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-6.5.0.tgz", - "integrity": "sha512-yQZ/1vbW68O2KsSB3OZYK+72aWz/Adnf7m2CMKcC+aq6TwjxZjAvlbCOsNUnMAuldRUVN1ph6RXMG4e9KEvKvg==", + + "node_modules/@types/sparqljs": { + + "version": "3.1.10", + + "license": "MIT", + "dependencies": { - "@turf/boolean-intersects": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@rdfjs/types": ">=1.0.0" + } + }, - "node_modules/@turf/rewind": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-6.5.0.tgz", - "integrity": "sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==", + + "node_modules/@types/yargs": { + + "version": "17.0.32", + + "license": "MIT", + "dependencies": { - "@turf/boolean-clockwise": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "@types/yargs-parser": "*" + } + }, - "node_modules/@turf/rhumb-bearing": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-6.5.0.tgz", - "integrity": "sha512-jMyqiMRK4hzREjQmnLXmkJ+VTNTx1ii8vuqRwJPcTlKbNWfjDz/5JqJlb5NaFDcdMpftWovkW5GevfnuzHnOYA==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + + "node_modules/@types/yargs-parser": { + + "version": "21.0.3", + + "license": "MIT" + + }, + + "node_modules/@typescript-eslint/eslint-plugin": { + + "version": "7.13.0", + + "license": "MIT", + + "dependencies": { + + "@eslint-community/regexpp": "^4.10.0", + + "@typescript-eslint/scope-manager": "7.13.0", + + "@typescript-eslint/type-utils": "7.13.0", + + "@typescript-eslint/utils": "7.13.0", + + "@typescript-eslint/visitor-keys": "7.13.0", + + "graphemer": "^1.4.0", + + "ignore": "^5.3.1", + + "natural-compare": "^1.4.0", + + "ts-api-utils": "^1.3.0" + }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-destination": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-6.5.0.tgz", - "integrity": "sha512-RHNP1Oy+7xTTdRrTt375jOZeHceFbjwohPHlr9Hf68VdHHPMAWgAKqiX2YgSWDcvECVmiGaBKWus1Df+N7eE4Q==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-6.5.0.tgz", - "integrity": "sha512-oKp8KFE8E4huC2Z1a1KNcFwjVOqa99isxNOwfo4g3SUABQ6NezjKDDrnvC4yI5YZ3/huDjULLBvhed45xdCrzg==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/sample": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-6.5.0.tgz", - "integrity": "sha512-kSdCwY7el15xQjnXYW520heKUrHwRvnzx8ka4eYxX9NFeOxaFITLW2G7UtXb6LJK8mmPXI8Aexv23F2ERqzGFg==", - "dependencies": { - "@turf/helpers": "^6.5.0" + + "peerDependencies": { + + "@typescript-eslint/parser": "^7.0.0", + + "eslint": "^8.56.0" + }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/sector": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-6.5.0.tgz", - "integrity": "sha512-cYUOkgCTWqa23SOJBqxoFAc/yGCUsPRdn/ovbRTn1zNTm/Spmk6hVB84LCKOgHqvSF25i0d2kWqpZDzLDdAPbw==", - "dependencies": { - "@turf/circle": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-arc": "^6.5.0", - "@turf/meta": "^6.5.0" + + "peerDependenciesMeta": { + + "typescript": { + + "optional": true + + } + + } + + }, + + "node_modules/@typescript-eslint/parser": { + + "version": "7.13.0", + + "license": "BSD-2-Clause", + + "dependencies": { + + "@typescript-eslint/scope-manager": "7.13.0", + + "@typescript-eslint/types": "7.13.0", + + "@typescript-eslint/typescript-estree": "7.13.0", + + "@typescript-eslint/visitor-keys": "7.13.0", + + "debug": "^4.3.4" + }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/shortest-path": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-6.5.0.tgz", - "integrity": "sha512-4de5+G7+P4hgSoPwn+SO9QSi9HY5NEV/xRJ+cmoFVRwv2CDsuOPDheHKeuIAhKyeKDvPvPt04XYWbac4insJMg==", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/bbox-polygon": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/clean-coords": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/transform-scale": "^6.5.0" + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/simplify": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-6.5.0.tgz", - "integrity": "sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==", - "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/square": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/square/-/square-6.5.0.tgz", - "integrity": "sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==", - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" + + "peerDependencies": { + + "eslint": "^8.56.0" + }, - "funding": { - "url": "https://opencollective.com/turf" + + "peerDependenciesMeta": { + + "typescript": { + + "optional": true + + } + } + }, - "node_modules/@turf/square-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-6.5.0.tgz", - "integrity": "sha512-mlR0ayUdA+L4c9h7p4k3pX6gPWHNGuZkt2c5II1TJRmhLkW2557d6b/Vjfd1z9OVaajb1HinIs1FMSAPXuuUrA==", + + "node_modules/@typescript-eslint/scope-manager": { + + "version": "7.13.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/rectangle-grid": "^6.5.0" + + "@typescript-eslint/types": "7.13.0", + + "@typescript-eslint/visitor-keys": "7.13.0" + + }, + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + } + }, - "node_modules/@turf/standard-deviational-ellipse": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-6.5.0.tgz", - "integrity": "sha512-02CAlz8POvGPFK2BKK8uHGUk/LXb0MK459JVjKxLC2yJYieOBTqEbjP0qaWhiBhGzIxSMaqe8WxZ0KvqdnstHA==", + + "node_modules/@typescript-eslint/type-utils": { + + "version": "7.13.0", + + "license": "MIT", + "dependencies": { - "@turf/center-mean": "^6.5.0", - "@turf/ellipse": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/points-within-polygon": "^6.5.0" + + "@typescript-eslint/typescript-estree": "7.13.0", + + "@typescript-eslint/utils": "7.13.0", + + "debug": "^4.3.4", + + "ts-api-utils": "^1.3.0" + + }, + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + + }, + + "peerDependencies": { + + "eslint": "^8.56.0" + + }, + + "peerDependenciesMeta": { + + "typescript": { + + "optional": true + + } + } + }, - "node_modules/@turf/tag": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-6.5.0.tgz", - "integrity": "sha512-XwlBvrOV38CQsrNfrxvBaAPBQgXMljeU0DV8ExOyGM7/hvuGHJw3y8kKnQ4lmEQcmcrycjDQhP7JqoRv8vFssg==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + + "node_modules/@typescript-eslint/types": { + + "version": "7.13.0", + + "license": "MIT", + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + + } + + }, + + "node_modules/@typescript-eslint/typescript-estree": { + + "version": "7.13.0", + + "license": "BSD-2-Clause", + + "dependencies": { + + "@typescript-eslint/types": "7.13.0", + + "@typescript-eslint/visitor-keys": "7.13.0", + + "debug": "^4.3.4", + + "globby": "^11.1.0", + + "is-glob": "^4.0.3", + + "minimatch": "^9.0.4", + + "semver": "^7.6.0", + + "ts-api-utils": "^1.3.0" + + }, + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + + }, + + "funding": { + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + + }, + + "peerDependenciesMeta": { + + "typescript": { + + "optional": true + + } + } + }, - "node_modules/@turf/tesselate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-6.5.0.tgz", - "integrity": "sha512-M1HXuyZFCfEIIKkglh/r5L9H3c5QTEsnMBoZOFQiRnGPGmJWcaBissGb7mTFX2+DKE7FNWXh4TDnZlaLABB0dQ==", + + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + + "version": "9.0.4", + + "license": "ISC", + "dependencies": { - "@turf/helpers": "^6.5.0", - "earcut": "^2.0.0" + + "brace-expansion": "^2.0.1" + + }, + + "engines": { + + "node": ">=16 || 14 >=14.17" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "url": "https://github.com/sponsors/isaacs" + } + }, - "node_modules/@turf/tin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-6.5.0.tgz", - "integrity": "sha512-YLYikRzKisfwj7+F+Tmyy/LE3d2H7D4kajajIfc9mlik2+esG7IolsX/+oUz1biguDYsG0DUA8kVYXDkobukfg==", + + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch/node_modules/brace-expansion": { + + "version": "2.0.1", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" + + "balanced-match": "^1.0.0" + } + }, - "node_modules/@turf/transform-rotate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-6.5.0.tgz", - "integrity": "sha512-A2Ip1v4246ZmpssxpcL0hhiVBEf4L8lGnSPWTgSv5bWBEoya2fa/0SnFX9xJgP40rMP+ZzRaCN37vLHbv1Guag==", + + "node_modules/@typescript-eslint/utils": { + + "version": "7.13.0", + + "license": "MIT", + "dependencies": { - "@turf/centroid": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0" + + "@eslint-community/eslint-utils": "^4.4.0", + + "@typescript-eslint/scope-manager": "7.13.0", + + "@typescript-eslint/types": "7.13.0", + + "@typescript-eslint/typescript-estree": "7.13.0" + + }, + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + + }, + + "peerDependencies": { + + "eslint": "^8.56.0" + } + }, - "node_modules/@turf/transform-scale": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-6.5.0.tgz", - "integrity": "sha512-VsATGXC9rYM8qTjbQJ/P7BswKWXHdnSJ35JlV4OsZyHBMxJQHftvmZJsFbOqVtQnIQIzf2OAly6rfzVV9QLr7g==", + + "node_modules/@typescript-eslint/visitor-keys": { + + "version": "7.13.0", + + "license": "MIT", + "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0" + + "@typescript-eslint/types": "7.13.0", + + "eslint-visitor-keys": "^3.4.3" + }, + + "engines": { + + "node": "^18.18.0 || >=20.0.0" + + }, + "funding": { - "url": "https://opencollective.com/turf" + + "type": "opencollective", + + "url": "https://opencollective.com/typescript-eslint" + } + + }, + + "node_modules/@ungap/structured-clone": { + + "version": "1.2.0", + + "license": "ISC" + }, - "node_modules/@turf/transform-translate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-6.5.0.tgz", - "integrity": "sha512-NABLw5VdtJt/9vSstChp93pc6oel4qXEos56RBMsPlYB8hzNTEKYtC146XJvyF4twJeeYS8RVe1u7KhoFwEM5w==", + + "node_modules/@vitest/coverage-v8": { + + "version": "1.6.0", + + "license": "MIT", + "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0" + + "@ampproject/remapping": "^2.2.1", + + "@bcoe/v8-coverage": "^0.2.3", + + "debug": "^4.3.4", + + "istanbul-lib-coverage": "^3.2.2", + + "istanbul-lib-report": "^3.0.1", + + "istanbul-lib-source-maps": "^5.0.4", + + "istanbul-reports": "^3.1.6", + + "magic-string": "^0.30.5", + + "magicast": "^0.3.3", + + "picocolors": "^1.0.0", + + "std-env": "^3.5.0", + + "strip-literal": "^2.0.0", + + "test-exclude": "^6.0.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "url": "https://opencollective.com/vitest" + + }, + + "peerDependencies": { + + "vitest": "1.6.0" + } + }, - "node_modules/@turf/triangle-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-6.5.0.tgz", - "integrity": "sha512-2jToUSAS1R1htq4TyLQYPTIsoy6wg3e3BQXjm2rANzw4wPQCXGOxrur1Fy9RtzwqwljlC7DF4tg0OnWr8RjmfA==", + + "node_modules/@vitest/expect": { + + "version": "1.6.0", + + "license": "MIT", + "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/intersect": "^6.5.0" + + "@vitest/spy": "1.6.0", + + "@vitest/utils": "1.6.0", + + "chai": "^4.3.10" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "url": "https://opencollective.com/vitest" + } + }, - "node_modules/@turf/truncate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-6.5.0.tgz", - "integrity": "sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==", + + "node_modules/@vitest/runner": { + + "version": "1.6.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/turf": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-6.5.0.tgz", - "integrity": "sha512-ipMCPnhu59bh92MNt8+pr1VZQhHVuTMHklciQURo54heoxRzt1neNYZOBR6jdL+hNsbDGAECMuIpAutX+a3Y+w==", - "dependencies": { - "@turf/along": "^6.5.0", - "@turf/angle": "^6.5.0", - "@turf/area": "^6.5.0", - "@turf/bbox": "^6.5.0", - "@turf/bbox-clip": "^6.5.0", - "@turf/bbox-polygon": "^6.5.0", - "@turf/bearing": "^6.5.0", - "@turf/bezier-spline": "^6.5.0", - "@turf/boolean-clockwise": "^6.5.0", - "@turf/boolean-contains": "^6.5.0", - "@turf/boolean-crosses": "^6.5.0", - "@turf/boolean-disjoint": "^6.5.0", - "@turf/boolean-equal": "^6.5.0", - "@turf/boolean-intersects": "^6.5.0", - "@turf/boolean-overlap": "^6.5.0", - "@turf/boolean-parallel": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/boolean-within": "^6.5.0", - "@turf/buffer": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/center-mean": "^6.5.0", - "@turf/center-median": "^6.5.0", - "@turf/center-of-mass": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/circle": "^6.5.0", - "@turf/clean-coords": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/clusters": "^6.5.0", - "@turf/clusters-dbscan": "^6.5.0", - "@turf/clusters-kmeans": "^6.5.0", - "@turf/collect": "^6.5.0", - "@turf/combine": "^6.5.0", - "@turf/concave": "^6.5.0", - "@turf/convex": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/difference": "^6.5.0", - "@turf/dissolve": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/distance-weight": "^6.5.0", - "@turf/ellipse": "^6.5.0", - "@turf/envelope": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/flatten": "^6.5.0", - "@turf/flip": "^6.5.0", - "@turf/great-circle": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/hex-grid": "^6.5.0", - "@turf/interpolate": "^6.5.0", - "@turf/intersect": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/isobands": "^6.5.0", - "@turf/isolines": "^6.5.0", - "@turf/kinks": "^6.5.0", - "@turf/length": "^6.5.0", - "@turf/line-arc": "^6.5.0", - "@turf/line-chunk": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/line-offset": "^6.5.0", - "@turf/line-overlap": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/line-slice": "^6.5.0", - "@turf/line-slice-along": "^6.5.0", - "@turf/line-split": "^6.5.0", - "@turf/line-to-polygon": "^6.5.0", - "@turf/mask": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/midpoint": "^6.5.0", - "@turf/moran-index": "^6.5.0", - "@turf/nearest-point": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0", - "@turf/nearest-point-to-line": "^6.5.0", - "@turf/planepoint": "^6.5.0", - "@turf/point-grid": "^6.5.0", - "@turf/point-on-feature": "^6.5.0", - "@turf/point-to-line-distance": "^6.5.0", - "@turf/points-within-polygon": "^6.5.0", - "@turf/polygon-smooth": "^6.5.0", - "@turf/polygon-tangents": "^6.5.0", - "@turf/polygon-to-line": "^6.5.0", - "@turf/polygonize": "^6.5.0", - "@turf/projection": "^6.5.0", - "@turf/random": "^6.5.0", - "@turf/rewind": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0", - "@turf/sample": "^6.5.0", - "@turf/sector": "^6.5.0", - "@turf/shortest-path": "^6.5.0", - "@turf/simplify": "^6.5.0", - "@turf/square": "^6.5.0", - "@turf/square-grid": "^6.5.0", - "@turf/standard-deviational-ellipse": "^6.5.0", - "@turf/tag": "^6.5.0", - "@turf/tesselate": "^6.5.0", - "@turf/tin": "^6.5.0", - "@turf/transform-rotate": "^6.5.0", - "@turf/transform-scale": "^6.5.0", - "@turf/transform-translate": "^6.5.0", - "@turf/triangle-grid": "^6.5.0", - "@turf/truncate": "^6.5.0", - "@turf/union": "^6.5.0", - "@turf/unkink-polygon": "^6.5.0", - "@turf/voronoi": "^6.5.0" + + "@vitest/utils": "1.6.0", + + "p-limit": "^5.0.0", + + "pathe": "^1.1.1" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "url": "https://opencollective.com/vitest" + } + }, - "node_modules/@turf/union": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/union/-/union-6.5.0.tgz", - "integrity": "sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==", + + "node_modules/@vitest/snapshot": { + + "version": "1.6.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" + + "magic-string": "^0.30.5", + + "pathe": "^1.1.1", + + "pretty-format": "^29.7.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "url": "https://opencollective.com/vitest" + } + }, - "node_modules/@turf/unkink-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-6.5.0.tgz", - "integrity": "sha512-8QswkzC0UqKmN1DT6HpA9upfa1HdAA5n6bbuzHy8NJOX8oVizVAqfEPY0wqqTgboDjmBR4yyImsdPGUl3gZ8JQ==", + + "node_modules/@vitest/spy": { + + "version": "1.6.0", + + "license": "MIT", + "dependencies": { - "@turf/area": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "rbush": "^2.0.1" + + "tinyspy": "^2.2.0" + }, + "funding": { - "url": "https://opencollective.com/turf" + + "url": "https://opencollective.com/vitest" + } + }, - "node_modules/@turf/voronoi": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-6.5.0.tgz", - "integrity": "sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==", + + "node_modules/@vitest/utils": { + + "version": "1.6.0", + + "license": "MIT", + "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "d3-voronoi": "1.1.2" + + "diff-sequences": "^29.6.3", + + "estree-walker": "^3.0.3", + + "loupe": "^2.3.7", + + "pretty-format": "^29.7.0" + }, + "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/http-link-header": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.5.tgz", - "integrity": "sha512-AxhIKR8UbyoqCTNp9rRepkktHuUOw3DjfOfDCaO9kwI8AYzjhxyrvZq4+mRw/2daD3hYDknrtSeV6SsPwmc71w==", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "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==", - "dev": true - }, - "node_modules/@types/n3": { - "version": "1.16.4", - "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.16.4.tgz", - "integrity": "sha512-6PmHRYCCdjbbBV2UVC/HjtL6/5Orx9ku2CQjuojucuHvNvPmnm6+02B18YGhHfvU25qmX2jPXyYPHsMNkn+w2w==", - "dev": true, - "dependencies": { - "@rdfjs/types": "^1.1.0", - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/rdf-js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/rdf-js/-/rdf-js-4.0.2.tgz", - "integrity": "sha512-soR/+RMogGiDU1lrpuQl5ZL55/L1eq/JlR2dWx052Uh/RYs9okh3XZHFlIJXHZqjqyjEn4WdbOMfBj7vvc2WVQ==", - "deprecated": "This is a stub types definition. rdf-js provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "rdf-js": "*" - } - }, - "node_modules/@types/rdfjs__namespace": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/rdfjs__namespace/-/rdfjs__namespace-2.0.10.tgz", - "integrity": "sha512-xoVzEIOxcpyteEmzaj94MSBbrBFs+vqv05joMhzLEiPRwsBBDnhkdBCaaDxR1Tf7wOW0kB2R1IYe4C3vEBFPgA==", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", - "peer": true, - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" + + "url": "https://opencollective.com/vitest" + } + }, - "node_modules/@types/sparqljs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/@types/sparqljs/-/sparqljs-3.1.10.tgz", - "integrity": "sha512-rqMpUhl/d8B+vaACa6ZVdwPQ1JXw+KxiCc0cndgn/V6moRG3WjUAgoBnhSwfKtXD98wgMThDsc6R1+yRUuMsAg==", - "peer": true, + + "node_modules/abort-controller": { + + "version": "3.0.0", + + "license": "MIT", + "dependencies": { - "@rdfjs/types": ">=1.0.0" + + "event-target-shim": "^5.0.0" + + }, + + "engines": { + + "node": ">=6.5" + } + }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dependencies": { - "@types/yargs-parser": "*" + + "node_modules/acorn": { + + "version": "8.12.0", + + "license": "MIT", + + "bin": { + + "acorn": "bin/acorn" + + }, + + "engines": { + + "node": ">=0.4.0" + } + }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" - }, - "node_modules/@vocabulary/sh": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vocabulary/sh/-/sh-1.1.5.tgz", - "integrity": "sha512-8R4uxHLpwmp6l6szZdCtfQx0wRy64OHuOsYTDfhCsbJ773Uv6nCM2bYBtjjirZHN+2m3uHQWgtWOdvuu1jwmOA==", + + "node_modules/acorn-jsx": { + + "version": "5.3.2", + + "license": "MIT", + "peerDependencies": { - "@rdfjs/types": "^1.0.0" + + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, - "node_modules/@zazuko/prefixes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@zazuko/prefixes/-/prefixes-2.2.0.tgz", - "integrity": "sha512-mmRS+urGVMcAP5edzFq0V+B2PbbpEklP7BZGVF0+82ClczTwgpIL1tZy2mRfudwRYoAe+WkyWXDnlArPpdzLIg==" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + + "node_modules/acorn-walk": { + + "version": "8.3.3", + + "license": "MIT", + "dependencies": { - "event-target-shim": "^5.0.0" + + "acorn": "^8.11.0" + }, + "engines": { - "node": ">=6.5" + + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + + }, + + "engines": { + + "node": ">= 14" + + } + + }, + + "node_modules/ajv": { + + "version": "6.12.6", + + "license": "MIT", + + "dependencies": { + + "fast-deep-equal": "^3.1.1", + + "fast-json-stable-stringify": "^2.0.0", + + "json-schema-traverse": "^0.4.1", + + "uri-js": "^4.2.2" + + }, + + "funding": { + + "type": "github", + + "url": "https://github.com/sponsors/epoberezkin" + + } + + }, + + "node_modules/ansi-escapes": { + + "version": "6.2.1", + + "license": "MIT", + + "engines": { + + "node": ">=14.16" + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + + }, + + "node_modules/ansi-regex": { + + "version": "5.0.1", + + "license": "MIT", + "engines": { - "node": ">= 14" + + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + + "dev": true, + + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, + + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + + "node_modules/arg": { + + "version": "4.1.3", + + "license": "MIT" + + }, + "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + + "version": "2.0.1", + + "license": "Python-2.0" + }, + "node_modules/array-back": { + "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=6" + + } + + }, + + "node_modules/array-union": { + + "version": "2.1.0", + + "license": "MIT", + + "engines": { + + "node": ">=8" + } + }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + + "node_modules/assertion-error": { + + "version": "1.1.0", + + "license": "MIT", + + "engines": { + + "node": "*" + + } + }, + "node_modules/asynciterator": { + "version": "3.9.0", - "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.9.0.tgz", - "integrity": "sha512-bwLLTAnoE6Ap6XdjK/j8vDk2Vi9p3ojk0PFwM0SwktAG1k8pfRJF9ng+mmkaRFKdZCQQlOxcWnvOmX2NQ1HV0g==" + + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } + + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } - ] + + ], + + "license": "MIT" + }, + "node_modules/bidi-js": { + "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", - "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + + } + + }, + + "node_modules/binary-extensions": { + + "version": "2.3.0", + + "license": "MIT", + + "engines": { + + "node": ">=8" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + + "version": "3.0.3", + + "license": "MIT", + "dependencies": { - "fill-range": "^7.0.1" + + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, + "node_modules/buffer": { + "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, + + "node_modules/cac": { + + "version": "6.7.14", + + "license": "MIT", + "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + + "node": ">=8" + } + }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + + "node_modules/callsites": { + + "version": "3.1.0", + + "license": "MIT", + "engines": { + "node": ">=6" + } + }, - "node_modules/caniuse-lite": { - "version": "1.0.30001611", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", - "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, + "node_modules/canonicalize": { + "version": "1.0.8", - "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", - "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" + + "license": "Apache-2.0" + + }, + + "node_modules/chai": { + + "version": "4.4.1", + + "license": "MIT", + + "dependencies": { + + "assertion-error": "^1.1.0", + + "check-error": "^1.0.3", + + "deep-eql": "^4.1.3", + + "get-func-name": "^2.0.2", + + "loupe": "^2.3.6", + + "pathval": "^1.1.1", + + "type-detect": "^4.0.8" + + }, + + "engines": { + + "node": ">=4" + + } + }, + "node_modules/chalk": { + "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + + "node_modules/check-error": { + + "version": "1.0.3", + + "license": "MIT", + + "dependencies": { + + "get-func-name": "^2.0.2" + + }, + "engines": { - "node": ">=8" + + "node": "*" + } + }, - "node_modules/clownface": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clownface/-/clownface-2.0.2.tgz", - "integrity": "sha512-HjTYqVXiCrw4FmoAWF46aQ3c2OmdVLoqZrAGkowdWWUoBBIcBht55pOxkyvoVe2BsPE/HqMzfnu51JpgqM4KEg==", - "dependencies": { - "@rdfjs/data-model": "^2.0.1", - "@rdfjs/environment": "0 - 1", - "@rdfjs/namespace": "^2.0.0" + + "node_modules/chokidar": { + + "version": "3.6.0", + + "license": "MIT", + + "dependencies": { + + "anymatch": "~3.1.2", + + "braces": "~3.0.2", + + "glob-parent": "~5.1.2", + + "is-binary-path": "~2.1.0", + + "is-glob": "~4.0.1", + + "normalize-path": "~3.0.0", + + "readdirp": "~3.6.0" + + }, + + "engines": { + + "node": ">= 8.10.0" + + }, + + "funding": { + + "url": "https://paulmillr.com/funding/" + + }, + + "optionalDependencies": { + + "fsevents": "~2.3.2" + } + }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + + "node_modules/chokidar/node_modules/glob-parent": { + + "version": "5.1.2", + + "license": "ISC", + "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + + "is-glob": "^4.0.1" + + }, + + "engines": { + + "node": ">= 6" + } + }, - "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, + + "node_modules/cli-cursor": { + + "version": "4.0.0", + + "license": "MIT", + "dependencies": { - "color-name": "~1.1.4" + + "restore-cursor": "^4.0.0" + }, + "engines": { - "node": ">=7.0.0" + + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "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/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + + "node_modules/cli-truncate": { + + "version": "4.0.0", + + "license": "MIT", + "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + + "slice-ansi": "^5.0.0", + + "string-width": "^7.0.0" + + }, + + "engines": { + + "node": ">=18" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + + "node_modules/color-convert": { + + "version": "2.0.1", + + "license": "MIT", + "dependencies": { - "color-name": "1.1.3" + + "color-name": "~1.1.4" + + }, + + "engines": { + + "node": ">=7.0.0" + } + }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/colorspace": { + + "node_modules/color-name": { + "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, + + "license": "MIT" + + }, + + "node_modules/colorette": { + + "version": "2.0.20", + + "license": "MIT" + + }, + "node_modules/combined-stream": { + "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-line-args": { + "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + + "license": "MIT", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + + "license": "MIT", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, - "node_modules/command-line-usage/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/command-line-usage/node_modules/array-back": { + "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/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, + + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + + }, + + "engines": { + + "node": ">=4" + + } + + }, + + "node_modules/command-line-usage/node_modules/chalk/node_modules/ansi-styles": { + + "version": "3.2.1", + + "dev": true, + + "license": "MIT", + + "dependencies": { + + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, - "node_modules/command-line-usage/node_modules/color-convert": { + + "node_modules/command-line-usage/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, - "node_modules/command-line-usage/node_modules/color-name": { + + "node_modules/command-line-usage/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + + "dev": true, + + "license": "MIT" + }, - "node_modules/command-line-usage/node_modules/escape-string-regexp": { + + "node_modules/command-line-usage/node_modules/chalk/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, + + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, - "node_modules/command-line-usage/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + + "node_modules/command-line-usage/node_modules/chalk/node_modules/supports-color": { + + "version": "5.5.0", + "dev": true, + + "license": "MIT", + + "dependencies": { + + "has-flag": "^3.0.0" + + }, + "engines": { + "node": ">=4" + } + }, - "node_modules/command-line-usage/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + + "node_modules/command-line-usage/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { + + "version": "3.0.0", + "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, + + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + + "version": "12.1.0", + + "license": "MIT", + + "engines": { + + "node": ">=18" + + } + }, + "node_modules/concat-map": { + "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concaveman": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz", - "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", - "dependencies": { - "point-in-polygon": "^1.1.0", - "rbush": "^3.0.1", - "robust-predicates": "^2.0.4", - "tinyqueue": "^2.0.3" - } - }, - "node_modules/concaveman/node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - }, - "node_modules/concaveman/node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dependencies": { - "quickselect": "^2.0.0" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + + "license": "MIT" + + }, + + "node_modules/confbox": { + + "version": "0.1.7", + + "license": "MIT" + + }, + + "node_modules/create-require": { + + "version": "1.1.1", + + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", - "peer": true, + + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "peer": true, + + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, - "node_modules/cross-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true - }, - "node_modules/cross-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true - }, - "node_modules/cross-fetch/node_modules/whatwg-url": { + + "node_modules/cross-fetch/node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, + + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + + } + + }, + + "node_modules/cross-fetch/node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": { + + "version": "0.0.3", + + "license": "MIT" + + }, + + "node_modules/cross-fetch/node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": { + + "version": "3.0.1", + + "license": "BSD-2-Clause" + + }, + + "node_modules/cross-spawn": { + + "version": "7.0.3", + + "license": "MIT", + + "dependencies": { + + "path-key": "^3.1.0", + + "shebang-command": "^2.0.0", + + "which": "^2.0.1" + + }, + + "engines": { + + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssstyle": { + "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", - "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + + "license": "MIT", + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csv-parse": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.5.tgz", - "integrity": "sha512-erCk7tyU3yLWAhk6wvKxnyPtftuy/6Ak622gOO7BCJ05+TYffnPCJF905wmOQm+BpkX54OdAl8pveJwUdpnCXQ==" - }, - "node_modules/d3-array": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", - "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" - }, - "node_modules/d3-geo": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", - "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", - "dependencies": { - "d3-array": "1" - } - }, - "node_modules/d3-voronoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==" + + "version": "5.5.6", + + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-urls": { + "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + + "version": "4.3.5", + + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + + "license": "MIT" + + }, + + "node_modules/deep-eql": { + + "version": "4.1.4", + + "license": "MIT", + "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" + + "type-detect": "^4.0.0" + }, + "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + + "node_modules/deep-is": { + + "version": "0.1.4", + + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, - "node_modules/density-clustering": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/density-clustering/-/density-clustering-1.3.0.tgz", - "integrity": "sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==" + + "node_modules/diff": { + + "version": "4.0.2", + + "license": "BSD-3-Clause", + + "engines": { + + "node": ">=0.3.1" + + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, + + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + + } + + }, + + "node_modules/dir-glob": { + + "version": "3.0.1", + + "license": "MIT", + + "dependencies": { + + "path-type": "^4.0.0" + + }, + + "engines": { + + "node": ">=8" + + } + + }, + + "node_modules/doctrine": { + + "version": "3.0.0", + + "license": "Apache-2.0", + + "dependencies": { + + "esutils": "^2.0.2" + + }, + + "engines": { + + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "peer": true, + + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], - "peer": true + + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "peer": true, + + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "peer": true, + + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, - "node_modules/earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.740", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.740.tgz", - "integrity": "sha512-Yvg5i+iyv7Xm18BRdVPVm8lc7kgxM3r6iwqCH2zB7QZy1kZRNmd0Zqm0zcD9XoFREE5/5rwIuIAOT+/mzGcnZg==", - "dev": true + + "node_modules/dotenv": { + + "version": "16.4.5", + + "license": "BSD-2-Clause", + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://dotenvx.com" + + } + }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + + "node_modules/emoji-regex": { + + "version": "10.3.0", + + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + + "node_modules/esbuild": { + + "version": "0.21.5", + + "hasInstallScript": true, + + "license": "MIT", + + "bin": { + + "esbuild": "bin/esbuild" + + }, + + "engines": { + + "node": ">=12" + + }, + + "optionalDependencies": { + + "@esbuild/aix-ppc64": "0.21.5", + + "@esbuild/android-arm": "0.21.5", + + "@esbuild/android-arm64": "0.21.5", + + "@esbuild/android-x64": "0.21.5", + + "@esbuild/darwin-arm64": "0.21.5", + + "@esbuild/darwin-x64": "0.21.5", + + "@esbuild/freebsd-arm64": "0.21.5", + + "@esbuild/freebsd-x64": "0.21.5", + + "@esbuild/linux-arm": "0.21.5", + + "@esbuild/linux-arm64": "0.21.5", + + "@esbuild/linux-ia32": "0.21.5", + + "@esbuild/linux-loong64": "0.21.5", + + "@esbuild/linux-mips64el": "0.21.5", + + "@esbuild/linux-ppc64": "0.21.5", + + "@esbuild/linux-riscv64": "0.21.5", + + "@esbuild/linux-s390x": "0.21.5", + + "@esbuild/linux-x64": "0.21.5", + + "@esbuild/netbsd-x64": "0.21.5", + + "@esbuild/openbsd-x64": "0.21.5", + + "@esbuild/sunos-x64": "0.21.5", + + "@esbuild/win32-arm64": "0.21.5", + + "@esbuild/win32-ia32": "0.21.5", + + "@esbuild/win32-x64": "0.21.5" + + } + + }, + + "node_modules/escape-string-regexp": { + + "version": "4.0.0", + + "license": "MIT", + + "engines": { + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + + }, + + "node_modules/eslint": { + + "version": "8.57.0", + + "license": "MIT", + + "dependencies": { + + "@eslint-community/eslint-utils": "^4.2.0", + + "@eslint-community/regexpp": "^4.6.1", + + "@eslint/eslintrc": "^2.1.4", + + "@eslint/js": "8.57.0", + + "@humanwhocodes/config-array": "^0.11.14", + + "@humanwhocodes/module-importer": "^1.0.1", + + "@nodelib/fs.walk": "^1.2.8", + + "@ungap/structured-clone": "^1.2.0", + + "ajv": "^6.12.4", + + "chalk": "^4.0.0", + + "cross-spawn": "^7.0.2", + + "debug": "^4.3.2", + + "doctrine": "^3.0.0", + + "escape-string-regexp": "^4.0.0", + + "eslint-scope": "^7.2.2", + + "eslint-visitor-keys": "^3.4.3", + + "espree": "^9.6.1", + + "esquery": "^1.4.2", + + "esutils": "^2.0.2", + + "fast-deep-equal": "^3.1.3", + + "file-entry-cache": "^6.0.1", + + "find-up": "^5.0.0", + + "glob-parent": "^6.0.2", + + "globals": "^13.19.0", + + "graphemer": "^1.4.0", + + "ignore": "^5.2.0", + + "imurmurhash": "^0.1.4", + + "is-glob": "^4.0.0", + + "is-path-inside": "^3.0.3", + + "js-yaml": "^4.1.0", + + "json-stable-stringify-without-jsonify": "^1.0.1", + + "levn": "^0.4.1", + + "lodash.merge": "^4.6.2", + + "minimatch": "^3.1.2", + + "natural-compare": "^1.4.0", + + "optionator": "^0.9.3", + + "strip-ansi": "^6.0.1", + + "text-table": "^0.2.0" + + }, + + "bin": { + + "eslint": "bin/eslint.js" + + }, + + "engines": { + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + + }, + + "funding": { + + "url": "https://opencollective.com/eslint" + + } + + }, + + "node_modules/eslint-config-prettier": { + + "version": "9.1.0", + + "license": "MIT", + + "bin": { + + "eslint-config-prettier": "bin/cli.js" + + }, + + "peerDependencies": { + + "eslint": ">=7.0.0" + + } + + }, + + "node_modules/eslint-scope": { + + "version": "7.2.2", + + "license": "BSD-2-Clause", + "dependencies": { - "get-intrinsic": "^1.2.4" + + "esrecurse": "^4.3.0", + + "estraverse": "^5.2.0" + }, + "engines": { - "node": ">= 0.4" + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + + }, + + "funding": { + + "url": "https://opencollective.com/eslint" + } + }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + + "node_modules/eslint-visitor-keys": { + + "version": "3.4.3", + + "license": "Apache-2.0", + "engines": { - "node": ">= 0.4" + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + + }, + + "funding": { + + "url": "https://opencollective.com/eslint" + } + }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, + + "node_modules/espree": { + + "version": "9.6.1", + + "license": "BSD-2-Clause", + + "dependencies": { + + "acorn": "^8.9.0", + + "acorn-jsx": "^5.3.2", + + "eslint-visitor-keys": "^3.4.1" + + }, + "engines": { - "node": ">=6" + + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + + }, + + "funding": { + + "url": "https://opencollective.com/eslint" + } + }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, + + "node_modules/esquery": { + + "version": "1.5.0", + + "license": "BSD-3-Clause", + + "dependencies": { + + "estraverse": "^5.1.0" + + }, + "engines": { - "node": ">=8" + + "node": ">=0.10" + } + }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + + "node_modules/esrecurse": { + + "version": "4.3.0", + + "license": "BSD-2-Clause", + + "dependencies": { + + "estraverse": "^5.2.0" + }, + "engines": { - "node": ">=4" + + "node": ">=4.0" + + } + + }, + + "node_modules/estraverse": { + + "version": "5.3.0", + + "license": "BSD-2-Clause", + + "engines": { + + "node": ">=4.0" + + } + + }, + + "node_modules/estree-walker": { + + "version": "3.0.3", + + "license": "MIT", + + "dependencies": { + + "@types/estree": "^1.0.0" + } + }, + + "node_modules/esutils": { + + "version": "2.0.3", + + "license": "BSD-2-Clause", + + "engines": { + + "node": ">=0.10.0" + + } + + }, + "node_modules/event-target-shim": { + "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + + "license": "MIT", + "engines": { + "node": ">=6" + } + + }, + + "node_modules/eventemitter3": { + + "version": "5.0.1", + + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + + "node_modules/execa": { + + "version": "8.0.1", + + "license": "MIT", + + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + + "node": ">=16.17" + + }, + + "funding": { + + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extract-cbd-shape": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/extract-cbd-shape/-/extract-cbd-shape-0.1.5.tgz", - "integrity": "sha512-nfq69iunKdRU6ElsFTx8vKar/WivrxaZG4lIGCZo9D/Gf8XdCCobyPtXuXN0Jz/VpxS64yL+3/b5c5nlCip5Lw==", + + "version": "0.1.8", + + "license": "MIT", + "dependencies": { + "@treecg/types": "^0.4.5", + "debug": "^4.3.4", + "jsdom": "^23.0.1", + "n3": "^1.17.0", + "rdf-data-factory": "^1.1.2", + + "rdf-dereference": "2.x", + "rdf-stores": "^1.0.0" + }, + "peerDependencies": { - "rdf-dereference": "2.x", + "rdf-js": "x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "peer": true + + "license": "MIT" + + }, + + "node_modules/fast-glob": { + + "version": "3.3.2", + + "license": "MIT", + + "dependencies": { + + "@nodelib/fs.stat": "^2.0.2", + + "@nodelib/fs.walk": "^1.2.3", + + "glob-parent": "^5.1.2", + + "merge2": "^1.3.0", + + "micromatch": "^4.0.4" + + }, + + "engines": { + + "node": ">=8.6.0" + + } + + }, + + "node_modules/fast-glob/node_modules/glob-parent": { + + "version": "5.1.2", + + "license": "ISC", + + "dependencies": { + + "is-glob": "^4.0.1" + + }, + + "engines": { + + "node": ">= 6" + + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + + "license": "MIT" + }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, + + "node_modules/fast-levenshtein": { + + "version": "2.0.6", + + "license": "MIT" + + }, + + "node_modules/fastq": { + + "version": "1.17.1", + + "license": "ISC", + "dependencies": { - "bser": "2.1.1" + + "reusify": "^1.0.4" + } + }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" - }, + "node_modules/fetch-blob": { + "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + + } + + }, + + "node_modules/file-entry-cache": { + + "version": "6.0.1", + + "license": "MIT", + + "dependencies": { + + "flat-cache": "^3.0.4" + + }, + + "engines": { + + "node": "^10.12.0 || >=12.0.0" + } + }, + "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==", - "dev": true, + + "version": "7.1.1", + + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + + "license": "MIT", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "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, + + "version": "5.0.0", + + "license": "MIT", + "dependencies": { - "locate-path": "^5.0.0", + + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { - "node": ">=8" + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + + "node_modules/flat-cache": { + + "version": "3.2.0", + + "license": "MIT", + + "dependencies": { + + "flatted": "^3.2.9", + + "keyv": "^4.5.3", + + "rimraf": "^3.0.2" + + }, + + "engines": { + + "node": "^10.12.0 || >=12.0.0" + + } + }, + + "node_modules/flatted": { + + "version": "3.3.1", + + "license": "ISC" + + }, + "node_modules/form-data": { + "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } + + "license": "ISC" + }, - "node_modules/geojson-dissolve": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/geojson-dissolve/-/geojson-dissolve-3.1.0.tgz", - "integrity": "sha512-JXHfn+A3tU392HA703gJbjmuHaQOAE/C1KzbELCczFRFux+GdY6zt1nKb1VMBHp4LWeE7gUY2ql+g06vJqhiwQ==", - "dependencies": { - "@turf/meta": "^3.7.5", - "geojson-flatten": "^0.2.1", - "geojson-linestring-dissolve": "0.0.1", - "topojson-client": "^3.0.0", - "topojson-server": "^3.0.0" - } - }, - "node_modules/geojson-dissolve/node_modules/@turf/meta": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-3.14.0.tgz", - "integrity": "sha512-OtXqLQuR9hlQ/HkAF/OdzRea7E0eZK1ay8y8CBXkoO2R6v34CsDrWYLMSo0ZzMsaQDpKo76NPP2GGo+PyG1cSg==" - }, - "node_modules/geojson-equality": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/geojson-equality/-/geojson-equality-0.1.6.tgz", - "integrity": "sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==", - "dependencies": { - "deep-equal": "^1.0.0" - } - }, - "node_modules/geojson-flatten": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/geojson-flatten/-/geojson-flatten-0.2.4.tgz", - "integrity": "sha512-LiX6Jmot8adiIdZ/fthbcKKPOfWjTQchX/ggHnwMZ2e4b0I243N1ANUos0LvnzepTEsj0+D4fIJ5bKhBrWnAHA==", - "dependencies": { - "get-stdin": "^6.0.0", - "minimist": "1.2.0" - }, - "bin": { - "geojson-flatten": "geojson-flatten" - } - }, - "node_modules/geojson-linestring-dissolve": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/geojson-linestring-dissolve/-/geojson-linestring-dissolve-0.0.1.tgz", - "integrity": "sha512-Y8I2/Ea28R/Xeki7msBcpMvJL2TaPfaPKP8xqueJfQ9/jEhps+iOJxOR2XCBGgVb12Z6XnDb1CMbaPfLepsLaw==" - }, - "node_modules/geojson-rbush": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", - "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", - "dependencies": { - "@turf/bbox": "*", - "@turf/helpers": "6.x", - "@turf/meta": "6.x", - "@types/geojson": "7946.0.8", - "rbush": "^3.0.1" - } - }, - "node_modules/geojson-rbush/node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - }, - "node_modules/geojson-rbush/node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dependencies": { - "quickselect": "^2.0.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, + + "node_modules/get-east-asian-width": { + + "version": "1.2.0", + + "license": "MIT", + "engines": { - "node": ">= 0.4" + + "node": ">=18" + }, + "funding": { - "url": "https://github.com/sponsors/ljharb" + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, + + "node_modules/get-func-name": { + + "version": "2.0.2", + + "license": "MIT", + "engines": { - "node": ">=8.0.0" + + "node": "*" + } + }, - "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + + "node_modules/get-stream": { + + "version": "8.0.1", + + "license": "MIT", + "engines": { - "node": ">=4" + + "node": ">=16" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, + + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + + "node_modules/glob-parent": { + + "version": "6.0.2", + + "license": "ISC", + "dependencies": { - "get-intrinsic": "^1.1.3" + + "is-glob": "^4.0.3" + }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "engines": { - "node": ">=8" + + "node": ">=10.13.0" + } + }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + + "node_modules/globals": { + + "version": "13.24.0", + + "license": "MIT", + "dependencies": { - "es-define-property": "^1.0.0" + + "type-fest": "^0.20.2" + }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { - "node": ">= 0.4" + + "node": ">=8" + }, + "funding": { - "url": "https://github.com/sponsors/ljharb" + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" + + "node_modules/globby": { + + "version": "11.1.0", + + "license": "MIT", + + "dependencies": { + + "array-union": "^2.1.0", + + "dir-glob": "^3.0.1", + + "fast-glob": "^3.2.9", + + "ignore": "^5.2.0", + + "merge2": "^1.4.1", + + "slash": "^3.0.0" + + }, + + "engines": { + + "node": ">=10" + }, + "funding": { - "url": "https://github.com/sponsors/ljharb" + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, + + "node_modules/globrex": { + + "version": "0.1.2", + + "license": "MIT" + + }, + + "node_modules/graphemer": { + + "version": "1.4.0", + + "license": "MIT" + + }, + + "node_modules/has-flag": { + + "version": "4.0.0", + + "license": "MIT", + "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + + "node": ">=8" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "peer": true, + + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, - "node_modules/hasown": { - "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" - }, - "engines": { - "node": ">= 0.4" - } - }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + + }, + + "node_modules/html-escaper": { + + "version": "2.0.2", + + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], - "peer": true, + + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/http-link-header": { + "version": "1.1.3", - "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", - "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", - "peer": true, + + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + + } + + }, + + "node_modules/human-signals": { + + "version": "5.0.0", + + "license": "Apache-2.0", + + "engines": { + + "node": ">=16.17.0" + + } + + }, + + "node_modules/husky": { + + "version": "9.0.11", + + "license": "MIT", + + "bin": { + + "husky": "bin.mjs" + + }, + + "engines": { + + "node": ">=18" + + }, + + "funding": { + + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } - ] + + ], + + "license": "BSD-3-Clause" + + }, + + "node_modules/ignore": { + + "version": "5.3.1", + + "license": "MIT", + + "engines": { + + "node": ">= 4" + + } + }, + "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "peer": true + + "version": "4.3.6", + + "license": "MIT" + + }, + + "node_modules/import-fresh": { + + "version": "3.3.0", + + "license": "MIT", + + "dependencies": { + + "parent-module": "^1.0.0", + + "resolve-from": "^4.0.0" + + }, + + "engines": { + + "node": ">=6" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, + + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, + + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==" + + "license": "ISC" + }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + + "node_modules/is-binary-path": { + + "version": "2.1.0", + + "license": "MIT", + "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + + "binary-extensions": "^2.0.0" + }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "engines": { - "node": ">=0.12.0" + + "node": ">=8" + } + }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, + + "node_modules/is-extglob": { + + "version": "2.1.1", + + "license": "MIT", + "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + + "node": ">=0.10.0" + } + }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + + "node_modules/is-fullwidth-code-point": { + + "version": "4.0.0", + + "license": "MIT", + "engines": { - "node": ">=8" + + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, + + "node_modules/is-glob": { + + "version": "4.0.3", + + "license": "MIT", + "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + + "is-extglob": "^2.1.1" + }, + "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + + "node": ">=0.10.0" + } + }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, + + "node_modules/is-number": { + + "version": "7.0.0", + + "license": "MIT", + "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + + "node": ">=0.12.0" + } + }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, + + "node_modules/is-path-inside": { + + "version": "3.0.3", + + "license": "MIT", + "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + + "node": ">=8" + } + }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + + "node_modules/is-potential-custom-element-name": { + + "version": "1.0.1", + + "license": "MIT" + }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + + "node_modules/is-stream": { + + "version": "3.0.0", + + "license": "MIT", + "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + + "node_modules/isexe": { + + "version": "2.0.0", + + "license": "ISC" + }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, + + "node_modules/istanbul-lib-coverage": { + + "version": "3.2.2", + + "license": "BSD-3-Clause", + "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + + "node": ">=8" + } + }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + + "node_modules/istanbul-lib-report": { + + "version": "3.0.1", + + "license": "BSD-3-Clause", + + "dependencies": { + + "istanbul-lib-coverage": "^3.0.0", + + "make-dir": "^4.0.0", + + "supports-color": "^7.1.0" + }, + "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + + "node": ">=10" + } + }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, + + "node_modules/istanbul-lib-source-maps": { + + "version": "5.0.4", + + "license": "BSD-3-Clause", + "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + + "@jridgewell/trace-mapping": "^0.3.23", + + "debug": "^4.1.1", + + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + + "node": ">=10" + } + }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + + "node_modules/istanbul-reports": { + + "version": "3.1.7", + + "license": "BSD-3-Clause", + "dependencies": { - "has-flag": "^4.0.0" + + "html-escaper": "^2.0.0", + + "istanbul-lib-report": "^3.0.0" + }, + "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + + "node": ">=8" + } + }, + "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + + "version": "9.0.0", + + "license": "MIT" + }, + "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, + + "version": "4.1.0", + + "license": "MIT", + "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz", - "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==", + + "license": "MIT", + "dependencies": { + "@asamuzakjp/dom-selector": "^2.0.1", + "cssstyle": "^4.0.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "is-potential-custom-element-name": "^1.0.1", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.3", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.16.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } + + "node_modules/json-buffer": { + + "version": "3.0.1", + + "license": "MIT" + + }, + + "node_modules/json-schema-traverse": { + + "version": "0.4.1", + + "license": "MIT" + + }, + + "node_modules/json-stable-stringify-without-jsonify": { + + "version": "1.0.1", + + "license": "MIT" + }, + "node_modules/jsonld": { + "version": "8.3.2", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.2.tgz", - "integrity": "sha512-MwBbq95szLwt8eVQ1Bcfwmgju/Y5P2GdtlHE2ncyfuYjIdEhluUVyj1eudacf1mOkWIoS9GpDBTECqhmq7EOaA==", + + "license": "BSD-3-Clause", + "dependencies": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsonld-context-parser": { + "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-2.4.0.tgz", - "integrity": "sha512-ZYOfvh525SdPd9ReYY58dxB3E2RUEU4DJ6ZibO8AitcowPeBH4L5rCAitE2om5G1P+HMEgYEYEr4EZKbVN4tpA==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@types/http-link-header": "^1.0.1", + "@types/node": "^18.0.0", + "cross-fetch": "^3.0.6", + "http-link-header": "^1.0.2", + "relative-to-absolute-iri": "^1.0.5" + }, + "bin": { + "jsonld-context-parse": "bin/jsonld-context-parse.js" + } + }, + "node_modules/jsonld-context-parser/node_modules/@types/node": { - "version": "18.19.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", - "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", - "peer": true, + + "version": "18.19.34", + + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/jsonld-context-parser/node_modules/cross-fetch": { + "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "peer": true, + + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, - "node_modules/jsonld-context-parser/node_modules/node-fetch": { + + "node_modules/jsonld-context-parser/node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "peer": true, + + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, - "node_modules/jsonld-context-parser/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true - }, - "node_modules/jsonld-context-parser/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true - }, - "node_modules/jsonld-context-parser/node_modules/whatwg-url": { + + "node_modules/jsonld-context-parser/node_modules/cross-fetch/node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, + + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + + }, + + "node_modules/jsonld-context-parser/node_modules/cross-fetch/node_modules/node-fetch/node_modules/whatwg-url/node_modules/tr46": { + + "version": "0.0.3", + + "license": "MIT" + + }, + + "node_modules/jsonld-context-parser/node_modules/cross-fetch/node_modules/node-fetch/node_modules/whatwg-url/node_modules/webidl-conversions": { + + "version": "3.0.1", + + "license": "BSD-2-Clause" + }, + "node_modules/jsonld-streaming-parser": { + "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-3.4.0.tgz", - "integrity": "sha512-897CloyQgQidfkB04dLM5XaAXVX/cN9A2hvgHJo4y4jRhIpvg3KLMBBfcrswepV2N3T8c/Rp2JeFdWfVsbVZ7g==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.0", + "@rdfjs/types": "*", + "@types/http-link-header": "^1.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "canonicalize": "^1.0.1", + "http-link-header": "^1.0.2", + "jsonld-context-parser": "^2.4.0", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.0.0" + } + }, - "node_modules/jsonld/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/jsonld/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, + "node_modules/kafkajs": { + "version": "2.2.4", - "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", - "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + + "node_modules/keyv": { + + "version": "4.5.4", + + "license": "MIT", + + "dependencies": { + + "json-buffer": "3.0.1" + + } + }, + "node_modules/ky": { + "version": "0.33.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", - "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", + + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/ky-universal": { + "version": "0.11.0", - "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz", - "integrity": "sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==", + + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.10" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.31.4", + "web-streams-polyfill": ">=3.2.1" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } + + } + + }, + + "node_modules/levn": { + + "version": "0.4.1", + + "license": "MIT", + + "dependencies": { + + "prelude-ls": "^1.2.1", + + "type-check": "~0.4.0" + + }, + + "engines": { + + "node": ">= 0.8.0" + + } + + }, + + "node_modules/lilconfig": { + + "version": "3.1.2", + + "license": "MIT", + + "engines": { + + "node": ">=14" + + }, + + "funding": { + + "url": "https://github.com/sponsors/antonk52" + + } + + }, + + "node_modules/lint-staged": { + + "version": "15.2.7", + + "license": "MIT", + + "dependencies": { + + "chalk": "~5.3.0", + + "commander": "~12.1.0", + + "debug": "~4.3.4", + + "execa": "~8.0.1", + + "lilconfig": "~3.1.1", + + "listr2": "~8.2.1", + + "micromatch": "~4.0.7", + + "pidtree": "~0.6.0", + + "string-argv": "~0.3.2", + + "yaml": "~2.4.2" + + }, + + "bin": { + + "lint-staged": "bin/lint-staged.js" + + }, + + "engines": { + + "node": ">=18.12.0" + + }, + + "funding": { + + "url": "https://opencollective.com/lint-staged" + + } + + }, + + "node_modules/lint-staged/node_modules/chalk": { + + "version": "5.3.0", + + "license": "MIT", + + "engines": { + + "node": "^12.17.0 || ^14.13 || >=16.0.0" + + }, + + "funding": { + + "url": "https://github.com/chalk/chalk?sponsor=1" + + } + + }, + + "node_modules/listr2": { + + "version": "8.2.1", + + "license": "MIT", + + "dependencies": { + + "cli-truncate": "^4.0.0", + + "colorette": "^2.0.20", + + "eventemitter3": "^5.0.1", + + "log-update": "^6.0.0", + + "rfdc": "^1.3.1", + + "wrap-ansi": "^9.0.0" + + }, + + "engines": { + + "node": ">=18.0.0" + + } + + }, + + "node_modules/local-pkg": { + + "version": "0.5.0", + + "license": "MIT", + + "dependencies": { + + "mlly": "^1.4.2", + + "pkg-types": "^1.0.3" + + }, + + "engines": { + + "node": ">=14" + + }, + + "funding": { + + "url": "https://github.com/sponsors/antfu" + } + }, + "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, + + "version": "6.0.0", + + "license": "MIT", + "dependencies": { - "p-locate": "^4.1.0" + + "p-locate": "^5.0.0" + }, + "engines": { - "node": ">=8" + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true + + "dev": true, + + "license": "MIT" + + }, + + "node_modules/lodash.merge": { + + "version": "4.6.2", + + "license": "MIT" + + }, + + "node_modules/log-update": { + + "version": "6.0.0", + + "license": "MIT", + + "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/slice-ansi": { + + "version": "7.1.0", + + "license": "MIT", + + "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/slice-ansi/node_modules/ansi-styles": { + + "version": "6.2.1", + + "license": "MIT", + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + + } + + }, + + "node_modules/log-update/node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + + "version": "5.0.0", + + "license": "MIT", + + "dependencies": { + + "get-east-asian-width": "^1.0.0" + + }, + + "engines": { + + "node": ">=18" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + }, - "node_modules/logform": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", - "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + + "node_modules/log-update/node_modules/strip-ansi": { + + "version": "7.1.0", + + "license": "MIT", + "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" + + "ansi-regex": "^6.0.1" + + }, + + "engines": { + + "node": ">=12" + }, + + "funding": { + + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + + } + + }, + + "node_modules/log-update/node_modules/strip-ansi/node_modules/ansi-regex": { + + "version": "6.0.1", + + "license": "MIT", + "engines": { - "node": ">= 12.0.0" + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/loglevel": { + "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", + + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-plugin-prefix": { + "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==" + + "license": "MIT" + + }, + + "node_modules/loupe": { + + "version": "2.3.7", + + "license": "MIT", + + "dependencies": { + + "get-func-name": "^2.0.1" + + } + }, + "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, + + "version": "6.0.0", + + "license": "ISC", + + "dependencies": { + + "yallist": "^4.0.0" + + }, + + "engines": { + + "node": ">=10" + + } + + }, + + "node_modules/magic-string": { + + "version": "0.30.10", + + "license": "MIT", + "dependencies": { - "yallist": "^3.0.2" + + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, + + "node_modules/magicast": { + + "version": "0.3.4", + + "license": "MIT", + + "dependencies": { + + "@babel/parser": "^7.24.4", + + "@babel/types": "^7.24.0", + + "source-map-js": "^1.2.0" + + } + + }, + + "node_modules/make-dir": { + + "version": "4.0.0", + + "license": "MIT", + "dependencies": { - "tmpl": "1.0.5" + + "semver": "^7.5.3" + + }, + + "engines": { + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + + "node_modules/make-error": { + + "version": "1.3.6", + + "license": "ISC" + + }, + "node_modules/mdn-data": { + "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + + "license": "CC0-1.0" + }, + "node_modules/merge-stream": { + "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + + "license": "MIT" + + }, + + "node_modules/merge2": { + + "version": "1.4.1", + + "license": "MIT", + + "engines": { + + "node": ">= 8" + + } + }, + "node_modules/microdata-rdf-streaming-parser": { + "version": "2.0.1", - "resolved": "https://registry.npmjs.org/microdata-rdf-streaming-parser/-/microdata-rdf-streaming-parser-2.0.1.tgz", - "integrity": "sha512-oEEYP3OwPGOtoE4eIyJvX1eJXI7VkGR4gKYqpEufaRXc2ele/Tkid/KMU3Los13wGrOq6woSxLEGOYSHzpRvwA==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "htmlparser2": "^8.0.0", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.1.0", + "relative-to-absolute-iri": "^1.0.2" + } + }, + "node_modules/microdata-rdf-streaming-parser/node_modules/htmlparser2": { + "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], - "peer": true, + + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, + + "version": "4.0.7", + + "license": "MIT", + "dependencies": { - "braces": "^3.0.2", + + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + + } + + }, + + "node_modules/mimic-fn": { + + "version": "4.0.0", + + "license": "MIT", + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "peer": true + + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==" + + "version": "1.2.8", + + "license": "MIT", + + "funding": { + + "url": "https://github.com/sponsors/ljharb" + + } + + }, + + "node_modules/mlly": { + + "version": "1.7.1", + + "license": "MIT", + + "dependencies": { + + "acorn": "^8.11.3", + + "pathe": "^1.1.2", + + "pkg-types": "^1.1.1", + + "ufo": "^1.5.3" + + } + }, + "node_modules/ms": { + "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + + "license": "MIT" + + }, + + "node_modules/mylas": { + + "version": "2.1.13", + + "license": "MIT", + + "engines": { + + "node": ">=12.0.0" + + }, + + "funding": { + + "type": "github", + + "url": "https://github.com/sponsors/raouldeheer" + + } + }, + "node_modules/n3": { + "version": "1.17.3", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.3.tgz", - "integrity": "sha512-ZHc24eZi2GIJcJQVxtL6NT3g+mTHRNeTVfXWELzeUOirqLrh2AAyg0nfYZ/kryJWKFSCgO37DGB6Ok3qmGgEcA==", + + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.1.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">=12.0" + + } + + }, + + "node_modules/nanoid": { + + "version": "3.3.7", + + "funding": [ + + { + + "type": "github", + + "url": "https://github.com/sponsors/ai" + + } + + ], + + "license": "MIT", + + "bin": { + + "nanoid": "bin/nanoid.cjs" + + }, + + "engines": { + + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + + "license": "MIT" + }, + "node_modules/node-domexception": { + "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "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==", + + "license": "MIT", + "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/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, + "node_modules/normalize-path": { + "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + + "node_modules/npm-run-path": { + + "version": "5.3.0", + + "license": "MIT", + "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" + + "path-key": "^4.0.0" + }, + "engines": { - "node": ">= 0.4" + + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { - "url": "https://github.com/sponsors/ljharb" + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + + "node_modules/npm-run-path/node_modules/path-key": { + + "version": "4.0.0", + + "license": "MIT", + "engines": { - "node": ">= 0.4" + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/once": { + "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, + + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + + "node_modules/onetime": { + + "version": "6.0.0", + + "license": "MIT", + "dependencies": { - "fn.name": "1.x.x" + + "mimic-fn": "^4.0.0" + + }, + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + + "node_modules/optionator": { + + "version": "0.9.4", + + "license": "MIT", + + "dependencies": { + + "deep-is": "^0.1.3", + + "fast-levenshtein": "^2.0.6", + + "levn": "^0.4.1", + + "prelude-ls": "^1.2.1", + + "type-check": "^0.4.0", + + "word-wrap": "^1.2.5" + + }, + + "engines": { + + "node": ">= 0.8.0" + + } + + }, + "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + + "version": "5.0.0", + + "license": "MIT", + "dependencies": { - "p-try": "^2.0.0" + + "yocto-queue": "^1.0.0" + }, + "engines": { - "node": ">=6" + + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + + "version": "5.0.0", + + "license": "MIT", + "dependencies": { - "p-limit": "^2.2.0" + + "p-limit": "^3.0.2" + }, + "engines": { - "node": ">=8" + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, + + "node_modules/p-locate/node_modules/p-limit": { + + "version": "3.1.0", + + "license": "MIT", + + "dependencies": { + + "yocto-queue": "^0.1.0" + + }, + + "engines": { + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + + }, + + "node_modules/p-locate/node_modules/p-limit/node_modules/yocto-queue": { + + "version": "0.1.0", + + "license": "MIT", + + "engines": { + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + + }, + + "node_modules/parent-module": { + + "version": "1.0.1", + + "license": "MIT", + + "dependencies": { + + "callsites": "^3.0.0" + + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, + + "license": "MIT", + "engines": { + "node": ">=0.10.0" + + } + + }, + + "node_modules/path-key": { + + "version": "3.1.1", + + "license": "MIT", + + "engines": { + + "node": ">=8" + + } + + }, + + "node_modules/path-type": { + + "version": "4.0.0", + + "license": "MIT", + + "engines": { + + "node": ">=8" + + } + + }, + + "node_modules/pathe": { + + "version": "1.1.2", + + "license": "MIT" + + }, + + "node_modules/pathval": { + + "version": "1.1.1", + + "license": "MIT", + + "engines": { + + "node": "*" + } + }, + "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + + "version": "1.0.1", + + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, + + "node_modules/pidtree": { + + "version": "0.6.0", + + "license": "MIT", + + "bin": { + + "pidtree": "bin/pidtree.js" + + }, + "engines": { - "node": ">= 6" + + "node": ">=0.10" + } + }, - "node_modules/point-in-polygon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", - "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" + + "node_modules/pkg-types": { + + "version": "1.1.1", + + "license": "MIT", + + "dependencies": { + + "confbox": "^0.1.7", + + "mlly": "^1.7.0", + + "pathe": "^1.1.2" + + } + + }, + + "node_modules/plimit-lit": { + + "version": "1.6.1", + + "license": "MIT", + + "dependencies": { + + "queue-lit": "^1.5.1" + + }, + + "engines": { + + "node": ">=12" + + } + }, - "node_modules/polygon-clipping": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.7.tgz", - "integrity": "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==", + + "node_modules/postcss": { + + "version": "8.4.38", + + "funding": [ + + { + + "type": "opencollective", + + "url": "https://opencollective.com/postcss/" + + }, + + { + + "type": "tidelift", + + "url": "https://tidelift.com/funding/github/npm/postcss" + + }, + + { + + "type": "github", + + "url": "https://github.com/sponsors/ai" + + } + + ], + + "license": "MIT", + "dependencies": { - "robust-predicates": "^3.0.2", - "splaytree": "^3.1.0" + + "nanoid": "^3.3.7", + + "picocolors": "^1.0.0", + + "source-map-js": "^1.2.0" + + }, + + "engines": { + + "node": "^10 || ^12 || >=14" + } + }, - "node_modules/polygon-clipping/node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + + "node_modules/prelude-ls": { + + "version": "1.2.1", + + "license": "MIT", + + "engines": { + + "node": ">= 0.8.0" + + } + + }, + + "node_modules/prettier": { + + "version": "3.3.2", + + "license": "MIT", + + "bin": { + + "prettier": "bin/prettier.cjs" + + }, + + "engines": { + + "node": ">=14" + + }, + + "funding": { + + "url": "https://github.com/prettier/prettier?sponsor=1" + + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/promise-polyfill": { + "version": "1.1.6", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", - "integrity": "sha512-7rrONfyLkDEc7OJ5QBkqa4KI4EBhCd340xRuIUPGCfu13znS+vx+VDdrT9ODAJHlXm7w4lbxN3DRjyv58EuzDg==", - "peer": true + + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + + "license": "MIT" + + }, + + "node_modules/queue-lit": { + + "version": "1.5.2", + + "license": "MIT", + + "engines": { + + "node": ">=12" + + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } - ] - }, - "node_modules/quickselect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", - "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" - }, - "node_modules/rbush": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", - "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", - "dependencies": { - "quickselect": "^1.0.1" - } + + ], + + "license": "MIT" + }, + "node_modules/rdf-canonize": { + "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", - "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + + "license": "BSD-3-Clause", + "dependencies": { + "setimmediate": "^1.0.5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rdf-data-factory": { + "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.2.tgz", - "integrity": "sha512-TfQD63Lokabd09ES1jAtKK8AA6rkr9rwyUBGo6olOt1CE0Um36CUQIqytyf0am2ouBPR0l7SaHxCiMcPGHkt1A==", + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/rdf-dereference": { + "version": "2.2.0", - "resolved": "https://registry.npmjs.org/rdf-dereference/-/rdf-dereference-2.2.0.tgz", - "integrity": "sha512-6geM3CSUlXTK3n4OoKsL95M7XwKXoxiwK7cf4e/+Dj0X/ll77ihFN5j9VhLGXNYbMXDlm30kBg/VU6ymMv6o/Q==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@comunica/actor-dereference-fallback": "^2.0.2", + "@comunica/actor-dereference-file": "^2.0.2", + "@comunica/actor-dereference-http": "^2.0.2", + "@comunica/actor-dereference-rdf-parse": "^2.6.0", + "@comunica/actor-http-fetch": "^2.0.1", + "@comunica/actor-http-proxy": "^2.0.1", + "@comunica/actor-rdf-parse-html": "^2.0.1", + "@comunica/actor-rdf-parse-html-microdata": "^2.0.1", + "@comunica/actor-rdf-parse-html-rdfa": "^2.0.1", + "@comunica/actor-rdf-parse-html-script": "^2.0.1", + "@comunica/actor-rdf-parse-jsonld": "^2.0.1", + "@comunica/actor-rdf-parse-n3": "^2.0.1", + "@comunica/actor-rdf-parse-rdfxml": "^2.0.1", + "@comunica/actor-rdf-parse-shaclc": "^2.6.0", + "@comunica/actor-rdf-parse-xml-rdfa": "^2.0.1", + "@comunica/bus-dereference": "^2.0.2", + "@comunica/bus-dereference-rdf": "^2.0.2", + "@comunica/bus-http": "^2.0.1", + "@comunica/bus-init": "^2.0.1", + "@comunica/bus-rdf-parse": "^2.0.1", + "@comunica/bus-rdf-parse-html": "^2.0.1", + "@comunica/config-query-sparql": "^2.0.1", + "@comunica/context-entries": "^2.8.1", + "@comunica/core": "^2.0.1", + "@comunica/mediator-combine-pipeline": "^2.0.1", + "@comunica/mediator-combine-union": "^2.0.1", + "@comunica/mediator-number": "^2.0.1", + "@comunica/mediator-race": "^2.0.1", + "@rdfjs/types": "*", + "process": "^0.11.10", + "rdf-string": "^1.6.0", + "stream-to-string": "^1.2.0" + }, + "bin": { + "rdf-dereference": "bin/Runner.js" + } + }, + "node_modules/rdf-isomorphic": { + "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rdf-isomorphic/-/rdf-isomorphic-1.3.1.tgz", - "integrity": "sha512-6uIhsXTVp2AtO6f41PdnRV5xZsa0zVZQDTBdn0br+DZuFf5M/YD+T6m8hKDUnALI6nFL/IujTMLgEs20MlNidQ==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "hash.js": "^1.1.7", + "rdf-string": "^1.6.0", + "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", + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/rdf-lens": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/rdf-lens/-/rdf-lens-1.2.5.tgz", - "integrity": "sha512-1r4rXTVRG9Qbva969+Kb1ACjYAfbHp8H05jPQj8t+CK7BD65FQTy5Vp3usHA7QkkphAIx7EK/tUTejCXZQHcbQ==", + + "version": "1.2.8", + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "^1.1.0", - "@treecg/types": "^0.4.5" - } - }, - "node_modules/rdf-literal": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", - "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", - "dependencies": { - "@rdfjs/types": "*", - "rdf-data-factory": "^1.1.0" - } - }, + + "@treecg/types": "^0.4.5", + + "@typescript-eslint/eslint-plugin": "^7.5.0", + + "@typescript-eslint/parser": "^7.4.0", + + "@vitest/coverage-v8": "^1.4.0", + + "dotenv": "^16.4.5", + + "eslint": "^8.57.0", + + "eslint-config-prettier": "^9.1.0", + + "husky": "^9.0.11", + + "lint-staged": "^15.2.2", + + "prettier": "^3.2.5", + + "ts-node": "^10.9.2", + + "tsc-alias": "^1.8.8", + + "typescript": "^5.4.3", + + "vite-tsconfig-paths": "^4.3.2", + + "vitest": "^1.4.0" + + } + + }, + "node_modules/rdf-stores": { + "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rdf-stores/-/rdf-stores-1.0.0.tgz", - "integrity": "sha512-wqp7M5409rbhpWQE0C1vyVysbz++aD2vEkZ6yueSxhDtyLvznS41R3cKiuUpm3ikc/yTpaCZwPo4iyKEaAwBIg==", + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "asynciterator": "^3.8.0", + "rdf-data-factory": "^1.1.1", + "rdf-string": "^1.6.2", + "rdf-terms": "^1.9.1" + } + }, + "node_modules/rdf-string": { + "version": "1.6.3", - "resolved": "https://registry.npmjs.org/rdf-string/-/rdf-string-1.6.3.tgz", - "integrity": "sha512-HIVwQ2gOqf+ObsCLSUAGFZMIl3rh9uGcRf1KbM85UDhKqP+hy6qj7Vz8FKt3GA54RiThqK3mNcr66dm1LP0+6g==", + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + } + }, + "node_modules/rdf-terms": { + "version": "1.11.0", - "resolved": "https://registry.npmjs.org/rdf-terms/-/rdf-terms-1.11.0.tgz", - "integrity": "sha512-iKlVgnMopRKl9pHVNrQrax7PtZKRCT/uJIgYqvuw1VVQb88zDvurtDr1xp0rt7N9JtKtFwUXoIQoEsjyRo20qQ==", + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0", + "rdf-string": "^1.6.0" + } + }, - "node_modules/rdf-validate-datatype": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/rdf-validate-datatype/-/rdf-validate-datatype-0.2.1.tgz", - "integrity": "sha512-DpREnmoWDxC80KyslZeBPLQb3ztyeiOolT4uCl58tCju2KHJu4j5vonmVVdEJh2Mpad5UY57v6sSM/hfSTFGKQ==", - "dependencies": { - "@rdfjs/term-map": "^2.0.0", - "@tpluscode/rdf-ns-builders": "3 - 4" - } - }, - "node_modules/rdf-validate-shacl": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/rdf-validate-shacl/-/rdf-validate-shacl-0.5.4.tgz", - "integrity": "sha512-0d395JxiT/EyWzjL8X1lC2gy5x3W0MuoKnfywFqwUsqo2Vn/zCicnaF+wyuHnwS3A0lMyWf6nThh/WF8JjmCjw==", - "dependencies": { - "@rdfjs/data-model": "^2", - "@rdfjs/dataset": "^2", - "@rdfjs/environment": "^1", - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/term-set": "^2.0.1", - "@vocabulary/sh": "^1.0.1", - "clownface": "^2.0.0", - "debug": "^4.3.2", - "rdf-literal": "^1.3.0", - "rdf-validate-datatype": "^0.2.0" - } - }, + "node_modules/rdfa-streaming-parser": { + "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rdfa-streaming-parser/-/rdfa-streaming-parser-2.0.1.tgz", - "integrity": "sha512-7Yyaj030LO7iQ38Wh/RNLVeYrVFJeyx3dpCK7C1nvX55eIN/gE4HWfbg4BYI9X7Bd+eUIUMVeiKYLmYjV6apow==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "htmlparser2": "^8.0.0", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.0.0", + "relative-to-absolute-iri": "^1.0.2" + } + }, + "node_modules/rdfa-streaming-parser/node_modules/htmlparser2": { + "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], - "peer": true, + + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", - "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", - "integrity": "sha512-f+tdI1wxOiPzMbFWRtOwinwPsqac0WIN80668yFKcVdFCSTGOWTM70ucQGUSdDZZo7pce/UvZgV0C3LDj0P7tg==", - "peer": true, + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + } + }, + "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + + "version": "18.3.1", + + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readable-stream-node-to-web": { + "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readable-stream-node-to-web/-/readable-stream-node-to-web-1.0.1.tgz", - "integrity": "sha512-OGzi2VKLa8H259kAx7BIwuRrXHGcxeHj4RdASSgEGBP9Q2wowdPvBc65upF4Q9O05qWgKqBw1+9PiLTtObl7uQ==", - "peer": true + + "license": "MIT" + + }, + + "node_modules/readdirp": { + + "version": "3.6.0", + + "license": "MIT", + + "dependencies": { + + "picomatch": "^2.2.1" + + }, + + "engines": { + + "node": ">=8.10.0" + + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=6" + } + }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, + "node_modules/relative-to-absolute-iri": { + "version": "1.0.7", - "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.7.tgz", - "integrity": "sha512-Xjyl4HmIzg2jzK/Un2gELqbcE8Fxy85A/aLSHE6PE/3+OGsFwmKVA1vRyGaz6vLWSqLDMHA+5rjD/xbibSQN1Q==", - "peer": true + + "license": "MIT" + }, + "node_modules/require-from-string": { + "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + + "license": "MIT" + }, + "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, + + "version": "4.0.0", + + "license": "MIT", + "engines": { - "node": ">=8" + + "node": ">=4" + } + }, - "node_modules/robust-predicates": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", - "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==" + + "node_modules/restore-cursor": { + + "version": "4.0.0", + + "license": "MIT", + + "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/restore-cursor/node_modules/onetime": { + + "version": "5.1.2", + + "license": "MIT", + + "dependencies": { + + "mimic-fn": "^2.1.0" + + }, + + "engines": { + + "node": ">=6" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + + }, + + "node_modules/restore-cursor/node_modules/onetime/node_modules/mimic-fn": { + + "version": "2.1.0", + + "license": "MIT", + + "engines": { + + "node": ">=6" + + } + + }, + + "node_modules/restore-cursor/node_modules/signal-exit": { + + "version": "3.0.7", + + "license": "ISC" + + }, + + "node_modules/reusify": { + + "version": "1.0.4", + + "license": "MIT", + + "engines": { + + "iojs": ">=1.0.0", + + "node": ">=0.10.0" + + } + + }, + + "node_modules/rfdc": { + + "version": "1.4.1", + + "license": "MIT" + + }, + + "node_modules/rimraf": { + + "version": "3.0.2", + + "license": "ISC", + + "dependencies": { + + "glob": "^7.1.3" + + }, + + "bin": { + + "rimraf": "bin.js" + + }, + + "funding": { + + "url": "https://github.com/sponsors/isaacs" + + } + }, + + "node_modules/rollup": { + + "version": "4.18.0", + + "license": "MIT", + + "dependencies": { + + "@types/estree": "1.0.5" + + }, + + "bin": { + + "rollup": "dist/bin/rollup" + + }, + + "engines": { + + "node": ">=18.0.0", + + "npm": ">=8.0.0" + + }, + + "optionalDependencies": { + + "@rollup/rollup-android-arm-eabi": "4.18.0", + + "@rollup/rollup-android-arm64": "4.18.0", + + "@rollup/rollup-darwin-arm64": "4.18.0", + + "@rollup/rollup-darwin-x64": "4.18.0", + + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + + "@rollup/rollup-linux-arm64-musl": "4.18.0", + + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + + "@rollup/rollup-linux-x64-gnu": "4.18.0", + + "@rollup/rollup-linux-x64-musl": "4.18.0", + + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + + "@rollup/rollup-win32-x64-msvc": "4.18.0", + + "fsevents": "~2.3.2" + + } + + }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "peer": true + + "license": "MIT" + }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "engines": { - "node": ">=10" + + "node_modules/run-parallel": { + + "version": "1.2.0", + + "funding": [ + + { + + "type": "github", + + "url": "https://github.com/sponsors/feross" + + }, + + { + + "type": "patreon", + + "url": "https://www.patreon.com/feross" + + }, + + { + + "type": "consulting", + + "url": "https://feross.org/support" + + } + + ], + + "license": "MIT", + + "dependencies": { + + "queue-microtask": "^1.2.2" + } + + }, + + "node_modules/safe-buffer": { + + "version": "5.2.1", + + "funding": [ + + { + + "type": "github", + + "url": "https://github.com/sponsors/feross" + + }, + + { + + "type": "patreon", + + "url": "https://www.patreon.com/feross" + + }, + + { + + "type": "consulting", + + "url": "https://feross.org/support" + + } + + ], + + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + + "license": "MIT" + }, + "node_modules/saxes": { + "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "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==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + + "version": "7.6.2", + + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, - "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==", - "dev": true, + + "node_modules/setimmediate": { + + "version": "1.0.5", + + "license": "MIT" + + }, + + "node_modules/shaclc-parse": { + + "version": "1.4.0", + + "license": "MIT", + "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + + "@rdfjs/types": "^1.1.0", + + "n3": "^1.16.3" + } + }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/set-function-length": { - "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==", + + "node_modules/shebang-command": { + + "version": "2.0.0", + + "license": "MIT", + "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" + + "shebang-regex": "^3.0.0" + }, + "engines": { - "node": ">= 0.4" + + "node": ">=8" + } + }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, + + "node_modules/shebang-regex": { + + "version": "3.0.0", + + "license": "MIT", + "engines": { - "node": ">= 0.4" + + "node": ">=8" + } + }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shaclc-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/shaclc-parse/-/shaclc-parse-1.4.0.tgz", - "integrity": "sha512-zyxjIYQH2ghg/wtMvOp+4Nr6aK8j9bqFiVT3w47K8WHPYN+S3Zgnh2ybT+dGgMwo9KjiOoywxhjC7d8Z6GCmfA==", - "peer": true, - "dependencies": { - "@rdfjs/types": "^1.1.0", - "n3": "^1.16.3" - } + + "node_modules/siginfo": { + + "version": "2.0.0", + + "license": "ISC" + }, + "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/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" + + "version": "4.1.0", + + "license": "ISC", + + "engines": { + + "node": ">=14" + + }, + + "funding": { + + "url": "https://github.com/sponsors/isaacs" + } + }, - "node_modules/skmeans": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", - "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==" - }, + "node_modules/slash": { + "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, - "node_modules/slippy-bbox": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slippy-bbox/-/slippy-bbox-1.0.0.tgz", - "integrity": "sha512-E9gjCAFlu9XTgpbfIE8RetBb6i6w0l5/fYrjawkblqwks+s0Q4DH+9f/Z8CJr0CQ54OvWukLIA4vr1LOB2Tijw==" + + "node_modules/slice-ansi": { + + "version": "5.0.0", + + "license": "MIT", + + "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_modules/slice-ansi/node_modules/ansi-styles": { + + "version": "6.2.1", + + "license": "MIT", + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sparqlalgebrajs": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/sparqlalgebrajs/-/sparqlalgebrajs-4.3.4.tgz", - "integrity": "sha512-BUpd79w3SfrfRPyA+gHA23B3masuD2wLK47IOnglyIK6hx4BC+4TWtOmP5D8RTbmbPCuLKYfLGyLDF/RQsKgWg==", - "peer": true, + + "version": "4.3.5", + + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@types/sparqljs": "^3.1.3", + "fast-deep-equal": "^3.1.3", + "minimist": "^1.2.6", + "rdf-data-factory": "^1.1.0", + "rdf-isomorphic": "^1.3.0", + "rdf-string": "^1.6.0", + "rdf-terms": "^1.10.0", + "sparqljs": "^3.7.1" + }, + "bin": { + "sparqlalgebrajs": "bin/sparqlalgebrajs.js" + } + }, - "node_modules/sparqlalgebrajs/node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, + "node_modules/sparqljs": { + "version": "3.7.1", - "resolved": "https://registry.npmjs.org/sparqljs/-/sparqljs-3.7.1.tgz", - "integrity": "sha512-I1jYMtcwDkgCEqQ4eQuQIhB8hFAlRAJ6YDXDcV54XztaJaYRFqJlidHt77S3j8Mfh6kY6GK04dXPEIopxbEeuQ==", - "peer": true, + + "license": "MIT", + "dependencies": { + "rdf-data-factory": "^1.1.2" + }, + "bin": { + "sparqljs": "bin/sparql-to-json" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + + } + + }, + + "node_modules/stackback": { + + "version": "0.0.2", + + "license": "MIT" + + }, + + "node_modules/std-env": { + + "version": "3.7.0", + + "license": "MIT" + + }, + + "node_modules/stream-to-array": { + + "version": "2.3.0", + + "dev": true, + + "license": "MIT", + + "dependencies": { + + "any-promise": "^1.1.0" + } + }, - "node_modules/splaytree": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.2.tgz", - "integrity": "sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==" + + "node_modules/stream-to-string": { + + "version": "1.2.1", + + "license": "MIT", + + "dependencies": { + + "promise-polyfill": "^1.1.6" + + } + }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + + "node_modules/string_decoder": { + + "version": "1.3.0", + + "license": "MIT", + + "dependencies": { + + "safe-buffer": "~5.2.0" + + } + }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + + "node_modules/string-argv": { + + "version": "0.3.2", + + "license": "MIT", + "engines": { - "node": "*" + + "node": ">=0.6.19" + } + }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, + + "node_modules/string-width": { + + "version": "7.1.0", + + "license": "MIT", + "dependencies": { - "escape-string-regexp": "^2.0.0" + + "emoji-regex": "^10.3.0", + + "get-east-asian-width": "^1.0.0", + + "strip-ansi": "^7.1.0" + }, + "engines": { - "node": ">=10" + + "node": ">=18" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, - "node_modules/stream-to-array": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", - "dev": true, + + "node_modules/string-width/node_modules/strip-ansi": { + + "version": "7.1.0", + + "license": "MIT", + "dependencies": { - "any-promise": "^1.1.0" + + "ansi-regex": "^6.0.1" + + }, + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, - "node_modules/stream-to-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/stream-to-string/-/stream-to-string-1.2.1.tgz", - "integrity": "sha512-WsvTDNF8UYs369Yko3pcdTducQtYpzEZeOV7cTuReyFvOoA9S/DLJ6sYK+xPafSPHhUMpaxiljKYnT6JSFztIA==", - "peer": true, - "dependencies": { - "promise-polyfill": "^1.1.6" + + "node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { + + "version": "6.0.1", + + "license": "MIT", + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + + "node_modules/strip-ansi": { + + "version": "6.0.1", + + "license": "MIT", + "dependencies": { - "safe-buffer": "~5.2.0" + + "ansi-regex": "^5.0.1" + + }, + + "engines": { + + "node": ">=8" + } + }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + + "node_modules/strip-final-newline": { + + "version": "3.0.0", + + "license": "MIT", + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + + }, + + "node_modules/strip-json-comments": { + + "version": "3.1.1", + + "license": "MIT", + + "engines": { + + "node": ">=8" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + + }, + + "node_modules/strip-literal": { + + "version": "2.1.0", + + "license": "MIT", + + "dependencies": { + + "js-tokens": "^9.0.0" + + }, + + "funding": { + + "url": "https://github.com/sponsors/antfu" + + } + }, + "node_modules/supports-color": { + "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + + "license": "MIT" + }, + "node_modules/table-layout": { + "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + + "license": "MIT", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, + + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" - }, - "node_modules/tinyqueue": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", - "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, + + "node_modules/text-table": { + + "version": "0.2.0", + + "license": "MIT" + + }, + + "node_modules/tinybench": { + + "version": "2.8.0", + + "license": "MIT" + + }, + + "node_modules/tinypool": { + + "version": "0.8.4", + + "license": "MIT", + "engines": { - "node": ">=4" + + "node": ">=14.0.0" + } + }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, + + "node_modules/tinyspy": { + + "version": "2.2.1", + + "license": "MIT", + "engines": { - "node": ">=8.0" + + "node": ">=14.0.0" + } + }, - "node_modules/topojson-client": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "dependencies": { - "commander": "2" - }, - "bin": { - "topo2geo": "bin/topo2geo", - "topomerge": "bin/topomerge", - "topoquantize": "bin/topoquantize" + + "node_modules/to-fast-properties": { + + "version": "2.0.0", + + "license": "MIT", + + "engines": { + + "node": ">=4" + } + }, - "node_modules/topojson-server": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz", - "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", + + "node_modules/to-regex-range": { + + "version": "5.0.1", + + "license": "MIT", + "dependencies": { - "commander": "2" + + "is-number": "^7.0.0" + }, - "bin": { - "geo2topo": "bin/geo2topo" + + "engines": { + + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + + "version": "4.1.4", + + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + + "node_modules/ts-api-utils": { + + "version": "1.3.0", + + "license": "MIT", + "engines": { - "node": ">= 14.0.0" + + "node": ">=16" + + }, + + "peerDependencies": { + + "typescript": ">=4.2.0" + } + }, - "node_modules/turf-jsts": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/turf-jsts/-/turf-jsts-1.2.3.tgz", - "integrity": "sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==" + + "node_modules/ts-node": { + + "version": "10.9.2", + + "license": "MIT", + + "dependencies": { + + "@cspotcode/source-map-support": "^0.8.0", + + "@tsconfig/node10": "^1.0.7", + + "@tsconfig/node12": "^1.0.7", + + "@tsconfig/node14": "^1.0.0", + + "@tsconfig/node16": "^1.0.2", + + "acorn": "^8.4.1", + + "acorn-walk": "^8.1.1", + + "arg": "^4.1.0", + + "create-require": "^1.1.0", + + "diff": "^4.0.1", + + "make-error": "^1.1.1", + + "v8-compile-cache-lib": "^3.0.1", + + "yn": "3.1.1" + + }, + + "bin": { + + "ts-node": "dist/bin.js", + + "ts-node-cwd": "dist/bin-cwd.js", + + "ts-node-esm": "dist/bin-esm.js", + + "ts-node-script": "dist/bin-script.js", + + "ts-node-transpile-only": "dist/bin-transpile.js", + + "ts-script": "dist/bin-script-deprecated.js" + + }, + + "peerDependencies": { + + "@swc/core": ">=1.2.50", + + "@swc/wasm": ">=1.2.50", + + "@types/node": "*", + + "typescript": ">=2.7" + + }, + + "peerDependenciesMeta": { + + "@swc/core": { + + "optional": true + + }, + + "@swc/wasm": { + + "optional": true + + } + + } + + }, + + "node_modules/tsc-alias": { + + "version": "1.8.10", + + "license": "MIT", + + "dependencies": { + + "chokidar": "^3.5.3", + + "commander": "^9.0.0", + + "globby": "^11.0.4", + + "mylas": "^2.1.9", + + "normalize-path": "^3.0.0", + + "plimit-lit": "^1.2.6" + + }, + + "bin": { + + "tsc-alias": "dist/bin/index.js" + + } + + }, + + "node_modules/tsc-alias/node_modules/commander": { + + "version": "9.5.0", + + "license": "MIT", + + "engines": { + + "node": "^12.20.0 || >=14" + + } + + }, + + "node_modules/tsconfck": { + + "version": "3.1.0", + + "license": "MIT", + + "bin": { + + "tsconfck": "bin/tsconfck.js" + + }, + + "engines": { + + "node": "^18 || >=20" + + }, + + "peerDependencies": { + + "typescript": "^5.0.0" + + }, + + "peerDependenciesMeta": { + + "typescript": { + + "optional": true + + } + + } + + }, + + "node_modules/type-check": { + + "version": "0.4.0", + + "license": "MIT", + + "dependencies": { + + "prelude-ls": "^1.2.1" + + }, + + "engines": { + + "node": ">= 0.8.0" + + } + }, + "node_modules/type-detect": { + "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, + + "license": "MIT", + "engines": { + "node": ">=4" + + } + + }, + + "node_modules/type-fest": { + + "version": "0.20.2", + + "license": "(MIT OR CC0-1.0)", + + "engines": { + + "node": ">=10" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, + + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typical": { + "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + + "node_modules/ufo": { + + "version": "1.5.3", + + "license": "MIT" + + }, + "node_modules/undici": { + "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + + "license": "MIT" + }, + "node_modules/universalify": { + "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + + "node_modules/uri-js": { + + "version": "4.4.1", + + "license": "BSD-2-Clause", + "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + + "node_modules/v8-compile-cache-lib": { + + "version": "3.0.1", + + "license": "MIT" + }, + "node_modules/validate-iri": { + "version": "1.0.1", - "resolved": "https://registry.npmjs.org/validate-iri/-/validate-iri-1.0.1.tgz", - "integrity": "sha512-gLXi7351CoyVVQw8XE5sgpYawRKatxE7kj/xmCxXOZS1kMdtcqC0ILIqLuVEVnAUQSL/evOGG3eQ+8VgbdnstA==", - "peer": true + + "license": "MIT" + + }, + + "node_modules/vite": { + + "version": "5.3.1", + + "license": "MIT", + + "dependencies": { + + "esbuild": "^0.21.3", + + "postcss": "^8.4.38", + + "rollup": "^4.13.0" + + }, + + "bin": { + + "vite": "bin/vite.js" + + }, + + "engines": { + + "node": "^18.0.0 || >=20.0.0" + + }, + + "funding": { + + "url": "https://github.com/vitejs/vite?sponsor=1" + + }, + + "optionalDependencies": { + + "fsevents": "~2.3.3" + + }, + + "peerDependencies": { + + "@types/node": "^18.0.0 || >=20.0.0", + + "less": "*", + + "lightningcss": "^1.21.0", + + "sass": "*", + + "stylus": "*", + + "sugarss": "*", + + "terser": "^5.4.0" + + }, + + "peerDependenciesMeta": { + + "@types/node": { + + "optional": true + + }, + + "less": { + + "optional": true + + }, + + "lightningcss": { + + "optional": true + + }, + + "sass": { + + "optional": true + + }, + + "stylus": { + + "optional": true + + }, + + "sugarss": { + + "optional": true + + }, + + "terser": { + + "optional": true + + } + + } + + }, + + "node_modules/vite-node": { + + "version": "1.6.0", + + "license": "MIT", + + "dependencies": { + + "cac": "^6.7.14", + + "debug": "^4.3.4", + + "pathe": "^1.1.1", + + "picocolors": "^1.0.0", + + "vite": "^5.0.0" + + }, + + "bin": { + + "vite-node": "vite-node.mjs" + + }, + + "engines": { + + "node": "^18.0.0 || >=20.0.0" + + }, + + "funding": { + + "url": "https://opencollective.com/vitest" + + } + + }, + + "node_modules/vite-tsconfig-paths": { + + "version": "4.3.2", + + "license": "MIT", + + "dependencies": { + + "debug": "^4.1.1", + + "globrex": "^0.1.2", + + "tsconfck": "^3.0.3" + + }, + + "peerDependencies": { + + "vite": "*" + + }, + + "peerDependenciesMeta": { + + "vite": { + + "optional": true + + } + + } + + }, + + "node_modules/vitest": { + + "version": "1.6.0", + + "license": "MIT", + + "dependencies": { + + "@vitest/expect": "1.6.0", + + "@vitest/runner": "1.6.0", + + "@vitest/snapshot": "1.6.0", + + "@vitest/spy": "1.6.0", + + "@vitest/utils": "1.6.0", + + "acorn-walk": "^8.3.2", + + "chai": "^4.3.10", + + "debug": "^4.3.4", + + "execa": "^8.0.1", + + "local-pkg": "^0.5.0", + + "magic-string": "^0.30.5", + + "pathe": "^1.1.1", + + "picocolors": "^1.0.0", + + "std-env": "^3.5.0", + + "strip-literal": "^2.0.0", + + "tinybench": "^2.5.1", + + "tinypool": "^0.8.3", + + "vite": "^5.0.0", + + "vite-node": "1.6.0", + + "why-is-node-running": "^2.2.2" + + }, + + "bin": { + + "vitest": "vitest.mjs" + + }, + + "engines": { + + "node": "^18.0.0 || >=20.0.0" + + }, + + "funding": { + + "url": "https://opencollective.com/vitest" + + }, + + "peerDependencies": { + + "@edge-runtime/vm": "*", + + "@types/node": "^18.0.0 || >=20.0.0", + + "@vitest/browser": "1.6.0", + + "@vitest/ui": "1.6.0", + + "happy-dom": "*", + + "jsdom": "*" + + }, + + "peerDependenciesMeta": { + + "@edge-runtime/vm": { + + "optional": true + + }, + + "@types/node": { + + "optional": true + + }, + + "@vitest/browser": { + + "optional": true + + }, + + "@vitest/ui": { + + "optional": true + + }, + + "happy-dom": { + + "optional": true + + }, + + "jsdom": { + + "optional": true + + } + + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web-streams-ponyfill": { + "version": "1.4.2", - "resolved": "https://registry.npmjs.org/web-streams-ponyfill/-/web-streams-ponyfill-1.4.2.tgz", - "integrity": "sha512-LCHW+fE2UBJ2vjhqJujqmoxh1ytEDEr0dPO3CabMdMDJPKmsaxzS90V1Ar6LtNE5VHLqxR4YMEj1i4lzMAccIA==", - "peer": true + + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, - "node_modules/winston": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz", - "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", + + "node_modules/which": { + + "version": "2.0.2", + + "license": "ISC", + "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.7.0" + + "isexe": "^2.0.0" + }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", - "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" + + "bin": { + + "node-which": "bin/node-which" + }, + "engines": { - "node": ">= 12.0.0" + + "node": ">= 8" + } + }, - "node_modules/winston-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + + "node_modules/why-is-node-running": { + + "version": "2.2.2", + + "license": "MIT", + "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + + "siginfo": "^2.0.0", + + "stackback": "0.0.2" + + }, + + "bin": { + + "why-is-node-running": "cli.js" + }, + "engines": { - "node": ">= 6" + + "node": ">=8" + } + }, - "node_modules/winston/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + + "node_modules/word-wrap": { + + "version": "1.2.5", + + "license": "MIT", + "engines": { - "node": ">= 6" + + "node": ">=0.10.0" + } + }, - "node_modules/wkt": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/wkt/-/wkt-0.1.1.tgz", - "integrity": "sha512-2vtzYZOqN0VZdtDTMDUgbpXpE+MXRdsFTiCpS08FZ4yktT9pPylVMZaLxcIqT9pRkBp5FIAGVQyJ/kJa9b8uGg==" - }, + "node_modules/wordwrapjs": { + "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + + "license": "MIT", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + + "license": "MIT", + "engines": { + "node": ">=8" + } + }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + + "node_modules/wrap-ansi": { + + "version": "9.0.0", + + "license": "MIT", + + "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/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, + + "node_modules/wrap-ansi/node_modules/ansi-styles": { + + "version": "6.2.1", + + "license": "MIT", + + "engines": { + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + + } + + }, + + "node_modules/wrap-ansi/node_modules/strip-ansi": { + + "version": "7.1.0", + + "license": "MIT", + "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + + "ansi-regex": "^6.0.1" + + }, + + "engines": { + + "node": ">=12" + }, + + "funding": { + + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + + } + + }, + + "node_modules/wrap-ansi/node_modules/strip-ansi/node_modules/ansi-regex": { + + "version": "6.0.1", + + "license": "MIT", + "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + + "node": ">=12" + + }, + + "funding": { + + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + + }, + + "node_modules/wrappy": { + + "version": "1.0.2", + + "license": "ISC" + }, + "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + + "version": "8.17.0", + + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + + "license": "MIT" + }, + "node_modules/yallist": { + + "version": "4.0.0", + + "license": "ISC" + + }, + + "node_modules/yaml": { + + "version": "2.4.5", + + "license": "ISC", + + "bin": { + + "yaml": "bin.mjs" + + }, + + "engines": { + + "node": ">= 14" + + } + + }, + + "node_modules/yn": { + "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + + "license": "MIT", + + "engines": { + + "node": ">=6" + + } + + }, + + "node_modules/yocto-queue": { + + "version": "1.0.0", + + "license": "MIT", + + "engines": { + + "node": ">=12.20" + + }, + + "funding": { + + "url": "https://github.com/sponsors/sindresorhus" + + } + } + } + } + diff --git a/package.json b/package.json index 4f5f6d3..7f74f8a 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,13 @@ { + "name": "@rdfc/sds-processors-ts", - "version": "0.3.2", + "version": "0.4.0", "type": "module", "scripts": { - "build": "tsc", + "build": "tsc && tsc-alias", "prepublishOnly": "tsc", - "test": "bun test" + "test": "vitest run --coverage --coverage.include src", + "prepare": "husky" }, "main": "./lib/index.js", "files": [ @@ -23,23 +25,34 @@ ], "license": "MIT", "dependencies": { - "@treecg/bucketizers": "^2.1.13", - "@treecg/types": "^0.4.5", - "csv-parse": "^5.5.2", - "extract-cbd-shape": "^0.1.4", - "jsonld": "^8.3.1", - "n3": "^1.17.2", - "rdf-lens": "^1.2.5", + "@treecg/types": "^0.4.6", + "csv-parse": "^5.5.6", + "extract-cbd-shape": "^0.1.8", + "jsonld": "^8.3.2", + "n3": "^1.17.3", + "rdf-lens": "^1.2.8", "rdf-stores": "^1.0.0" }, "devDependencies": { - "@ajuvercr/js-runner": "^0.2.0-alpha.0", - "@jest/globals": "^29.7.0", - "@types/jsonld": "^1.5.13", + "@rdfc/js-runner": "^0.2.1", + "@rdfjs/types": "^1.1.0", + "@types/jsonld": "^1.5.14", "@types/n3": "^1.16.4", - "@types/node": "^20.10.0", + "@types/node": "^20.14.2", "@types/rdf-js": "^4.0.2", - "@rdfjs/types": "^1.1.0", - "typescript": "^5.3.2" + "@typescript-eslint/eslint-plugin": "^7.13.0", + "@typescript-eslint/parser": "^7.13.0", + "@vitest/coverage-v8": "^1.6.0", + "dotenv": "^16.4.5", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "husky": "^9.0.11", + "lint-staged": "^15.2.7", + "prettier": "^3.3.2", + "ts-node": "^10.9.2", + "tsc-alias": "^1.8.10", + "typescript": "^5.4.5", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.0" } } diff --git a/processors.ttl b/processors.ttl new file mode 100644 index 0000000..38c01d6 --- /dev/null +++ b/processors.ttl @@ -0,0 +1,39 @@ +@prefix js: . +@prefix fno: . +@prefix fnom: . +@prefix xsd: . +@prefix : . +@prefix sh: . + +js:Log a js:JsProcess; + js:file <./lib/index.js>; + js:function "log"; + js:location <./>; + js:mapping [ + a fno:Mapping; + fno:parameterMapping [ + a fnom:PositionParameterMapping; + fnom:functionParameter "incoming"; + fnom:implementationParameterPosition "0"^^xsd:int; + ], [ + a fnom:PositionParameterMapping; + fnom:functionParameter "outgoing"; + fnom:implementationParameterPosition "1"^^xsd:int; + ]; + ]. + +[ ] a sh:NodeShape; + sh:targetClass js:Log; + sh:property [ + sh:class :ReaderChannel; + sh:path js:incoming; + sh:name "incoming"; + sh:maxCount 1; + sh:minCount 1; + ], [ + sh:class :WriterChannel; + sh:path js:outgoing; + sh:name "outgoing"; + sh:maxCount 1; + sh:minCount 1; + ]. diff --git a/src/bucketizers.ts b/src/bucketizers.ts index 706451e..bd9048b 100644 --- a/src/bucketizers.ts +++ b/src/bucketizers.ts @@ -1,11 +1,15 @@ -import { FACTORY } from "@treecg/bucketizers"; import { readFileSync, writeFileSync } from "fs"; -import { readFile } from "fs/promises"; import { DataFactory, Parser, Store } from "n3"; import * as N3 from "n3"; -import { blankNode, getLatestShape, getLatestStream, literal, SR, SW, transformMetadata } from "./core"; +import { + blankNode, + getLatestShape, + getLatestStream, + literal, + transformMetadata, +} from "./core"; import { LDES, PPLAN, PROV, RDF, SDS } from "@treecg/types"; -import type { Stream, Writer } from "@ajuvercr/js-runner"; +import type { Stream, Writer } from "@rdfc/js-runner"; import { BucketizerConfig, BucketizerOrchestrator } from "./bucketizers/index"; import { Quad, Quad_Object, Term } from "rdf-js"; import { Bucket, Extractor, Record } from "./utils/index"; @@ -13,343 +17,284 @@ import { CBDShapeExtractor } from "extract-cbd-shape"; import { Cleanup } from "./exitHandler"; import { RdfStore } from "rdf-stores"; -type Data = { data: Quad[]; metadata: Quad[] }; -const { namedNode, quad } = DataFactory; - -async function readState(path: string): Promise { - try { - const str = await readFile(path, { encoding: "utf-8" }); - return JSON.parse(str); - } catch (e) { - return; - } -} +const { quad } = DataFactory; async function writeState( - path: string | undefined, - content: string, + path: string | undefined, + content: string, ): Promise { - if (path) { - writeFileSync(path, content, { encoding: "utf-8" }); - } + if (path) { + writeFileSync(path, content, { encoding: "utf-8" }); + } } function addProcess( - id: Term | undefined, - store: Store, - strategyId: Term, - bucketizeConfig: Quad[], + id: Term | undefined, + store: Store, + strategyId: Term, + bucketizeConfig: Quad[], ): Term { - const newId = store.createBlankNode(); - const time = new Date().toISOString(); + const newId = store.createBlankNode(); + const time = new Date().toISOString(); - store.addQuad(newId, RDF.terms.type, PPLAN.terms.Activity); - store.addQuad(newId, RDF.terms.type, LDES.terms.Bucketization); + store.addQuad(newId, RDF.terms.type, PPLAN.terms.Activity); + store.addQuad(newId, RDF.terms.type, LDES.terms.Bucketization); - store.addQuads(bucketizeConfig); + store.addQuads(bucketizeConfig); - store.addQuad(newId, PROV.terms.startedAtTime, literal(time)); - store.addQuad(newId, PROV.terms.used, strategyId); - if (id) { - store.addQuad(newId, PROV.terms.used, id); - } + store.addQuad(newId, PROV.terms.startedAtTime, literal(time)); + store.addQuad(newId, PROV.terms.used, strategyId); + if (id) { + store.addQuad(newId, PROV.terms.used, id); + } - return newId; + return newId; } function parseQuads(quads: string | Quad[]): Quad[] { - if (quads instanceof Array) return (quads); - const parser = new N3.Parser(); - return parser.parse(quads); + if (quads instanceof Array) return quads; + const parser = new N3.Parser(); + return parser.parse(quads); } function serializeQuads(quads: Quad[]): string { - const writer = new N3.Writer(); - return writer.quadsToString(quads); -} - -export async function doTheBucketization( - dataReader: Stream, - metadataReader: Stream, - dataWriter: Writer, - metadataWriter: Writer, - location: string, - savePath: string, - sourceStream: string | undefined, - resultingStream: string, -) { - dataReader.on("end", () => { - console.log("bucketize data closed"); - dataWriter.end(); - }); - metadataReader.on("end", () => { - console.log("bucketize index closed"); - metadataWriter.end(); - }); - - const sr = { metadata: metadataReader, data: dataReader }; - const sw = { metadata: metadataWriter, data: dataWriter }; - - const content = await readFile(location, { encoding: "utf-8" }); - const quads = new Parser().parse(content); - - const quadMemberId = quads.find( - (quad) => - quad.predicate.equals(RDF.terms.type) && - quad.object.equals(LDES.terms.BucketizeStrategy), - )!.subject; - - const f = transformMetadata( - namedNode(resultingStream), - sourceStream ? namedNode(sourceStream) : undefined, - "sds:Member", - (x, y) => addProcess(x, y, quadMemberId, quads), - ); - sr.metadata.data((quads) => - sw.metadata.push(serializeQuads(f(parseQuads(quads)))), - ); - - if (sr.metadata.lastElement) { - sw.metadata.push(serializeQuads(f(parseQuads(sr.metadata.lastElement)))); - } - - const state = await readState(savePath); - - const bucketizer = FACTORY.buildLD(quads, quadMemberId, state); - - if (state) { - bucketizer.importState(state); - } - - // Cleanup(async () => { - // const state = bucketizer.exportState() - // await writeState(savePath, state); - // }) - - sr.data.data(async (data: Quad[] | string) => { - const t = parseQuads(data); - if (!t.length) return; - - const checkStream = sourceStream - ? (q: Quad) => - t.some( - (q2) => - q2.subject.equals(q.subject) && - q2.predicate.equals(SDS.terms.stream) && - q2.object.value === sourceStream, - ) - : (_: Quad) => true; - - const members = [ - ...new Set( - t - .filter( - (q) => - q.predicate.equals(SDS.terms.custom("payload")) && checkStream(q), - ) - .map((q) => q.object), - ), - ]; - if (members.length > 1) { - console.error("Detected more members ids than expected"); - } - - if (members.length === 0) return; - - const sub = members[0].value; - const extras = (bucketizer.bucketize(t, sub)); - - const recordId = extras.find((q) => - q.predicate.equals(SDS.terms.payload), - )!.subject; - t.push(...(extras)); - t.push(quad(recordId, SDS.terms.stream, namedNode(resultingStream))); - t.push(quad(recordId, RDF.terms.type, SDS.terms.Member)); - - await sw.data.push(serializeQuads(t)); - }); + const writer = new N3.Writer(); + return writer.quadsToString(quads); } type Channels = { - dataInput: Stream; - metadataInput: Stream; - dataOutput: Writer; - metadataOutput: Writer; + dataInput: Stream; + metadataInput: Stream; + dataOutput: Writer; + metadataOutput: Writer; }; type Config = { - quads: { id: Term; quads: Quad[] }; - strategy: BucketizerConfig[]; + quads: { id: Term; quads: Quad[] }; + strategy: BucketizerConfig[]; }; function record_to_quads( - record: Record, - resultingStream: Term, - buckets: Bucket[], + record: Record, + resultingStream: Term, + buckets: Bucket[], ): Quad[] { - const id = blankNode(); - const out: Quad[] = [ - quad(id, SDS.terms.payload, record.data.id), - quad(id, SDS.terms.stream, resultingStream), - ...record.data.quads, - ...buckets - .map((bucket) => bucket.id) - .map((bucket) => quad(id, SDS.terms.bucket, bucket)), - ]; - return out; + const id = blankNode(); + const out: Quad[] = [ + quad( + id, + SDS.terms.payload, + record.data.id, + SDS.terms.custom("DataDescription"), + ), + quad( + id, + SDS.terms.stream, + resultingStream, + SDS.terms.custom("DataDescription"), + ), + ...buckets + .map((bucket) => bucket.id) + .map((bucket) => + quad( + id, + SDS.terms.bucket, + bucket, + SDS.terms.custom("DataDescription"), + ), + ), + ...record.data.quads, + ]; + return out; } function bucket_to_quads(bucket: Bucket): Quad[] { - const out: Quad[] = [ - quad( - bucket.id, - RDF.terms.type, - SDS.terms.custom("Bucket"), - ), - ]; - out.push( - quad( - bucket.id, - SDS.terms.custom("immutable"), - literal((bucket.immutable || false) + ""), - ), - ); - - if (bucket.root) { - out.push( - quad( - bucket.id, - SDS.terms.custom("isRoot"), - literal("true"), - ), - ); - } - - for (let rel of bucket.links) { - const id = blankNode(); + const out: Quad[] = [ + quad( + bucket.id, + RDF.terms.type, + SDS.terms.custom("Bucket"), + SDS.terms.custom("DataDescription"), + ), + ]; out.push( - quad(bucket.id, SDS.terms.relation, id), - quad(id, SDS.terms.relationType, rel.type), - quad(id, SDS.terms.relationBucket, rel.target), + quad( + bucket.id, + SDS.terms.custom("immutable"), + literal((bucket.immutable || false) + ""), + SDS.terms.custom("DataDescription"), + ), ); - if (rel.path) { - out.push( - quad(id, SDS.terms.relationPath, rel.path.id), - ...rel.path.quads, - ); + if (bucket.root) { + out.push( + quad( + bucket.id, + SDS.terms.custom("isRoot"), + literal("true"), + SDS.terms.custom("DataDescription"), + ), + ); } - if (rel.value) { - out.push(quad(id, SDS.terms.relationValue, rel.value)); - } + for (const rel of bucket.links) { + const id = blankNode(); + out.push( + quad( + bucket.id, + SDS.terms.relation, + id, + SDS.terms.custom("DataDescription"), + ), + quad( + id, + SDS.terms.relationType, + rel.type, + SDS.terms.custom("DataDescription"), + ), + quad( + id, + SDS.terms.relationBucket, + rel.target, + SDS.terms.custom("DataDescription"), + ), + ); + + if (rel.path) { + out.push( + quad( + id, + SDS.terms.relationPath, + rel.path.id, + SDS.terms.custom("DataDescription"), + ), + ...rel.path.quads.map((x) => + quad( + x.subject, + x.predicate, + x.object, + SDS.terms.custom("DataDescription"), + ), + ), + ); + } - out.push(); - } + if (rel.value) { + out.push( + quad( + id, + SDS.terms.relationValue, + rel.value, + SDS.terms.custom("DataDescription"), + ), + ); + } + } - return out; + return out; } function set_metadata( - channels: Channels, - resultingStream: Term, - sourceStream: Term | undefined, - config: Config, + channels: Channels, + resultingStream: Term, + sourceStream: Term | undefined, + config: Config, ) { - const f = transformMetadata( - resultingStream, - sourceStream, - "sds:Member", - (x, y) => addProcess(x, y, config.quads.id, config.quads.quads), - ); - channels.metadataInput.data((quads) => - channels.metadataOutput.push(serializeQuads(f(parseQuads(quads)))), - ); + const f = transformMetadata( + resultingStream, + sourceStream, + "sds:Member", + (x, y) => addProcess(x, y, config.quads.id, config.quads.quads), + ); + channels.metadataInput.data((quads) => + channels.metadataOutput.push(serializeQuads(f(parseQuads(quads)))), + ); } function read_save(savePath?: string) { - try { - if (savePath) { - return readFileSync(savePath, { encoding: "utf8" }); + try { + if (savePath) { + return readFileSync(savePath, { encoding: "utf8" }); + } + } catch (ex) { + return; } - } catch (ex: any) {} - return; } export async function bucketize( - channels: Channels, - config: Config, - savePath: string | undefined, - sourceStream: Term | undefined, - resultingStream: Term, + channels: Channels, + config: Config, + savePath: string | undefined, + sourceStream: Term | undefined, + resultingStream: Term, ) { - set_metadata(channels, resultingStream, sourceStream, config); - const save = read_save(savePath); - const orchestrator = new BucketizerOrchestrator(config.strategy, save); - const extractor = new Extractor(new CBDShapeExtractor(), sourceStream); - - channels.metadataInput.data((x) => { - const quads = new Parser().parse(x); + set_metadata(channels, resultingStream, sourceStream, config); + const save = read_save(savePath); + const orchestrator = new BucketizerOrchestrator(config.strategy, save); + const extractor = new Extractor(new CBDShapeExtractor(), sourceStream); - const store = new Store(); - store.addQuads(quads); + channels.metadataInput.data((x) => { + const quads = new Parser().parse(x); - const latest = sourceStream || getLatestStream(store); - const latestShape = !!latest ? getLatestShape(latest, store) : undefined; + const store = new Store(); + store.addQuads(quads); - if(latestShape) { - const rdfStore = RdfStore.createDefault(); - quads.forEach(x => rdfStore.addQuad(x)); - const cbd_extract = new CBDShapeExtractor(rdfStore); + const latest = sourceStream || getLatestStream(store); + const latestShape = latest ? getLatestShape(latest, store) : undefined; - extractor.extractor = cbd_extract; - extractor.shape = latestShape; + if (latestShape) { + const rdfStore = RdfStore.createDefault(); + quads.forEach((x) => rdfStore.addQuad(x)); + const cbd_extract = new CBDShapeExtractor(rdfStore); - } - - }); - - Cleanup(async () => { - const state = orchestrator.save(); - await writeState(savePath, state); - }); - - const buckets: { [id: string]: Bucket } = {}; - channels.dataInput.data(async (x) => { - const outputQuads: Quad[] = []; - const quads = new Parser().parse(x); - // Strange, this should be doable with just shacl shape definitions - // But it is a good question to ask, what if an sds:Record is not only cbd? - const records = await extractor.parse_records(quads); - const relatedBuckets = new Set(); - for (let record of records) { - const record_buckets = orchestrator.bucketize( - record, - buckets, - sourceStream?.value || "root", - ); - outputQuads.push( - ...record_to_quads( - record, - resultingStream, - record_buckets.map((x) => buckets[x]), - ), - ); - - for (let b of record_buckets) { - relatedBuckets.add(b); - let parent = buckets[b].parent; - while (parent) { - relatedBuckets.add(parent.id.value); - parent = parent.parent; + extractor.extractor = cbd_extract; + extractor.shape = latestShape; + } + }); + + Cleanup(async () => { + const state = orchestrator.save(); + await writeState(savePath, state); + }); + + const buckets: { [id: string]: Bucket } = {}; + channels.dataInput.data(async (x) => { + const outputQuads: Quad[] = []; + const quads = new Parser().parse(x); + + const records = await extractor.parse_records(quads); + const relatedBuckets = new Set(); + + for (const record of records) { + const record_buckets = orchestrator.bucketize( + record, + buckets, + sourceStream?.value || "root", + ); + outputQuads.push( + ...record_to_quads( + record, + resultingStream, + record_buckets.map((x) => buckets[x]), + ), + ); + + for (const b of record_buckets) { + relatedBuckets.add(b); + let parent = buckets[b].parent; + while (parent) { + relatedBuckets.add(parent.id.value); + parent = parent.parent; + } + } } - } - } - for (let relatedBucket of relatedBuckets.values()) { - outputQuads.push(...bucket_to_quads(buckets[relatedBucket])); - } + for (const relatedBucket of relatedBuckets.values()) { + outputQuads.push(...bucket_to_quads(buckets[relatedBucket])); + } - await channels.dataOutput.push(new N3.Writer().quadsToString(outputQuads)); - }); -} + await channels.dataOutput.push( + new N3.Writer().quadsToString(outputQuads), + ); + }); +} \ No newline at end of file diff --git a/src/bucketizers/bucketizers.ts b/src/bucketizers/bucketizers.ts index 0b64caf..a1f6342 100644 --- a/src/bucketizers/bucketizers.ts +++ b/src/bucketizers/bucketizers.ts @@ -3,114 +3,113 @@ import { Bucket, RdfThing, Record } from "../utils"; import { TREE } from "@treecg/types"; import { Bucketizer, PageFragmentation, SubjectFragmentation } from "."; import { Term } from "rdf-js"; -import { warn } from "console"; -import { Writer } from "n3"; export class PagedBucketizer implements Bucketizer { - private readonly pageSize: number; - private count: number = 0; + private readonly pageSize: number; + private count: number = 0; - constructor(config: PageFragmentation, save?: string) { - this.pageSize = config.pageSize; + constructor(config: PageFragmentation, save?: string) { + this.pageSize = config.pageSize; - if (save) { - this.count = JSON.parse(save); - } - } - - bucketize( - _: Record, - getBucket: (key: string, root?: boolean) => Bucket, - ): Bucket[] { - const index = Math.floor(this.count / this.pageSize); - this.count += 1; - const currentbucket = getBucket("page-" + index, index == 0); - - if (this.count % this.pageSize == 1 && this.count > 1) { - const oldBucket = getBucket("page-" + (index - 1), index - 1 == 0); - oldBucket.immutable = true; - oldBucket.addRelation(currentbucket, TREE.terms.Relation); + if (save) { + this.count = JSON.parse(save); + } } - return [currentbucket]; - } + bucketize( + _: Record, + getBucket: (key: string, root?: boolean) => Bucket, + ): Bucket[] { + const index = Math.floor(this.count / this.pageSize); + this.count += 1; + const currentbucket = getBucket("page-" + index, index == 0); + + if (this.count % this.pageSize == 1 && this.count > 1) { + const oldBucket = getBucket("page-" + (index - 1), index - 1 == 0); + oldBucket.immutable = true; + oldBucket.addRelation(currentbucket, TREE.terms.Relation); + } + + return [currentbucket]; + } - save() { - return JSON.stringify(this.count); - } + save() { + return JSON.stringify(this.count); + } } export class SubjectBucketizer implements Bucketizer { - private readonly path: BasicLensM; - private readonly pathQuads: RdfThing; - private readonly namePath?: BasicLensM; - private readonly defaultName?: string; - - private seen: Set = new Set(); - - constructor(config: SubjectFragmentation, save?: string) { - console.log("path", config.path.constructor.name); - this.path = config.path.mapAll((x) => ({ - value: x.id.value, - literal: x.id, - })); - this.pathQuads = config.pathQuads; - this.namePath = config.namePath; - this.defaultName = config.defaultName; - - if (save) { - this.seen = new Set(JSON.parse(save)); + private readonly path: BasicLensM; + private readonly pathQuads: RdfThing; + private readonly namePath?: BasicLensM; + private readonly defaultName?: string; + + private seen: Set = new Set(); + + constructor(config: SubjectFragmentation, save?: string) { + this.path = config.path.mapAll((x) => ({ + value: x.id.value, + literal: x.id, + })); + this.pathQuads = config.pathQuads; + this.namePath = config.namePath; + this.defaultName = config.defaultName; + + if (save) { + this.seen = new Set(JSON.parse(save)); + } } - } - - bucketize( - record: Record, - getBucket: (key: string, root?: boolean) => Bucket, - ): Bucket[] { - const values = this.path.execute(record.data); - console.log(new Writer().quadsToString(record.data.quads)); - const out: Bucket[] = []; - const root = getBucket("root", true); - - if (values.length === 0 && this.defaultName) { - values.push({ value: this.defaultName }); + bucketize( + record: Record, + getBucket: (key: string, root?: boolean) => Bucket, + ): Bucket[] { + const values = this.path + .execute(record.data) + .filter((x, i, arr) => arr.findIndex((y) => x.value === y.value) == i); + + const out: Bucket[] = []; + + const root = getBucket("root", true); + + if (values.length === 0 && this.defaultName) { + values.push({ value: this.defaultName }); + } + + if (values.length === 0) { + console.error( + "Didn't find bucket, and default name is not set, sadness :(", + ); + } + + for (const value of values) { + const name = value.literal + ? this.namePath?.execute({ + id: value.literal, + quads: record.data.quads, + })[0]?.id.value || value.value + : value.value; + + const bucket = getBucket(name); + + if (!this.seen.has(bucket.id.value)) { + this.seen.add(bucket.id.value); + + root.addRelation( + bucket, + TREE.terms.EqualToRelation, + value.literal, + value.literal ? this.pathQuads : undefined, + ); + } + + out.push(bucket); + } + + return out; } - if (values.length === 0) { - console.error( - "Didn't find bucket, and default name is not set, sadness :(", - ); + save() { + return JSON.stringify([...this.seen.values()]); } - - for (let value of values) { - const name = value.literal - ? this.namePath?.execute({ - id: value.literal, - quads: record.data.quads, - })[0] || value.literal.value - : value.value; - - const bucket = getBucket("bucket-" + name); - - if (!this.seen.has(value.value)) { - this.seen.add(value.value); - - root.addRelation( - bucket, - TREE.terms.EqualToRelation, - value.literal, - value.literal ? this.pathQuads : undefined, - ); - } - - out.push(bucket); - } - - return out; - } - - save() { - return JSON.stringify([...this.seen.values()]); - } } diff --git a/src/bucketizers/index.ts b/src/bucketizers/index.ts index d0df8c9..e0f6334 100644 --- a/src/bucketizers/index.ts +++ b/src/bucketizers/index.ts @@ -8,129 +8,131 @@ import { namedNode } from "../core"; import { PagedBucketizer, SubjectBucketizer } from "./bucketizers"; export const SHAPES_FILE_LOCATION = path.join( - __dirname, - "../../configs/bucketizer_configs.ttl", + __dirname, + "../../configs/bucketizer_configs.ttl", ); export const SHAPES_TEXT = readFileSync(SHAPES_FILE_LOCATION, { - encoding: "utf8", + encoding: "utf8", }); export type BucketizerConfig = { - type: Term; - config: SubjectFragmentation | PageFragmentation | TimebasedFragmentation; + type: Term; + config: SubjectFragmentation | PageFragmentation | TimebasedFragmentation; }; export type SubjectFragmentation = { - path: BasicLensM; - pathQuads: Cont; - namePath?: BasicLensM; - defaultName?: string; + path: BasicLensM; + pathQuads: Cont; + defaultName?: string; + namePath?: BasicLensM; }; export type PageFragmentation = { - pageSize: number; + pageSize: number; }; export type TimebasedFragmentation = { - path: BasicLensM; - maxGranularity: "day" | "hour" | "second"; + path: BasicLensM; + maxGranularity: "day" | "hour" | "second"; }; export interface Bucketizer { - bucketize( - sdsMember: Record, - getBucket: (key: string, root?: boolean) => Bucket, - ): Bucket[]; + bucketize( + sdsMember: Record, + getBucket: (key: string, root?: boolean) => Bucket, + ): Bucket[]; - save(): string; + save(): string; } type Save = { [key: string]: { bucketizer?: Bucketizer; save?: string } }; function createBucketizer(config: BucketizerConfig, save?: string): Bucketizer { - switch (config.type.value) { + switch (config.type.value) { case TREE.custom("SubjectFragmentation"): - return new SubjectBucketizer(config.config, save); + return new SubjectBucketizer(config.config, save); case TREE.custom("PageFragmentation"): - return new PagedBucketizer(config.config, save); + return new PagedBucketizer(config.config, save); case TREE.custom("TimebasedFragmentation"): - throw "Not yet implemented"; - } - throw "Unknown bucketizer " + config.type.value; + throw "Not yet implemented"; + } + throw "Unknown bucketizer " + config.type.value; } export class BucketizerOrchestrator { - private readonly configs: BucketizerConfig[]; + private readonly configs: BucketizerConfig[]; - private saves: Save = {}; + private saves: Save = {}; - constructor(configs: BucketizerConfig[], save?: string) { - this.configs = configs; + constructor(configs: BucketizerConfig[], save?: string) { + this.configs = configs; - if (save) { - this.saves = JSON.parse(save); - } - } - - bucketize( - record: Record, - buckets: { [id: string]: Bucket }, - prefix = "", - ): string[] { - let queue = [prefix]; - - for (let i = 0; i < this.configs.length; i++) { - const todo = queue.slice(); - queue = []; - - for (let prefix of todo) { - const bucketizer = this.getBucketizer(i, prefix); - - const getBucket = (value: string, root?: boolean) => { - const terms = value.split("/"); - const key = terms[terms.length - 1].replaceAll("#", "-"); - // If the requested bucket is the root, it actually is the previous bucket - const id = root ? prefix : prefix + "/" + key; - if (!buckets[id]) { - buckets[id] = new Bucket(namedNode(id), [], false); - } - return buckets[id]; - }; - - const foundBucket = bucketizer.bucketize(record, getBucket); - - for (let bucket of foundBucket) { - queue.push(bucket.id.value); + if (save) { + this.saves = JSON.parse(save); } - } } - if (buckets[prefix]) { - buckets[prefix].root = true; - } + bucketize( + record: Record, + buckets: { [id: string]: Bucket }, + prefix = "", + ): string[] { + let queue = [prefix]; + + for (let i = 0; i < this.configs.length; i++) { + const todo = queue.slice(); + queue = []; + + for (const prefix of todo) { + const bucketizer = this.getBucketizer(i, prefix); + + const getBucket = (value: string, root?: boolean) => { + const terms = value.split("/"); + const key = terms[terms.length - 1] + .replaceAll("#", "-") + .replaceAll(" ", "-"); + // If the requested bucket is the root, it actually is the previous bucket + const id = root ? prefix : prefix + "/" + key; + if (!buckets[id]) { + buckets[id] = new Bucket(namedNode(id), [], false); + } + return buckets[id]; + }; + + const foundBucket = bucketizer.bucketize(record, getBucket); + + for (const bucket of foundBucket) { + queue.push(bucket.id.value); + } + } + } - return queue; - } + if (buckets[prefix]) { + buckets[prefix].root = true; + } - save(): string { - for (let key of Object.keys(this.saves)) { - this.saves[key].save = this.saves[key].bucketizer?.save(); - delete this.saves[key].bucketizer; + return queue; } - return JSON.stringify(this.saves); - } - private getBucketizer(index: number, key: string): Bucketizer { - if (!this.saves[key]) { - this.saves[key] = {}; + save(): string { + for (const key of Object.keys(this.saves)) { + this.saves[key].save = this.saves[key].bucketizer?.save(); + delete this.saves[key].bucketizer; + } + return JSON.stringify(this.saves); } - const save = this.saves[key]; + private getBucketizer(index: number, key: string): Bucketizer { + if (!this.saves[key]) { + this.saves[key] = {}; + } - if (!save.bucketizer) { - save.bucketizer = createBucketizer(this.configs[index], save.save); - } + const save = this.saves[key]; - return save.bucketizer!; - } + if (!save.bucketizer) { + save.bucketizer = createBucketizer(this.configs[index], save.save); + } + + return save.bucketizer!; + } } diff --git a/src/core.ts b/src/core.ts index 643e370..3d72c21 100644 --- a/src/core.ts +++ b/src/core.ts @@ -1,4 +1,4 @@ -import type { Stream, Writer } from "@ajuvercr/js-runner"; +import type { Stream, Writer } from "@rdfc/js-runner"; import { BlankNode, DataFactory, DefaultGraph, NamedNode, Store } from "n3"; import { PROV, RDF, SDS, SHACL } from "@treecg/types"; import { Quad, Quad_Object, Quad_Subject, Term } from "rdf-js"; @@ -17,149 +17,144 @@ export type DatasetTransform = (used: Term | undefined, store: Store) => Term; export type QuadsTransform = (quads: Quad[]) => Quad[]; export function getLatestStream(store: Store): NBNode | undefined { - const streams = store - .getSubjects(RDF.terms.type, SDS.terms.Stream, null) - .filter( - (sub) => store.getQuads(null, PROV.terms.used, sub, null).length === 0, - ); - - if (streams.length != 1) { - console.error( - `Couldn't determine previous stream, extected one got ${streams.length}`, - ); - return undefined; - } + const streams = store + .getSubjects(RDF.terms.type, SDS.terms.Stream, null) + .filter( + (sub) => store.getQuads(null, PROV.terms.used, sub, null).length === 0, + ); + + if (streams.length != 1) { + console.error( + `Couldn't determine previous stream, extected one got ${streams.length}`, + ); + return undefined; + } - return streams[0]; + return streams[0]; } export function getLatestShape(streamId: Term, store: Store): NBNode | undefined { - console.log( - "Found predicates for stream", - streamId, - store.getPredicates(streamId, null, null), - ); - const shapes = store.getObjects( - streamId, - SDS.terms.carries, - new DefaultGraph(), - ); - - if (shapes.length !== 1) { - console.error( - `A sds:stream should carry one type of members, not ${shapes.length}`, + const shapes = store.getObjects( + streamId, + SDS.terms.carries, + new DefaultGraph(), ); - if (shapes.length == 0) return; - } - const shapeIds = shapes.flatMap((id) => - store.getObjects(id, SDS.terms.shape, null), - ); + if (shapes.length !== 1) { + console.error( + `A sds:stream should carry one type of members, not ${shapes.length}`, + ); + if (shapes.length == 0) return; + } - if (shapeIds.length !== 1) { - console.error( - `A sds:stream can only carry one specified shape, not ${shapeIds.length}`, + const shapeIds = shapes.flatMap((id) => + store.getObjects(id, SDS.terms.shape, null), ); - return; - } - return shapeIds[0]; + if (shapeIds.length !== 1) { + console.error( + `A sds:stream can only carry one specified shape, not ${shapeIds.length}`, + ); + return; + } + + return shapeIds[0]; } function getLatestDataset(streamId: Term, store: Store): Term | undefined { - const datasets = store.getObjects(streamId, SDS.terms.dataset, null); + const datasets = store.getObjects(streamId, SDS.terms.dataset, null); - if (datasets.length !== 1) { - console.error( - `A sds:stream should be derived from one dataset, not ${datasets.length}`, - ); - if (datasets.length == 0) return; - } + if (datasets.length !== 1) { + console.error( + `A sds:stream should be derived from one dataset, not ${datasets.length}`, + ); + if (datasets.length == 0) return; + } - return datasets[0]; + return datasets[0]; } export function transformMetadata( - streamId: Term, - sourceStream: Term | undefined, - itemType: string, - gp: AddProcess, - shT?: ShapeTransform, - datasetT?: DatasetTransform, + streamId: Term, + sourceStream: Term | undefined, + itemType: string, + gp: AddProcess, + shT?: ShapeTransform, + datasetT?: DatasetTransform, ): QuadsTransform { - return (quads: Quad[]) => { - const store = new Store(); - store.addQuads(quads); + return (quads: Quad[]) => { + const store = new Store(); + store.addQuads(quads); - const latest = sourceStream || getLatestStream(store); - const latestShape = !!latest ? getLatestShape(latest, store) : undefined; + const latest = sourceStream || getLatestStream(store); + const latestShape = latest ? getLatestShape(latest, store) : undefined; - const activityId = gp(latest, store); + const activityId = gp(latest, store); - const newShape = (shT && shT(latestShape, store)) || undefined; + const newShape = (shT && shT(latestShape, store)) || undefined; - let datasetId = !!latest ? getLatestDataset(latest, store) : undefined; - if (datasetId && datasetT) { - datasetId = datasetT(datasetId, store); - } + let datasetId = latest ? getLatestDataset(latest, store) : undefined; + if (datasetId && datasetT) { + datasetId = datasetT(datasetId, store); + } - const blank = store.createBlankNode(); + const blank = store.createBlankNode(); - store.addQuad(streamId, RDF.terms.type, SDS.terms.Stream); - if (datasetId) { - store.addQuad( + store.addQuad(streamId, RDF.terms.type, SDS.terms.Stream); + if (datasetId) { + store.addQuad( streamId, SDS.terms.dataset, datasetId, - ); - } - store.addQuad(streamId, SDS.terms.carries, blank); - store.addQuad( + ); + } + store.addQuad(streamId, SDS.terms.carries, blank); + store.addQuad( streamId, PROV.terms.wasGeneratedBy, activityId, - ); + ); - store.addQuad(blank, RDF.terms.type, namedNode(itemType)); + store.addQuad(blank, RDF.terms.type, namedNode(itemType)); - if (newShape) { - store.addQuad(blank, SDS.terms.shape, newShape); - } + if (newShape) { + store.addQuad(blank, SDS.terms.shape, newShape); + } - const out: Quad[] = []; - for (let q of store) out.push(q); + const out: Quad[] = []; + for (const q of store) out.push(q); - return out; - }; + return out; + }; } export function createProperty( - store: Store, - path: NBNode, - dataType?: NBNode, - nodeKind?: NBNode, - minCount?: number, - maxCount?: number, + store: Store, + path: NBNode, + dataType?: NBNode, + nodeKind?: NBNode, + minCount?: number, + maxCount?: number, ): BlankNode | NamedNode { - const newId = store.createBlankNode(); + const newId = store.createBlankNode(); - store.addQuad(newId, SHACL.terms.path, path); - if (dataType) { - store.addQuad(newId, SHACL.terms.datatype, dataType); - } + store.addQuad(newId, SHACL.terms.path, path); + if (dataType) { + store.addQuad(newId, SHACL.terms.datatype, dataType); + } - if (nodeKind) { - store.addQuad(newId, SHACL.terms.nodeKind, nodeKind); - } + if (nodeKind) { + store.addQuad(newId, SHACL.terms.nodeKind, nodeKind); + } - if (minCount !== undefined) { - store.addQuad(newId, SHACL.terms.minCount, literal(minCount)); - } - if (maxCount !== undefined) { - store.addQuad(newId, SHACL.terms.maxCount, literal(maxCount)); - } + if (minCount !== undefined) { + store.addQuad(newId, SHACL.terms.minCount, literal(minCount)); + } + if (maxCount !== undefined) { + store.addQuad(newId, SHACL.terms.maxCount, literal(maxCount)); + } - return newId; + return newId; } export type SR = { diff --git a/src/exitHandler.ts b/src/exitHandler.ts index d8c4e23..7fcbc5f 100644 --- a/src/exitHandler.ts +++ b/src/exitHandler.ts @@ -6,21 +6,21 @@ export function Cleanup(callback: () => void | Promise) { callback = callback || noOp; // do app specific cleaning before exiting - process.on('exit', callback); + process.on("exit", callback); const fn = async function () { - await callback() + await callback(); process.exit(2); }; // catch ctrl+c event and exit normally - process.on('SIGINT', fn); + process.on("SIGINT", fn); // process.on("SIGKILL", fn) // process.on("SIGSTOP", fn) - process.on("SIGQUIT", fn) + process.on("SIGQUIT", fn); // process.on("SIG", fn) //catch uncaught exceptions, trace, then exit normally - process.on('uncaughtException', async function (e) { + process.on("uncaughtException", async function (e) { await callback(); process.exit(99); }); diff --git a/src/generator.ts b/src/generator.ts index 91d4021..29d1092 100644 --- a/src/generator.ts +++ b/src/generator.ts @@ -1,4 +1,4 @@ -import type { Writer } from "@ajuvercr/js-runner"; +import type { Writer } from "@rdfc/js-runner"; import { randomInt } from "crypto"; import { DataFactory } from "n3"; @@ -10,52 +10,52 @@ const { namedNode, literal, quad } = DataFactory; const NS = "http://time.is/ns#"; const types = [ - { x: 2, y: 4 }, - { x: 3, y: 4 }, - { x: 2, y: 2 }, - { x: 3, y: 3 }, - { x: 4, y: 4 }, - { x: 5, y: 5 }, - { x: 6, y: 6 }, + { x: 2, y: 4 }, + { x: 3, y: 4 }, + { x: 2, y: 2 }, + { x: 3, y: 3 }, + { x: 4, y: 4 }, + { x: 5, y: 5 }, + { x: 6, y: 6 }, ]; function generateMember(i: number, timestampPath?: Term) { - const id = namedNode(NS + i); - const q = (p: string, o: string) => quad(id, namedNode(p), literal(o)); + const id = namedNode(NS + i); + const q = (p: string, o: string) => quad(id, namedNode(p), literal(o)); - const { x, y } = types[i % types.length]; + const { x, y } = types[i % types.length]; - const quads = [ - q(NS + "x", x + ""), - q(NS + "y", y + ""), - q(NS + "v", randomInt(100) + ""), - ]; + const quads = [ + q(NS + "x", x + ""), + q(NS + "y", y + ""), + q(NS + "v", randomInt(100) + ""), + ]; - if (timestampPath) { - quads.push( - quad(id, timestampPath, literal(Date.now() + "")), - ); - } + if (timestampPath) { + quads.push( + quad(id, timestampPath, literal(Date.now() + "")), + ); + } - return new N3.Writer().quadsToString(quads); + return new N3.Writer().quadsToString(quads); } export async function generate( - writer: Writer, - mCount?: number, - mWait?: number, - timestampPath?: Term, + writer: Writer, + mCount?: number, + mWait?: number, + timestampPath?: Term, ) { - const count = mCount ?? 100000; - const wait = mWait ?? 50.0; - - return async function () { - console.log(`generate starting`); - - for (let i = 0; i < count; i++) { - console.log(`${i}/${count}`); - await writer.push(generateMember(i, timestampPath)); - await new Promise((res) => setTimeout(res, wait)); - } - }; + const count = mCount ?? 100000; + const wait = mWait ?? 50.0; + + return async function () { + console.log("generate starting"); + + for (let i = 0; i < count; i++) { + console.log(`${i}/${count}`); + await writer.push(generateMember(i, timestampPath)); + await new Promise((res) => setTimeout(res, wait)); + } + }; } diff --git a/src/ldesify.ts b/src/ldesify.ts index 60728e1..134416b 100644 --- a/src/ldesify.ts +++ b/src/ldesify.ts @@ -1,4 +1,4 @@ -import type { Stream, Writer } from "@ajuvercr/js-runner"; +import type { Stream, Writer } from "@rdfc/js-runner"; import { Term } from "@rdfjs/types"; import { readFileSync, writeFileSync } from "fs"; import * as n3 from "n3"; @@ -9,26 +9,26 @@ type StateDict = { [identify: string]: n3.Quad[] }; type StateCache = { [identify: string]: string }; function getPrevState(path: string): StateCache { - try { - return JSON.parse(readFileSync(path).toString()); - } catch (ex: any) { - return {}; - } + try { + return JSON.parse(readFileSync(path).toString()); + } catch (ex: unknown) { + return {}; + } } function createCache(quads: n3.Quad[], keys: string[]): string { - let out = ""; - for (let key of keys) { - const v = quads.find((v) => v.predicate.value === key); - if (v) { - out += v.object.value; - } else { - out += "undefined"; + let out = ""; + for (const key of keys) { + const v = quads.find((v) => v.predicate.value === key); + if (v) { + out += v.object.value; + } else { + out += "undefined"; + } + out += "+"; } - out += "+"; - } - return out.slice(0, -1); + return out.slice(0, -1); } const IS_VERSION_OF = namedNode("http://purl.org/dc/terms/isVersionOf"); @@ -36,155 +36,155 @@ const MODIFIED = namedNode("http://purl.org/dc/terms/modified"); const TIMESTAMP = namedNode("http://www.w3.org/2001/XMLSchema#dateTime"); class Transformer { - private readonly modifiedPath: Term; - private readonly isVersionOfPath: Term; - - private cache: StateCache; - - constructor(modifiedPath: Term, isVersionOfPath: Term, cache?: StateCache) { - this.modifiedPath = modifiedPath; - this.isVersionOfPath = isVersionOfPath; - if (cache) { - this.cache = cache; - } else { - this.cache = {}; + private readonly modifiedPath: Term; + private readonly isVersionOfPath: Term; + + private cache: StateCache; + + constructor(modifiedPath: Term, isVersionOfPath: Term, cache?: StateCache) { + this.modifiedPath = modifiedPath; + this.isVersionOfPath = isVersionOfPath; + if (cache) { + this.cache = cache; + } else { + this.cache = {}; + } } - } - save(): string { - return JSON.stringify(this.cache); - } + save(): string { + return JSON.stringify(this.cache); + } - simpleTransform(input: string): string { - const quads = new n3.Parser().parse(input); + simpleTransform(input: string): string { + const quads = new n3.Parser().parse(input); - const newState: StateDict = {}; - const ids = new Set(); - const keys = new Set(); + const newState: StateDict = {}; + const ids = new Set(); + const keys = new Set(); - const out: n3.Quad[] = []; + const out: n3.Quad[] = []; - for (let quad of quads) { - if (!newState[quad.subject.value]) { - newState[quad.subject.value] = []; - } + for (const quad of quads) { + if (!newState[quad.subject.value]) { + newState[quad.subject.value] = []; + } - newState[quad.subject.value].push(quad); + newState[quad.subject.value].push(quad); - ids.add(quad.subject.value); - keys.add(quad.predicate.value); - } + ids.add(quad.subject.value); + keys.add(quad.predicate.value); + } - const key_sorted = [...keys]; - key_sorted.sort(); + const key_sorted = [...keys]; + key_sorted.sort(); - for (let v of Object.values(newState)) { - const subject = v[0].subject; + for (const v of Object.values(newState)) { + const subject = v[0].subject; - const date = new Date().toISOString(); - const sub = namedNode(v[0].subject.value + "#" + date); + const date = new Date().toISOString(); + const sub = namedNode(v[0].subject.value + "#" + date); - out.push( - quad( - sub, + out.push( + quad( + sub, this.modifiedPath, literal(date, TIMESTAMP), - ), // VersionOf - quad(sub, this.isVersionOfPath, subject), // Timestamp - ); + ), // VersionOf + quad(sub, this.isVersionOfPath, subject), // Timestamp + ); - for (let q of v) { - out.push(quad(sub, q.predicate, q.object)); - } + for (const q of v) { + out.push(quad(sub, q.predicate, q.object)); + } + } + + const st = new n3.Writer().quadsToString(out); + return st; } - const st = new n3.Writer().quadsToString(out); - return st; - } + transformCheckState(input: string): string { + const quads = new n3.Parser().parse(input); - transformCheckState(input: string): string { - const quads = new n3.Parser().parse(input); + const newState: StateDict = {}; + const newCache: StateCache = {}; + const ids = new Set(); + const keys = new Set(); - const newState: StateDict = {}; - const newCache: StateCache = {}; - const ids = new Set(); - const keys = new Set(); + const out: n3.Quad[] = []; - const out: n3.Quad[] = []; + for (const quad of quads) { + if (!newState[quad.subject.value]) { + newState[quad.subject.value] = []; + } - for (let quad of quads) { - if (!newState[quad.subject.value]) { - newState[quad.subject.value] = []; - } + newState[quad.subject.value].push(quad); - newState[quad.subject.value].push(quad); + ids.add(quad.subject.value); + keys.add(quad.predicate.value); + } - ids.add(quad.subject.value); - keys.add(quad.predicate.value); - } + const key_sorted = [...keys]; + key_sorted.sort(); - const key_sorted = [...keys]; - key_sorted.sort(); + for (const [k, v] of Object.entries(newState)) { + newCache[k] = createCache(v, key_sorted); - for (let [k, v] of Object.entries(newState)) { - newCache[k] = createCache(v, key_sorted); + if (newCache[k] === this.cache[k]) { + continue; + } - if (newCache[k] === this.cache[k]) { - continue; - } + const subject = v[0].subject; - const subject = v[0].subject; + const date = new Date().toISOString(); + const sub = namedNode(v[0].subject.value + "#" + date); - const date = new Date().toISOString(); - const sub = namedNode(v[0].subject.value + "#" + date); - - out.push( - quad( - sub, + out.push( + quad( + sub, this.modifiedPath, literal(date, TIMESTAMP), - ), // VersionOf - quad(sub, this.isVersionOfPath, subject), // Timestamp - ); + ), // VersionOf + quad(sub, this.isVersionOfPath, subject), // Timestamp + ); - for (let q of v) { - out.push(quad(sub, q.predicate, q.object)); - } - } + for (const q of v) { + out.push(quad(sub, q.predicate, q.object)); + } + } - this.cache = newCache; + this.cache = newCache; - const st = new n3.Writer().quadsToString(out); - return st; - } + const st = new n3.Writer().quadsToString(out); + return st; + } } export function ldesify( - reader: Stream, - writer: Writer, - statePath?: string, - check_properties: boolean = true, - modifiedPath?: Term, - isVersionOfPath?: Term, + reader: Stream, + writer: Writer, + statePath?: string, + check_properties: boolean = true, + modifiedPath?: Term, + isVersionOfPath?: Term, ) { - let cache = {}; - if (statePath) cache = getPrevState(statePath); - const transformer = new Transformer( - modifiedPath || MODIFIED, - isVersionOfPath || IS_VERSION_OF, - cache, - ); - - reader.on("end", () => { - if (statePath) { - writeFileSync(statePath, transformer.save(), { encoding: "utf8" }); - } - }); - - reader.data((x) => { - const st = check_properties - ? transformer.transformCheckState(x) - : transformer.simpleTransform(x); - return writer.push(st); - }); + let cache = {}; + if (statePath) cache = getPrevState(statePath); + const transformer = new Transformer( + modifiedPath || MODIFIED, + isVersionOfPath || IS_VERSION_OF, + cache, + ); + + reader.on("end", () => { + if (statePath) { + writeFileSync(statePath, transformer.save(), { encoding: "utf8" }); + } + }); + + reader.data((x) => { + const st = check_properties + ? transformer.transformCheckState(x) + : transformer.simpleTransform(x); + return writer.push(st); + }); } diff --git a/src/metadatatransforms.ts b/src/metadatatransforms.ts index a43862a..c5a8f22 100644 --- a/src/metadatatransforms.ts +++ b/src/metadatatransforms.ts @@ -1,11 +1,11 @@ import { BlankNode, DataFactory, NamedNode, Store } from "n3"; import { - createProperty, - literal, - NBNode, - SR, - SW, - transformMetadata, + createProperty, + literal, + NBNode, + SR, + SW, + transformMetadata, } from "./core.js"; import { EX, PPLAN, PROV, RDF, SHACL, XSD } from "@treecg/types"; import { Quad, Quad_Object, Term } from "rdf-js"; @@ -13,74 +13,74 @@ import { Quad, Quad_Object, Term } from "rdf-js"; const { namedNode } = DataFactory; function shapeTransform( - id: Term | undefined, - store: Store, + id: Term | undefined, + store: Store, ): BlankNode | NamedNode { - const newId = store.createBlankNode(); - if (id) { - const quads = store.getQuads(id, null, null, null); - store.addQuads(quads); - return newId; - } + const newId = store.createBlankNode(); + if (id) { + const quads = store.getQuads(id, null, null, null); + store.addQuads(quads); + return newId; + } - const intTerm = XSD.terms.integer; + const intTerm = XSD.terms.integer; - const p1 = createProperty( - store, + const p1 = createProperty( + store, EX.terms.custom("x"), intTerm, undefined, 1, 1, - ); - const p2 = createProperty( - store, + ); + const p2 = createProperty( + store, EX.terms.custom("y"), intTerm, undefined, 1, 1, - ); + ); - store.addQuad(newId, RDF.terms.type, SHACL.terms.NodeShape); - store.addQuad(newId, SHACL.terms.targetClass, EX.terms.custom("Point")); + store.addQuad(newId, RDF.terms.type, SHACL.terms.NodeShape); + store.addQuad(newId, SHACL.terms.targetClass, EX.terms.custom("Point")); - store.addQuad(newId, SHACL.terms.property, p1); - store.addQuad(newId, SHACL.terms.property, p2); + store.addQuad(newId, SHACL.terms.property, p1); + store.addQuad(newId, SHACL.terms.property, p2); - return newId; + return newId; } function addProcess(id: Term | undefined, store: Store): Term { - const newId = store.createBlankNode(); - const time = new Date().toISOString(); + const newId = store.createBlankNode(); + const time = new Date().toISOString(); - store.addQuad(newId, RDF.terms.type, PPLAN.terms.Activity); - if (id) { - store.addQuad(newId, PROV.terms.used, id); - } - store.addQuad(newId, PROV.terms.startedAtTime, literal(time)); + store.addQuad(newId, RDF.terms.type, PPLAN.terms.Activity); + if (id) { + store.addQuad(newId, PROV.terms.used, id); + } + store.addQuad(newId, PROV.terms.startedAtTime, literal(time)); - return newId; + return newId; } type Data = { metadata: Quad[] }; export function updateMetadata( - sr: SR, - sw: SW, - sourceStream: string | undefined, - newStream: string, + sr: SR, + sw: SW, + sourceStream: string | undefined, + newStream: string, ) { - const sourceStreamName = sourceStream ? namedNode(sourceStream) : undefined; - const newStreamName = namedNode(newStream); - const f = transformMetadata( - newStreamName, - sourceStreamName, - "sds:Member", - addProcess, - shapeTransform, - ); + const sourceStreamName = sourceStream ? namedNode(sourceStream) : undefined; + const newStreamName = namedNode(newStream); + const f = transformMetadata( + newStreamName, + sourceStreamName, + "sds:Member", + addProcess, + shapeTransform, + ); - sr.metadata.data((quads) => sw.metadata.push(f(quads))); + sr.metadata.data((quads) => sw.metadata.push(f(quads))); } diff --git a/src/readCsv.ts b/src/readCsv.ts index bec5591..bd9e56f 100644 --- a/src/readCsv.ts +++ b/src/readCsv.ts @@ -4,7 +4,7 @@ import { createReadStream } from "fs"; import { DataFactory, Quad } from "n3"; import { blankNode, SW } from "./core.js"; -import type { Writer } from "@ajuvercr/js-runner"; +import type { Writer } from "@rdfc/js-runner"; import { join } from "path"; const { namedNode, literal, quad } = DataFactory; @@ -12,90 +12,90 @@ const { namedNode, literal, quad } = DataFactory; type Data = { data: T }; function createTimedOutPusher( - things: T[], - sw: SW>, - onSend?: (item: T) => T, + things: T[], + sw: SW>, + onSend?: (item: T) => T, ) { - return setTimeout(() => { - setInterval(async () => { - const thing = things.shift(); - if (thing) { - const foobar = onSend ? onSend(thing) : thing; - await sw.data.push(foobar); - } - }, 1000); - }, 2000); + return setTimeout(() => { + setInterval(async () => { + const thing = things.shift(); + if (thing) { + const foobar = onSend ? onSend(thing) : thing; + await sw.data.push(foobar); + } + }, 1000); + }, 2000); } function readCsv( - location: string, - handler: (item: any[]) => void, + location: string, + handler: (item: any[]) => void, ): Promise { - const cwd = process.cwd(); - - return new Promise((res) => { - createReadStream(join(cwd, location)) - .pipe(parse({ delimiter: ",", fromLine: 2 })) - .on("data", handler) - .on("close", () => { - res(undefined); - }); - }); + const cwd = process.cwd(); + + return new Promise((res) => { + createReadStream(join(cwd, location)) + .pipe(parse({ delimiter: ",", fromLine: 2 })) + .on("data", handler) + .on("close", () => { + res(undefined); + }); + }); } export function readCsvAsRDF(location: string, data: Writer) { - const sw = { data }; - let headers: string[] = ["x", "y"]; - const things: Quad[][] = []; - - createTimedOutPusher(things, sw, (things: Quad[]) => [ - ...things, - new Quad( - things[0].subject, - namedNode("http://example.org/ns#time"), - literal(new Date().toISOString(), XSD.terms.dateTime), - ), - ]); - - const handler = async (data: any[]) => { - const out: Quad[] = []; - const id = namedNode("http://example.org/id/" + Math.random()); - - for (let i = 0; i < Math.min(data.length, headers.length); i++) { - out.push( + const sw = { data }; + const headers: string[] = ["x", "y"]; + const things: Quad[][] = []; + + createTimedOutPusher(things, sw, (things: Quad[]) => [ + ...things, new Quad( - id, - namedNode("http://example.org/ns#" + headers[i]), - literal(data[i]), + things[0].subject, + namedNode("http://example.org/ns#time"), + literal(new Date().toISOString(), XSD.terms.dateTime), ), - ); - } - - const newId = blankNode(); - out.push(quad(newId, SDS.terms.payload, id)); - out.push(quad(newId, SDS.terms.stream, namedNode("http://me#csvStream"))); - - things.push(out); - }; - - readCsv(location, handler); + ]); + + const handler = async (data: any[]) => { + const out: Quad[] = []; + const id = namedNode("http://example.org/id/" + Math.random()); + + for (let i = 0; i < Math.min(data.length, headers.length); i++) { + out.push( + new Quad( + id, + namedNode("http://example.org/ns#" + headers[i]), + literal(data[i]), + ), + ); + } + + const newId = blankNode(); + out.push(quad(newId, SDS.terms.payload, id)); + out.push(quad(newId, SDS.terms.stream, namedNode("http://me#csvStream"))); + + things.push(out); + }; + + readCsv(location, handler); } export function readCsvFile(location: string, data: Writer) { - const sw = { data }; - let headers: string[] = ["x", "y"]; - const things: any[] = []; + const sw = { data }; + const headers: string[] = ["x", "y"]; + const things: any[] = []; - createTimedOutPusher(things, sw); - const handler = (data: any[]) => { - const out: any = {}; + createTimedOutPusher(things, sw); + const handler = (data: any[]) => { + const out: any = {}; - for (let i = 0; i < Math.min(data.length, headers.length); i++) { - out[headers[i]] = data[i]; - } + for (let i = 0; i < Math.min(data.length, headers.length); i++) { + out[headers[i]] = data[i]; + } - things.push(out); - }; + things.push(out); + }; - readCsv(location, handler); + readCsv(location, handler); } diff --git a/src/sdsify.ts b/src/sdsify.ts index 8e0fa93..8e12003 100644 --- a/src/sdsify.ts +++ b/src/sdsify.ts @@ -1,46 +1,46 @@ -import type { Stream, Writer } from "@ajuvercr/js-runner"; +import type { Stream, Writer } from "@rdfc/js-runner"; import { LDES, RDF, SDS, SHACL, XSD } from "@treecg/types"; import type { Quad, Term } from "@rdfjs/types"; import { blankNode } from "./core.js"; import { - DataFactory, - NamedNode, - Parser, - Quad_Object, - Quad_Subject, - Writer as NWriter, + DataFactory, + NamedNode, + Parser, + Quad_Object, + Quad_Subject, + Writer as NWriter, } from "n3"; import { CBDShapeExtractor } from "extract-cbd-shape"; import { RdfStore } from "rdf-stores"; import { createHash } from "crypto"; function maybe_parse(data: Quad[] | string): Quad[] { - if (typeof data === "string" || data instanceof String) { - const parse = new Parser(); - return parse.parse(data); - } else { - return data; - } + if (typeof data === "string" || data instanceof String) { + const parse = new Parser(); + return parse.parse(data); + } else { + return data; + } } async function getSubjects( - store: RdfStore, - pred?: Term, - object?: Term, - graph?: Term, + store: RdfStore, + pred?: Term, + object?: Term, + graph?: Term, ): Promise { - const quads = await store.match(null, pred, object, graph).toArray(); - return quads.map((x) => x.subject); + const quads = await store.match(null, pred, object, graph).toArray(); + return quads.map((x) => x.subject); } async function getObjects( - store: RdfStore, - subject?: Term, - pred?: Term, - graph?: Term, + store: RdfStore, + subject?: Term, + pred?: Term, + graph?: Term, ): Promise { - const quads = await store.match(subject, pred, null, graph).toArray(); - return quads.map((x) => x.object); + const quads = await store.match(subject, pred, null, graph).toArray(); + return quads.map((x) => x.object); } // Find the main sh:NodeShape subject of a give Shape Graph. @@ -48,187 +48,187 @@ async function getObjects( // is not referenced by any other shape description. // If more than one is found an exception is thrown. async function extractMainNodeShape(store: RdfStore): Promise { - const nodeShapes = await getSubjects( - store, - RDF.terms.type, - SHACL.terms.NodeShape, - ); - let mainNodeShape = null; - - if (nodeShapes && nodeShapes.length > 0) { - for (const ns of nodeShapes) { - const referenced = await getSubjects(store, undefined, ns); - const isNotReferenced = referenced.length === 0; - - if (isNotReferenced) { - if (!mainNodeShape) { - mainNodeShape = ns; + const nodeShapes = await getSubjects( + store, + RDF.terms.type, + SHACL.terms.NodeShape, + ); + let mainNodeShape = null; + + if (nodeShapes && nodeShapes.length > 0) { + for (const ns of nodeShapes) { + const referenced = await getSubjects(store, undefined, ns); + const isNotReferenced = referenced.length === 0; + + if (isNotReferenced) { + if (!mainNodeShape) { + mainNodeShape = ns; + } else { + throw new Error( + "There are multiple main node shapes in a given shape. Unrelated shapes must be given as separate shape filters", + ); + } + } + } + if (mainNodeShape) { + return mainNodeShape; } else { - throw new Error( - "There are multiple main node shapes in a given shape. Unrelated shapes must be given as separate shape filters", - ); + throw new Error("No main SHACL Node Shapes found in given shape filter"); } - } - } - if (mainNodeShape) { - return mainNodeShape; } else { - throw new Error("No main SHACL Node Shapes found in given shape filter"); + throw new Error("No SHACL Node Shapes found in given shape filter"); } - } else { - throw new Error("No SHACL Node Shapes found in given shape filter"); - } } export function sdsify( - input: Stream, - output: Writer, - streamNode: Term, - timestampPath?: Term, - shapeFilters?: string[], + input: Stream, + output: Writer, + streamNode: Term, + timestampPath?: Term, + shapeFilters?: string[], ) { - input.data(async (input) => { - const dataStore = RdfStore.createDefault(); - maybe_parse(input).forEach((x) => dataStore.addQuad(x)); - console.log("[sdsify] Got input with", dataStore.size, "quads"); - const members: Array<{ subject: Term; quads: Quad[]; timestamp?: Term }> = + input.data(async (input) => { + const dataStore = RdfStore.createDefault(); + maybe_parse(input).forEach((x) => dataStore.addQuad(x)); + console.log("[sdsify] Got input with", dataStore.size, "quads"); + const members: Array<{ subject: Term; quads: Quad[]; timestamp?: Term }> = []; - const t0 = new Date(); - - if (shapeFilters) { - console.log("[sdsify] Extracting SDS members based on given shape(s)"); - - for (const rawShape of shapeFilters) { - const shapeStore = RdfStore.createDefault(); - new Parser().parse(rawShape).forEach((x) => shapeStore.addQuad(x)); - // Initialize shape extractor - const shapeExtractor = new CBDShapeExtractor(shapeStore); - // Find main node shape and target class - const mainNodeShape = await extractMainNodeShape(shapeStore); - const targetClasses = await getObjects( - shapeStore, - mainNodeShape, - SHACL.terms.targetClass, - ); - const targetClass = targetClasses[0]; - - if (!targetClass) { - throw new Error( - "Given main node shape does not define a sh:targetClass", - ); + const t0 = new Date(); + + if (shapeFilters) { + console.log("[sdsify] Extracting SDS members based on given shape(s)"); + + for (const rawShape of shapeFilters) { + const shapeStore = RdfStore.createDefault(); + new Parser().parse(rawShape).forEach((x) => shapeStore.addQuad(x)); + // Initialize shape extractor + const shapeExtractor = new CBDShapeExtractor(shapeStore); + // Find main node shape and target class + const mainNodeShape = await extractMainNodeShape(shapeStore); + const targetClasses = await getObjects( + shapeStore, + mainNodeShape, + SHACL.terms.targetClass, + ); + const targetClass = targetClasses[0]; + + if (!targetClass) { + throw new Error( + "Given main node shape does not define a sh:targetClass", + ); + } + + // Execute the CBDShapeExtractor over every targeted instance of the given shape + const entities = await getSubjects( + dataStore, + RDF.terms.type, + targetClass, + ); + for (const entity of entities) { + members.push({ + subject: entity, + quads: await shapeExtractor.extract( + dataStore, + entity, + mainNodeShape, + ), + }); + } + } + } else { + // Extract members based on a Concise Bound Description (CBD) + const cbdExtractor = new CBDShapeExtractor(); + + const subjects = await getSubjects(dataStore); + const done = new Set(); + for (const sub of subjects) { + if (sub instanceof NamedNode) { + if (done.has(sub.value)) continue; + done.add(sub.value); + members.push({ + subject: sub, + quads: await cbdExtractor.extract(dataStore, sub), + }); + } + } } - // Execute the CBDShapeExtractor over every targeted instance of the given shape - const entities = await getSubjects( - dataStore, - RDF.terms.type, - targetClass, + console.log( + `[sdsify] Members extracted in ${new Date().getTime() - t0.getTime()} ms`, ); - for (const entity of entities) { - members.push({ - subject: entity, - quads: await shapeExtractor.extract( - dataStore, - entity, - mainNodeShape, - ), - }); - } - } - } else { - // Extract members based on a Concise Bound Description (CBD) - const cbdExtractor = new CBDShapeExtractor(); - - const subjects = await getSubjects(dataStore); - const done = new Set(); - for (const sub of subjects) { - if (sub instanceof NamedNode) { - if (done.has(sub.value)) continue; - done.add(sub.value); - members.push({ - subject: sub, - quads: await cbdExtractor.extract(dataStore, sub), - }); - } - } - } - - console.log( - `[sdsify] Members extracted in ${new Date().getTime() - t0.getTime()} ms`, - ); - // Sort members based on the given timestamp value (if any) to avoid out of order writing issues downstream - if (timestampPath) { - for (let member of members) { - member.timestamp = ( - await getObjects(dataStore, member.subject, timestampPath) - )[0]; - } - - members.sort((a, b) => { - const ta = new Date(a.timestamp!.value).getTime(); - const tb = new Date(b.timestamp!.value).getTime(); - return ta - tb; - }); - } + // Sort members based on the given timestamp value (if any) to avoid out of order writing issues downstream + if (timestampPath) { + for (const member of members) { + member.timestamp = ( + await getObjects(dataStore, member.subject, timestampPath) + )[0]; + } + + members.sort((a, b) => { + const ta = new Date(a.timestamp!.value).getTime(); + const tb = new Date(b.timestamp!.value).getTime(); + return ta - tb; + }); + } - let membersCount = 0; + let membersCount = 0; - // Create a unique transaction ID based on the data content and the current system time - const hash = createHash("md5"); - const TRANSACTION_ID = + // Create a unique transaction ID based on the data content and the current system time + const hash = createHash("md5"); + const TRANSACTION_ID = hash - .update( - new NWriter().quadsToString( - dataStore.getQuads(null, null, null, null), - ), - ) - .digest("hex") + + .update( + new NWriter().quadsToString( + dataStore.getQuads(null, null, null, null), + ), + ) + .digest("hex") + "_" + new Date().toISOString(); - for (const obj of members) { - const quads = obj.quads; - const blank = blankNode(); - - quads.push( - DataFactory.quad(blank, SDS.terms.payload, obj.subject), - DataFactory.quad(blank, SDS.terms.stream, streamNode), - // This is not standardized (yet) - DataFactory.quad( - blank, - LDES.terms.custom("transactionId"), - DataFactory.literal(TRANSACTION_ID), - ), - ); - - if (membersCount === Object.keys(members).length - 1) { - // Annotate last member of a transaction - quads.push( - // This is not standardized (yet) - DataFactory.quad( - blank, - LDES.terms.custom("isLastOfTransaction"), - DataFactory.literal("true", XSD.terms.custom("boolean")), - ), + for (const obj of members) { + const quads = obj.quads; + const blank = blankNode(); + + quads.push( + DataFactory.quad(blank, SDS.terms.payload, obj.subject), + DataFactory.quad(blank, SDS.terms.stream, streamNode), + // This is not standardized (yet) + DataFactory.quad( + blank, + LDES.terms.custom("transactionId"), + DataFactory.literal(TRANSACTION_ID), + ), + ); + + if (membersCount === Object.keys(members).length - 1) { + // Annotate last member of a transaction + quads.push( + // This is not standardized (yet) + DataFactory.quad( + blank, + LDES.terms.custom("isLastOfTransaction"), + DataFactory.literal("true", XSD.terms.custom("boolean")), + ), + ); + } + + await output.push(new NWriter().quadsToString(quads)); + membersCount += 1; + } + // HEAD + // + console.log( + `[sdsify] successfully pushed ${membersCount} members in ${ + new Date().getTime() - t0.getTime() + } ms`, ); - } - - await output.push(new NWriter().quadsToString(quads)); - membersCount += 1; - } - // HEAD - // - console.log( - `[sdsify] successfully pushed ${membersCount} members in ${ - new Date().getTime() - t0.getTime() - } ms`, - ); //julianrojas87-master - }); + }); - input.on("end", async () => { - console.log("[sdsify] input channel was closed down"); - await output.end(); - }); -} + input.on("end", async () => { + console.log("[sdsify] input channel was closed down"); + await output.end(); + }); +} \ No newline at end of file diff --git a/src/streamJoin.ts b/src/streamJoin.ts index 53916e2..bc06e0b 100644 --- a/src/streamJoin.ts +++ b/src/streamJoin.ts @@ -1,4 +1,4 @@ -import { Stream, Writer } from "@ajuvercr/js-runner"; +import { Stream, Writer } from "@rdfc/js-runner"; export function streamJoin(inputs: Stream[], output: Writer) { let count = 0; diff --git a/src/utils/index.ts b/src/utils/index.ts index 64ae308..a7866a6 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,5 +1,5 @@ import { Quad, Term } from "@rdfjs/types"; -import { blankNode, literal, namedNode, NBNode, quad } from "../core"; +import { blankNode, literal, NBNode, quad } from "../core"; import { Parser, Quad_Object, Quad_Subject, Writer } from "n3"; import { SDS, XSD } from "@treecg/types"; import { BasicLensM, extractShapes, match, Shapes, subject } from "rdf-lens"; @@ -10,11 +10,11 @@ import * as path from "path"; export const SDS_GRAPH = SDS.terms.custom("DataDescription"); export const SHAPES_FILE_LOCATION = path.join( - __dirname, - "../../configs/sds_shapes.ttl", + __dirname, + "../../configs/sds_shapes.ttl", ); export const SHAPES_TEXT = readFileSync(SHAPES_FILE_LOCATION, { - encoding: "utf8", + encoding: "utf8", }); export type RdfThing = { @@ -45,92 +45,129 @@ export type BucketRelation = { }; function writeRelation(rel: BucketRelation, writer: Writer): Term { - const id = blankNode(); - writer.addQuads([ - quad(id, SDS.terms.relationType, rel.type), - quad(id, SDS.terms.relationBucket, rel.target), - ]); - - if (rel.value) { - writer.addQuad(quad(id, SDS.terms.relationValue, rel.value)); - } - if (rel.path) { + const id = blankNode(); writer.addQuads([ - quad(id, SDS.terms.relationPath, rel.path.id), - ...rel.path.quads, + quad( + id, + SDS.terms.relationType, + rel.type, + SDS.terms.custom("DataDescription"), + ), + quad( + id, + SDS.terms.relationBucket, + rel.target, + SDS.terms.custom("DataDescription"), + ), ]); - } - return id; + + if (rel.value) { + writer.addQuad( + quad( + id, + SDS.terms.relationValue, + rel.value, + SDS.terms.custom("DataDescription"), + ), + ); + } + if (rel.path) { + writer.addQuads([ + quad( + id, + SDS.terms.relationPath, + rel.path.id, + SDS.terms.custom("DataDescription"), + ), + ...rel.path.quads.map((x) => + quad( + x.subject, + x.predicate, + x.object, + SDS.terms.custom("DataDescription"), + ), + ), + ]); + } + return id; } export class Bucket { - id: Term; - parent?: Bucket; - root?: boolean; - immutable?: boolean; - links: BucketRelation[]; - - constructor( - id: Term, - links: BucketRelation[], - root?: boolean, - immutable?: boolean, - parent?: Bucket, - ) { - this.id = id; - this.root = root; - this.immutable = immutable; - this.links = links; - this.parent = parent; - } - - static parse( - bucket: BucketDTO, - bucket_cache: { [id: string]: Bucket }, - ): Bucket { - const parent = bucket.parent - ? Bucket.parse(bucket.parent, bucket_cache) - : undefined; - const links = bucket.links.map(({ target, path, value, type }) => ({ - path, - value, - type, - target: target, - })); - const out = new Bucket( - bucket.id, - links, - bucket.root, - bucket.immutable, - parent, - ); - bucket_cache[bucket.id.value] = out; - return out; - } - - addRelation(target: Bucket, type: Term, value?: Term, path?: RdfThing) { - this.links.push({ type, value, path, target: target.id }); - target.parent = this; - } - - write(writer: Writer) { - const id = this.id; - const relations = this.links - .map((rel) => writeRelation(rel, writer)) - .map((rel) => quad(id, SDS.terms.relation, rel)); - - if (this.root) { - relations.push( - quad( - id, - SDS.terms.custom("isRoot"), - literal("true", XSD.terms.custom("boolean")), - ), - ); + id: Term; + parent?: Bucket; + root?: boolean; + immutable?: boolean; + links: BucketRelation[]; + + constructor( + id: Term, + links: BucketRelation[], + root?: boolean, + immutable?: boolean, + parent?: Bucket, + ) { + this.id = id; + this.root = root; + this.immutable = immutable; + this.links = links; + this.parent = parent; + } + + static parse( + bucket: BucketDTO, + bucket_cache: { [id: string]: Bucket }, + ): Bucket { + const parent = bucket.parent + ? Bucket.parse(bucket.parent, bucket_cache) + : undefined; + const links = bucket.links.map(({ target, path, value, type }) => ({ + path, + value, + type, + target: target, + })); + const out = new Bucket( + bucket.id, + links, + bucket.root, + bucket.immutable, + parent, + ); + bucket_cache[bucket.id.value] = out; + return out; + } + + addRelation(target: Bucket, type: Term, value?: Term, path?: RdfThing) { + this.links.push({ type, value, path, target: target.id }); + target.parent = this; } - writer.addQuads(relations); - } + write(writer: Writer) { + const id = this.id; + const relations = this.links + .map((rel) => writeRelation(rel, writer)) + .map((rel) => + quad( + id, + SDS.terms.relation, + rel, + SDS.terms.custom("DataDescription"), + ), + ); + + if (this.root) { + relations.push( + quad( + id, + SDS.terms.custom("isRoot"), + literal("true", XSD.terms.custom("boolean")), + SDS.terms.custom("DataDescription"), + ), + ); + } + + writer.addQuads(relations); + } } interface RecordDTO { @@ -140,92 +177,104 @@ interface RecordDTO { } export class Record { - stream: Term; - data: RdfThing; - bucket?: Bucket; - - constructor(data: RdfThing, stream: Term, bucket?: Bucket) { - this.stream = stream; - this.data = data; - this.bucket = bucket; - } - - static async parse( - { stream, data, bucket }: RecordDTO, - store: RdfStore, - extractor: CBDShapeExtractor, - bucket_cache: { [id: string]: Bucket }, - shape?: NBNode, - ): Promise { - const thingQuads = await extractor.extract(store, data, shape); - - let actual_bucket: Bucket | undefined; - if (bucket) { - actual_bucket = Bucket.parse(bucket, bucket_cache); + stream: Term; + data: RdfThing; + bucket?: Bucket; + + constructor(data: RdfThing, stream: Term, bucket?: Bucket) { + this.stream = stream; + this.data = data; + this.bucket = bucket; } - return new Record({ id: data, quads: thingQuads }, stream, actual_bucket); - } + static parse( + { stream, data, bucket }: RecordDTO, + store: RdfStore, + bucket_cache: { [id: string]: Bucket }, + ): Record { + const quads = store + .getQuads() + .filter((q) => q.graph.value !== SDS.custom("DataDescription")); - write(writer: Writer) { - const id = blankNode(); + let actual_bucket: Bucket | undefined; + if (bucket) { + actual_bucket = Bucket.parse(bucket, bucket_cache); + } - const quads = [ - quad(id, SDS.terms.payload, this.data.id), - quad(id, SDS.terms.stream, this.stream), - ]; - if (this.bucket) { - quads.push(quad(id, SDS.terms.bucket, this.bucket.id)); - this.bucket.write(writer); + return new Record({ id: data, quads }, stream, actual_bucket); + } + + write(writer: Writer) { + const id = blankNode(); + + const quads = [ + quad( + id, + SDS.terms.payload, + this.data.id, + SDS.terms.custom("DataDescription"), + ), + quad( + id, + SDS.terms.stream, + this.stream, + SDS.terms.custom("DataDescription"), + ), + ]; + if (this.bucket) { + quads.push( + quad( + id, + SDS.terms.bucket, + this.bucket.id, + SDS.terms.custom("DataDescription"), + ), + ); + this.bucket.write(writer); + } + writer.addQuads(quads); } - writer.addQuads(quads); - } } export class Extractor { - extractor: CBDShapeExtractor; - shapes: Shapes; - lens: BasicLensM; - shape?: NBNode; - - bucket_cache: { [id: string]: Bucket } = {}; - - constructor(extractor: CBDShapeExtractor, stream?: Term) { - this.extractor = extractor; - - const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); - this.shapes = extractShapes(quads, { - "#Bucket": (item) => { - return Bucket.parse(item, this.bucket_cache); - }, - }); - - this.lens = >match( - undefined, - SDS.terms.stream, - stream, - ) - .thenAll(subject) - .thenSome(this.shapes.lenses["#Record"]) - .mapAll((x) => x); - } - - async parse_records(quads: Quad[]): Promise { - const store = RdfStore.createDefault(); - quads.forEach((quad) => store.addQuad(quad)); - - const dtos = this.lens.execute(quads); - - return await Promise.all( - dtos.map((dto) => { - return Record.parse( - dto, - store, - this.extractor, - this.bucket_cache, - this.shape, + extractor: CBDShapeExtractor; + shapes: Shapes; + lens: BasicLensM; + shape?: NBNode; + + bucket_cache: { [id: string]: Bucket } = {}; + + constructor(extractor: CBDShapeExtractor, stream?: Term) { + this.extractor = extractor; + + const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); + this.shapes = extractShapes(quads, { + "#Bucket": (item) => { + return Bucket.parse(item, this.bucket_cache); + }, + }); + + this.lens = >match( + undefined, + SDS.terms.stream, + stream, + ) + .thenAll(subject) + .thenSome(this.shapes.lenses["#Record"]) + .mapAll((x) => x); + } + + async parse_records(quads: Quad[]): Promise { + const store = RdfStore.createDefault(); + quads.forEach((quad) => store.addQuad(quad)); + + const dtos = this.lens.execute(quads); + + return await Promise.all( + dtos.map((dto) => { + // This can be an apply like #Bucket + return Record.parse(dto, store, this.bucket_cache); + }), ); - }), - ); - } -} + } +} \ No newline at end of file diff --git a/test/bucketizer.test.ts b/test/bucketizer.test.ts index 1238b95..2e65638 100644 --- a/test/bucketizer.test.ts +++ b/test/bucketizer.test.ts @@ -1,26 +1,26 @@ -import { describe, expect, test } from "@jest/globals"; +import { describe, expect, test } from "vitest"; import { DataFactory, Parser } from "n3"; import { extractShapes } from "rdf-lens"; import { - BucketizerOrchestrator, - Config, - PageFragmentation, - SHAPES_TEXT, - SubjectFragmentation, - TimebasedFragmentation, + BucketizerConfig, + BucketizerOrchestrator, + PageFragmentation, + SHAPES_TEXT, + SubjectFragmentation, + TimebasedFragmentation, } from "../src/bucketizers/index"; import { Bucket, Record } from "../src/utils"; -const { namedNode, blankNode, literal, quad } = DataFactory; +const { namedNode, literal, quad } = DataFactory; describe("Bucketizer configs", () => { - const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); + const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); - const shapes = extractShapes(quads); - const lens = shapes.lenses["https://w3id.org/tree#FragmentationStrategy"]; + const shapes = extractShapes(quads); + const lens = shapes.lenses["https://w3id.org/tree#FragmentationStrategy"]; - test("Subject Page", () => { - const quadsStr = ` + test("Subject Page", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -32,25 +32,28 @@ describe("Bucketizer configs", () => { a tree:SubjectFragmentation; tree:fragmentationPath ( ). `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const output: Config = lens.execute({ id: namedNode("a"), quads }); - - expect(output.type.value).toBe( - "https://w3id.org/tree#SubjectFragmentation", - ); - const config = output.config; - expect(config.path).toBeDefined(); - - const applied = config.path.execute({ id: namedNode("test"), quads }); - expect(applied.map((x) => x.id.value)).toEqual(["42"]); - - expect(config.pathQuads).toBeDefined(); - expect(config.pathQuads.id.termType).toBe("BlankNode"); - expect(config.pathQuads.quads.length).toBe(4); - }); - - test("Subject Page - simple path", () => { - const quadsStr = ` + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const output: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + + expect(output.type.value).toBe( + "https://w3id.org/tree#SubjectFragmentation", + ); + const config = output.config; + expect(config.path).toBeDefined(); + + const applied = config.path.execute({ id: namedNode("test"), quads }); + expect(applied.map((x) => x.id.value)).toEqual(["42"]); + + expect(config.pathQuads).toBeDefined(); + expect(config.pathQuads.id.termType).toBe("BlankNode"); + expect(config.pathQuads.quads.length).toBe(4); + }); + + test("Subject Page - simple path", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -62,22 +65,25 @@ describe("Bucketizer configs", () => { a tree:SubjectFragmentation; tree:fragmentationPath . `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const output: Config = lens.execute({ id: namedNode("a"), quads }); - - expect(output.type.value).toBe( - "https://w3id.org/tree#SubjectFragmentation", - ); - const config = output.config; - expect(config.path).toBeDefined(); - - expect(config.pathQuads).toBeDefined(); - expect(config.pathQuads.id.termType).toBe("NamedNode"); - expect(config.pathQuads.quads.length).toBe(0); - }); - - test("Timebased", () => { - const quadsStr = ` + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const output: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + + expect(output.type.value).toBe( + "https://w3id.org/tree#SubjectFragmentation", + ); + const config = output.config; + expect(config.path).toBeDefined(); + + expect(config.pathQuads).toBeDefined(); + expect(config.pathQuads.id.termType).toBe("NamedNode"); + expect(config.pathQuads.quads.length).toBe(0); + }); + + test("Timebased", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -90,23 +96,26 @@ describe("Bucketizer configs", () => { tree:maxGranularity "hour"; tree:fragmentationPath ( ). `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const output: Config = lens.execute({ id: namedNode("a"), quads }); - - expect(output.type.value).toBe( - "https://w3id.org/tree#TimebasedFragmentation", - ); - const config = output.config; - expect(config.path).toBeDefined(); - - expect(config.maxGranularity).toEqual("hour"); - - const applied = config.path.execute({ id: namedNode("test"), quads }); - expect(applied.map((x) => x.id.value)).toEqual(["42"]); - }); - - test("Paged", () => { - const quadsStr = ` + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const output: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + + expect(output.type.value).toBe( + "https://w3id.org/tree#TimebasedFragmentation", + ); + const config = output.config; + expect(config.path).toBeDefined(); + + expect(config.maxGranularity).toEqual("hour"); + + const applied = config.path.execute({ id: namedNode("test"), quads }); + expect(applied.map((x) => x.id.value)).toEqual(["42"]); + }); + + test("Paged", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -115,23 +124,28 @@ describe("Bucketizer configs", () => { a tree:PageFragmentation; tree:pageSize 42. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const output: Config = lens.execute({ id: namedNode("a"), quads }); - - expect(output.type.value).toBe("https://w3id.org/tree#PageFragmentation"); - const config = output.config; - expect(config.pageSize).toBe(42); - }); + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const output: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + + expect(output.type.value).toBe( + "https://w3id.org/tree#PageFragmentation", + ); + const config = output.config; + expect(config.pageSize).toBe(42); + }); }); describe("Bucketizer behavior", () => { - const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); + const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); - const shapes = extractShapes(quads); - const lens = shapes.lenses["https://w3id.org/tree#FragmentationStrategy"]; + const shapes = extractShapes(quads); + const lens = shapes.lenses["https://w3id.org/tree#FragmentationStrategy"]; - test("Paged", () => { - const quadsStr = ` + test("Paged", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -140,30 +154,33 @@ describe("Bucketizer behavior", () => { a tree:PageFragmentation; tree:pageSize 2. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const output: Config = lens.execute({ id: namedNode("a"), quads }); - - const orchestrator = new BucketizerOrchestrator([output]); - const stream = namedNode("MyStream"); - - const buckets: { [id: string]: Bucket } = {}; - const recordBuckets: string[] = []; - for (let member of [ - new Record({ id: namedNode("a1"), quads: [] }, stream), - new Record({ id: namedNode("a2"), quads: [] }, stream), - new Record({ id: namedNode("a3"), quads: [] }, stream), - ]) { - recordBuckets.push(...orchestrator.bucketize(member, buckets)); - } - - expect(recordBuckets).toEqual(["", "", "/page-1"]); - expect(buckets[""].root).toBeTruthy(); - expect(buckets[""].links.length).toBe(1); - expect(buckets["/page-1"].links.length).toBe(0); - }); - - test("Subject", () => { - const quadsStr = ` + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const output: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + + const orchestrator = new BucketizerOrchestrator([output]); + const stream = namedNode("MyStream"); + + const buckets: { [id: string]: Bucket } = {}; + const recordBuckets: string[] = []; + for (const member of [ + new Record({ id: namedNode("a1"), quads: [] }, stream), + new Record({ id: namedNode("a2"), quads: [] }, stream), + new Record({ id: namedNode("a3"), quads: [] }, stream), + ]) { + recordBuckets.push(...orchestrator.bucketize(member, buckets)); + } + + expect(recordBuckets).toEqual(["", "", "/page-1"]); + expect(buckets[""].root).toBeTruthy(); + expect(buckets[""].links.length).toBe(1); + expect(buckets["/page-1"].links.length).toBe(0); + }); + + test("Subject", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -171,29 +188,85 @@ describe("Bucketizer behavior", () => { a tree:SubjectFragmentation; tree:fragmentationPath ( ). `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const output: Config = lens.execute({ id: namedNode("a"), quads }); - - const orchestrator = new BucketizerOrchestrator([output]); - const stream = namedNode("MyStream"); - - const buckets: { [id: string]: Bucket } = {}; - const recordBuckets: string[] = []; - for (let member of [ - new Record({ id: namedNode("a1"), quads: [] }, stream), - new Record({ id: namedNode("a2"), quads: [] }, stream), - new Record({ id: namedNode("a2"), quads: [] }, stream), - ]) { - recordBuckets.push(...orchestrator.bucketize(member, buckets)); - } - - expect(recordBuckets).toEqual(["/bucket-a1", "/bucket-a2", "/bucket-a2"]); - expect(buckets[""].root).toBeTruthy(); - expect(buckets[""].links.length).toBe(2); - }); - - test("Combined", () => { - const quadsStr = ` + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const output: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + + const orchestrator = new BucketizerOrchestrator([output]); + const stream = namedNode("MyStream"); + + const buckets: { [id: string]: Bucket } = {}; + const recordBuckets: string[] = []; + for (const member of [ + new Record({ id: namedNode("a1"), quads: [] }, stream), + new Record({ id: namedNode("a2"), quads: [] }, stream), + new Record({ id: namedNode("a2"), quads: [] }, stream), + ]) { + recordBuckets.push(...orchestrator.bucketize(member, buckets)); + } + + expect(recordBuckets).toEqual(["/a1", "/a2", "/a2"]); + expect(buckets[""].root).toBeTruthy(); + expect(buckets[""].links.length).toBe(2); + }); + + test("Subject with name", () => { + const quadsStr = ` +@prefix tree: . +@prefix ex: . +@prefix sds: . + + a tree:SubjectFragmentation; + tree:fragmentationPath ( ); + tree:fragmentationPathName ex:test. +`; + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const output: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + + const orchestrator = new BucketizerOrchestrator([output]); + const stream = namedNode("MyStream"); + + const buckets: { [id: string]: Bucket } = {}; + const recordBuckets: string[] = []; + const pred = namedNode("http://example.org/test"); + for (const member of [ + new Record( + { + id: namedNode("a1"), + quads: [quad(namedNode("a1"), pred, literal("test-a1"))], + }, + stream, + ), + new Record( + { + id: namedNode("a2"), + quads: [quad(namedNode("a2"), pred, literal("test-a1"))], + }, + stream, + ), + new Record( + { + id: namedNode("a3"), + quads: [quad(namedNode("a3"), pred, literal("test-a2"))], + }, + stream, + ), + ]) { + recordBuckets.push(...orchestrator.bucketize(member, buckets)); + } + + expect(recordBuckets).toEqual(["/test-a1", "/test-a1", "/test-a2"]); + expect(buckets[""].root).toBeTruthy(); + expect(buckets[""].links.length).toBe(2); + }); + + test("Combined", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -204,35 +277,36 @@ describe("Bucketizer behavior", () => { a tree:PageFragmentation; tree:pageSize 2. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const config1: Config = lens.execute({ id: namedNode("a"), quads }); - const config2: Config = lens.execute({ id: namedNode("b"), quads }); - - const orchestrator = new BucketizerOrchestrator([config1, config2]); - const stream = namedNode("MyStream"); - - const buckets: { [id: string]: Bucket } = {}; - const recordBuckets: string[] = []; - for (let member of [ - new Record({ id: namedNode("a1"), quads: [] }, stream), - new Record({ id: namedNode("a2"), quads: [] }, stream), - new Record({ id: namedNode("a2"), quads: [] }, stream), - new Record({ id: namedNode("a2"), quads: [] }, stream), - ]) { - recordBuckets.push(...orchestrator.bucketize(member, buckets)); - } - - expect(Object.keys(buckets).length).toBe(4) - expect(recordBuckets).toEqual([ - "/bucket-a1", - "/bucket-a2", - "/bucket-a2", - "/bucket-a2/page-1", - ]); - expect(buckets[""].root).toBeTruthy(); - expect(buckets[""].links.length).toBe(2); - expect(buckets["/bucket-a2"].links.length).toBe(1); - expect(buckets["/bucket-a2/page-1"].links.length).toBe(0); - expect(buckets["/bucket-a1"].links.length).toBe(0); - }); + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const config1: BucketizerConfig = lens.execute({ + id: namedNode("a"), + quads, + }); + const config2: BucketizerConfig = lens.execute({ + id: namedNode("b"), + quads, + }); + + const orchestrator = new BucketizerOrchestrator([config1, config2]); + const stream = namedNode("MyStream"); + + const buckets: { [id: string]: Bucket } = {}; + const recordBuckets: string[] = []; + + for (const member of [ + new Record({ id: namedNode("a1"), quads: [] }, stream), + new Record({ id: namedNode("a2"), quads: [] }, stream), + new Record({ id: namedNode("a2"), quads: [] }, stream), + new Record({ id: namedNode("a2"), quads: [] }, stream), + ]) { + recordBuckets.push(...orchestrator.bucketize(member, buckets)); + } + + expect(Object.keys(buckets).length).toBe(4); + expect(recordBuckets).toEqual(["/a1", "/a2", "/a2", "/a2/page-1"]); + expect(buckets[""].root).toBeTruthy(); + expect(buckets["/a2"].parent!.id.value).toBe(""); + expect(buckets["/a2/page-1"].parent!.id.value).toBe("/a2"); + expect(buckets["/a1"].parent!.id.value).toBe(""); + }); }); diff --git a/test/processors.test.ts b/test/processors.test.ts index 0da5dcd..dc17b77 100644 --- a/test/processors.test.ts +++ b/test/processors.test.ts @@ -1,9 +1,9 @@ -import { describe, expect, test } from "@jest/globals"; -import { extractProcessors, extractSteps, Source } from "@ajuvercr/js-runner"; +import { describe, expect, test } from "vitest"; +import { extractProcessors, extractSteps, Source } from "@rdfc/js-runner"; import { Parser } from "n3"; describe("SDS processors tests", async () => { - const pipeline = ` + const pipeline = ` @prefix tree: . @prefix js: . @prefix ws: . @@ -13,7 +13,7 @@ describe("SDS processors tests", async () => { @prefix xsd: . @prefix sh: . -<> owl:imports <./node_modules/@ajuvercr/js-runner/ontology.ttl>, +<> owl:imports <./node_modules/@rdfc/js-runner/ontology.ttl>, <./configs/bucketizer.ttl>, <./configs/generator.ttl>, <./configs/ldesify.ttl>, @@ -31,10 +31,10 @@ describe("SDS processors tests", async () => { a js:JsReaderChannel. `; - const baseIRI = process.cwd() + "/config.ttl"; + const baseIRI = process.cwd() + "/config.ttl"; - test("js:Bucketize is properly defined", async () => { - const processor = ` + test("js:Bucketize is properly defined", async () => { + const processor = ` a js:Bucketize; js:channels [ js:dataInput ; @@ -54,116 +54,76 @@ describe("SDS processors tests", async () => { js:savePath <./save.js>. `; - const source: Source = { - value: pipeline + processor, - baseIRI, - type: "memory", - }; + const source: Source = { + value: pipeline + processor, + baseIRI, + type: "memory", + }; - const { - processors, - quads, - shapes: config, - } = await extractProcessors(source); + const { + processors, + quads, + shapes: config, + } = await extractProcessors(source); - const proc = processors[0]; - expect(proc).toBeDefined(); + const proc = processors[0]; + expect(proc).toBeDefined(); - const argss = extractSteps(proc, quads, config); - expect(argss.length).toBe(1); - expect(argss[0].length).toBe(5); + const argss = extractSteps(proc, quads, config); + expect(argss.length).toBe(1); + expect(argss[0].length).toBe(5); - const [[c, loc, save, si, so]] = argss; + const [[c, loc, save, si, so]] = argss; - testReader(c.dataInput); - testReader(c.metadataInput); - testWriter(c.dataOutput); - testWriter(c.metadataOutput); + testReader(c.dataInput); + testReader(c.metadataInput); + testWriter(c.dataOutput); + testWriter(c.metadataOutput); - expect(loc).toBeDefined(); - expect(si.value).toBe("http://testStream"); - expect(so.value).toBe("http://newStream"); - expect(save).toBe(process.cwd() + "/save.js"); + expect(loc).toBeDefined(); + expect(si.value).toBe("http://testStream"); + expect(so.value).toBe("http://newStream"); + expect(save).toBe(process.cwd() + "/save.js"); - await checkProc(proc.file, proc.func); - }); + await checkProc(proc.file, proc.func); + }); - test("js:Ldesify is properly defined", async () => { - const processor = ` + test("js:Ldesify is properly defined", async () => { + const processor = ` [ ] a js:Ldesify; js:input ; js:path "save.json"; js:output . `; - const source: Source = { - value: pipeline + processor, - baseIRI, - type: "memory", - }; - - const { - processors, - quads, - shapes: config, - } = await extractProcessors(source); - - const proc = processors[0]; - expect(proc).toBeDefined(); - - const argss = extractSteps(proc, quads, config); - expect(argss.length).toBe(1); - expect(argss[0].length).toBe(6); - - const [[input, output, save]] = argss; - testReader(input); - testWriter(output); - expect(save).toBe("save.json"); - await checkProc(proc.file, proc.func); - }); - - test("js:Ldesify is properly defined, optionals", async () => { - const processor = ` - [ ] a js:Ldesify; - js:input ; - js:path "save.json"; - js:checkProps false; - js:timestampPath ; - js:versionOfPath ; - js:output . - `; - - const source: Source = { - value: pipeline + processor, - baseIRI, - type: "memory", - }; - - const { - processors, - quads, - shapes: config, - } = await extractProcessors(source); - - const proc = processors[0]; - expect(proc).toBeDefined(); - - const argss = extractSteps(proc, quads, config); - expect(argss.length).toBe(1); - expect(argss[0].length).toBe(6); - - const [[input, output, save, checkProps, timestamp, version]] = argss; - testReader(input); - testWriter(output); - expect(save).toBe("save.json"); - expect(checkProps).toBe(false); - expect(timestamp.value.endsWith("timestamp")).toBe(true); - expect(version.value.endsWith("version")).toBe(true); - await checkProc(proc.file, proc.func); - }); - - test("generator", async () => { - const processor = ` + const source: Source = { + value: pipeline + processor, + baseIRI, + type: "memory", + }; + + const { + processors, + quads, + shapes: config, + } = await extractProcessors(source); + + const proc = processors[0]; + expect(proc).toBeDefined(); + + const argss = extractSteps(proc, quads, config); + expect(argss.length).toBe(1); + expect(argss[0].length).toBe(6); + + const [[input, output, save]] = argss; + testReader(input); + testWriter(output); + expect(save).toBe("save.json"); + await checkProc(proc.file, proc.func); + }); + + test("generator", async () => { + const processor = ` [ ] a js:Generate; js:count 5; js:waitMS 500; @@ -171,131 +131,96 @@ describe("SDS processors tests", async () => { js:output . `; - const source: Source = { - value: pipeline + processor, - baseIRI, - type: "memory", - }; - - const { - processors, - quads, - shapes: config, - } = await extractProcessors(source); - - const proc = processors[0]; - expect(proc).toBeDefined(); - - const argss = extractSteps(proc, quads, config); - expect(argss.length).toBe(1); - expect(argss[0].length).toBe(4); - - const [[output, count, wait, path]] = argss; - testWriter(output); - expect(count).toBe(5); - expect(wait).toBe(500); - expect(path.value).toBe("http://out.com#out"); - - await checkProc(proc.file, proc.func); - }); - - test("sdsify", async () => { - const processor = ` - [ ] a js:Sdsify; - js:input ; - js:output ; - js:stream ; - js:timestampPath ; - js:shapeFilter """ - @prefix sh: . - @prefix ex: . - - [ ] a sh:NodeShape; - sh:targetClass ex:SomeClass. - """. - `; - - const source: Source = { - value: pipeline + processor, - baseIRI, - type: "memory", - }; - - const { - processors, - quads, - shapes: config, - } = await extractProcessors(source); - - const proc = processors[0]; - expect(proc).toBeDefined(); - - const argss = extractSteps(proc, quads, config); - expect(argss.length).toBe(1); - expect(argss[0].length).toBe(5); - - const [[input, output, stream, timestamp, shapeFilters]] = argss; - - testReader(input); - testWriter(output); - expect(stream.value).toBe("http://me.com/stream"); - expect(timestamp.value).toBe("http://ex.org/timestamp"); - expect(new Parser().parse(shapeFilters[0]).length).toBe(2); - - await checkProc(proc.file, proc.func); - }); - - test("streamJoin", async () => { - const processor = ` - [ ] a js:StreamJoin; - js:input ; - js:input ; - js:output . - `; - - const source: Source = { - value: pipeline + processor, - baseIRI, - type: "memory", - }; - - const { - processors, - quads, - shapes: config, - } = await extractProcessors(source); - - const proc = processors[0]; - expect(proc).toBeDefined(); - - const argss = extractSteps(proc, quads, config); - expect(argss.length).toBe(1); - expect(argss[0].length).toBe(2); - - const [[inputs, output]] = argss; - testReader(inputs[0]); - testReader(inputs[1]); - testWriter(output); - - await checkProc(proc.file, proc.func); - }); + const source: Source = { + value: pipeline + processor, + baseIRI, + type: "memory", + }; + + const { + processors, + quads, + shapes: config, + } = await extractProcessors(source); + + const proc = processors[0]; + expect(proc).toBeDefined(); + + const argss = extractSteps(proc, quads, config); + expect(argss.length).toBe(1); + expect(argss[0].length).toBe(4); + + const [[output, count, wait, path]] = argss; + testWriter(output); + expect(count).toBe(5); + expect(wait).toBe(500); + expect(path.value).toBe("http://out.com#out"); + + await checkProc(proc.file, proc.func); + }); + + test("sdsify", async () => { + const processor = ` + [ ] a js:Sdsify; + js:input ; + js:output ; + js:stream ; + js:timestampPath ; + js:shapeFilter """ + @prefix sh: . + @prefix ex: . + + [ ] a sh:NodeShape; + sh:targetClass ex:SomeClass. + """. + `; + + const source: Source = { + value: pipeline + processor, + baseIRI, + type: "memory", + }; + + const { + processors, + quads, + shapes: config, + } = await extractProcessors(source); + + const proc = processors[0]; + expect(proc).toBeDefined(); + + const argss = extractSteps(proc, quads, config); + expect(argss.length).toBe(1); + expect(argss[0].length).toBe(5); + + const [[input, output, stream, timestamp, shapeFilters]] = argss; + + testReader(input); + testWriter(output); + expect(stream.value).toBe("http://me.com/stream"); + expect(timestamp.value).toBe("http://ex.org/timestamp"); + expect(new Parser().parse(shapeFilters[0]).length).toBe(2); + + await checkProc(proc.file, proc.func); + }); }); -function testReader(arg: any) { - expect(arg).toBeInstanceOf(Object); - // expect(arg.config.channel).toBeDefined(); - // expect(arg.config.channel.id).toBeDefined(); - expect(arg.ty).toBeDefined(); +function testReader(arg: { ty: string }) { + expect(arg).toBeInstanceOf(Object); + // expect(arg.config.channel).toBeDefined(); + // expect(arg.config.channel.id).toBeDefined(); + expect(arg.ty).toBeDefined(); } -function testWriter(arg: any) { - expect(arg).toBeInstanceOf(Object); - // expect(arg.config.channel).toBeDefined(); - // expect(arg.config.channel.id).toBeDefined(); - expect(arg.ty).toBeDefined(); +function testWriter(arg: { ty: string }) { + expect(arg).toBeInstanceOf(Object); + // expect(arg.config.channel).toBeDefined(); + // expect(arg.config.channel.id).toBeDefined(); + expect(arg.ty).toBeDefined(); } async function checkProc(location: string, func: string) { - const mod = await import("file://" + location); - expect(mod[func]).toBeDefined(); + const mod = await import("file://" + location); + expect(mod[func]).toBeDefined(); } diff --git a/test/sdsify.test.ts b/test/sdsify.test.ts index 8ed144b..abbb977 100644 --- a/test/sdsify.test.ts +++ b/test/sdsify.test.ts @@ -1,5 +1,5 @@ -import { describe, test, expect } from "@jest/globals"; -import { SimpleStream } from "@ajuvercr/js-runner"; +import { describe, test, expect } from "vitest"; +import { SimpleStream } from "@rdfc/js-runner"; import { DataFactory, Parser, Store } from "n3"; import { sdsify } from "../src/sdsify"; import { LDES, RDF, SDS } from "@treecg/types"; @@ -143,7 +143,7 @@ describe("Functional tests for the sdsify function", () => { // Push some data in await input.push(INPUT_1); await input.end(); - }) + }); test("Extraction of particular entity type based on a SHACL shape", async () => { const input = new SimpleStream(); diff --git a/test/shapes.test.ts b/test/shapes.test.ts index 448b5d5..4f8bd1e 100644 --- a/test/shapes.test.ts +++ b/test/shapes.test.ts @@ -1,19 +1,19 @@ -import { describe, expect, test } from "@jest/globals"; +import { describe, expect, test } from "vitest"; import { extractShapes } from "rdf-lens"; import { DataFactory, Parser } from "n3"; import { CBDShapeExtractor } from "extract-cbd-shape"; import { Bucket, Extractor, SHAPES_TEXT } from "../src/utils/index"; -const { namedNode, blankNode, literal, quad } = DataFactory; +const { namedNode } = DataFactory; describe("Extracting defined shapes", async () => { - const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); + const quads = new Parser({ baseIRI: "" }).parse(SHAPES_TEXT); - const shapes = extractShapes(quads); + const shapes = extractShapes(quads); - test("extracts relation", () => { - const quadsStr = ` + test("extracts relation", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -24,22 +24,22 @@ describe("Extracting defined shapes", async () => { sds:relationValue 1; sds:relationPath ex:x. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - - const relation = shapes.lenses["#Relation"].execute({ - id: namedNode("a"), - quads, + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + + const relation = shapes.lenses["#Relation"].execute({ + id: namedNode("a"), + quads, + }); + + const keys = Object.keys(relation); + expect(keys).toContain("type"); + expect(keys).toContain("target"); + expect(keys).toContain("value"); + expect(keys).toContain("path"); }); - const keys = Object.keys(relation); - expect(keys).toContain("type"); - expect(keys).toContain("target"); - expect(keys).toContain("value"); - expect(keys).toContain("path"); - }); - - test("extracts bucket", () => { - const quadsStr = ` + test("extracts bucket", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -52,22 +52,22 @@ describe("Extracting defined shapes", async () => { sds:relationValue 1; sds:relationPath ex:x. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - - const bucket = shapes.lenses["#Bucket"].execute({ - id: namedNode("bucket"), - quads, + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + + const bucket = shapes.lenses["#Bucket"].execute({ + id: namedNode("bucket"), + quads, + }); + + const keys = Object.keys(bucket); + expect(keys).toContain("id"); + expect(keys).toContain("links"); + expect(keys).toContain("root"); + expect(bucket.root).toBe(true); }); - const keys = Object.keys(bucket); - expect(keys).toContain("id"); - expect(keys).toContain("links"); - expect(keys).toContain("root"); - expect(bucket.root).toBe(true); - }); - - test("extracts record", () => { - const quadsStr = ` + test("extracts record", () => { + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . @@ -84,96 +84,101 @@ describe("Extracting defined shapes", async () => { sds:relationValue 1; sds:relationPath ex:x. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const record = shapes.lenses["#Record"].execute({ - id: namedNode("record"), - quads, + const record = shapes.lenses["#Record"].execute({ + id: namedNode("record"), + quads, + }); + + const keys = Object.keys(record); + expect(keys).toContain("bucket"); + expect(keys).toContain("stream"); + expect(keys).toContain("data"); + }); + + test("defined shapes", async () => { + expect([...Object.keys(shapes.lenses)]).toContain("#Relation"); + expect([...Object.keys(shapes.lenses)]).toContain("#Bucket"); + expect([...Object.keys(shapes.lenses)]).toContain("#Record"); }); - const keys = Object.keys(record); - expect(keys).toContain("bucket"); - expect(keys).toContain("stream"); - expect(keys).toContain("data"); - }); - - test("defined shapes", async () => { - expect([...Object.keys(shapes.lenses)]).toContain("#Relation"); - expect([...Object.keys(shapes.lenses)]).toContain("#Bucket"); - expect([...Object.keys(shapes.lenses)]).toContain("#Record"); - }); - - test("extract sds records", async () => { - const extractor = new Extractor(new CBDShapeExtractor()); - const quadsStr = ` + test("extract sds records", async () => { + const extractor = new Extractor(new CBDShapeExtractor()); + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . - a sds:Record; - sds:stream <#stream>; - sds:bucket ; - sds:payload [ +sds:DataDescription { + a sds:Record; + sds:stream <#stream>; + sds:bucket ; + sds:payload _:data. + + sds:relation . + + sds:relationType tree:GreaterThanRelation ; + sds:relationBucket ; + sds:relationValue 1; + sds:relationPath ex:x. +} + +_:data 42; - 45; - ]. - - sds:relation . - - sds:relationType tree:GreaterThanRelation ; - sds:relationBucket ; - sds:relationValue 1; - sds:relationPath ex:x. + 45. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - const out = await extractor.parse_records(quads); - expect(out.length).toBe(1); - expect(out[0].data.quads.length).toBe(2); + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - expect(out[0].bucket).toBeInstanceOf(Bucket); - }); + const out = await extractor.parse_records(quads); + expect(out.length).toBe(1); + expect(out[0].data.quads.length).toBe(2); - test("extract deep buckets", async () => { - const extractor = new Extractor(new CBDShapeExtractor()); - const quadsStr = ` + expect(out[0].bucket).toBeInstanceOf(Bucket); + }); + + test("extract deep buckets", async () => { + const extractor = new Extractor(new CBDShapeExtractor()); + const quadsStr = ` @prefix tree: . @prefix ex: . @prefix sds: . - a sds:Record; - sds:stream <#stream>; - sds:bucket ; - sds:payload [ - 42; - 45; - ]. - - sds:relation ; a sds:Bucket. - - sds:relationType tree:GreaterThanRelation ; - sds:relationBucket ; - sds:relationValue 1; - sds:relationPath ex:x. - - sds:relation ; a sds:Bucket. - - sds:relationType tree:GreaterThanRelation ; - sds:relationBucket ; - sds:relationValue 1; - sds:relationPath ex:x. +sds:DataDescription { + a sds:Record; + sds:stream <#stream>; + sds:bucket ; + sds:payload _:data. + + sds:relation ; a sds:Bucket. + + sds:relationType tree:GreaterThanRelation ; + sds:relationBucket ; + sds:relationValue 1; + sds:relationPath ex:x. + + sds:relation ; a sds:Bucket. + + sds:relationType tree:GreaterThanRelation ; + sds:relationBucket ; + sds:relationValue 1; + sds:relationPath ex:x. +} + +_:data 42; 45. `; - const quads = new Parser({ baseIRI: "" }).parse(quadsStr); - - const out = await extractor.parse_records(quads); - expect(out.length).toBe(1); - const rec = out[0]; - expect(rec.data.quads.length).toBe(2); - expect(rec.bucket).toBeInstanceOf(Bucket); - expect(rec.bucket!.links.length).toBe(0); - expect(rec.bucket!.parent).toBeDefined(); - expect(rec.bucket!.parent!.id.value).toBe("bucket2"); - expect(rec.bucket!.parent!.parent).toBeDefined(); - expect(rec.bucket!.parent!.parent!.id.value).toBe("bucket"); - }); + const quads = new Parser({ baseIRI: "" }).parse(quadsStr); + + const out = await extractor.parse_records(quads); + expect(out.length).toBe(1); + const rec = out[0]; + expect(rec.data.quads.length).toBe(2); + expect(rec.bucket).toBeInstanceOf(Bucket); + expect(rec.bucket!.links.length).toBe(0); + expect(rec.bucket!.parent).toBeDefined(); + expect(rec.bucket!.parent!.id.value).toBe("bucket2"); + expect(rec.bucket!.parent!.parent).toBeDefined(); + expect(rec.bucket!.parent!.parent!.id.value).toBe("bucket"); + }); }); diff --git a/test/streamJoin.test.ts b/test/streamJoin.test.ts index 5a21104..456674e 100644 --- a/test/streamJoin.test.ts +++ b/test/streamJoin.test.ts @@ -1,5 +1,5 @@ -import { describe, test, expect } from "@jest/globals"; -import { SimpleStream } from "@ajuvercr/js-runner"; +import { describe, test, expect } from "vitest"; +import { SimpleStream } from "@rdfc/js-runner"; import { streamJoin } from "../src/streamJoin"; describe("Functional tests for streamJoin function", () => { diff --git a/tsconfig.json b/tsconfig.json index bf872b1..b318360 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,31 @@ { - "compilerOptions": { - "module": "esnext", - "target": "esnext", - "moduleResolution": "node", - "declaration": true, - "outDir": "./lib", - "strict": true - }, - "include": ["src"], - "exclude": ["node_modules", "**/__tests__/*"] + "compilerOptions": { + "declaration": true, + "outDir": "lib/", + "lib": ["ES2022"], + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "node", + "preserveConstEnums": true, + "downlevelIteration": true, + "skipLibCheck": true, + "strict": true, + "strictFunctionTypes": false, + "strictPropertyInitialization": false, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "incremental": true, + "esModuleInterop": true, + "removeComments": true + }, + "ts-node": { + "esm": true, + "experimentalSpecifierResolution": "node" + }, + "tsc-alias": { + "resolveFullPaths": true, + "verbose": false + }, + "include": ["src/**/*"], + "exclude": ["node_modules/**/*"] } diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..ee01791 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,16 @@ +import { defineConfig } from "vitest/config"; +import tsconfigPaths from "vite-tsconfig-paths"; + +export default defineConfig({ + plugins: [tsconfigPaths()], + test: { + deps: { + optimizer: { + ssr: { + enabled: true, + include: ["@rdfc/js-runner"], + }, + }, + }, + }, +});