From 1426d1745c70e0d014120c6422595ccf9d20a163 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Fri, 8 Mar 2024 14:35:39 +0100 Subject: [PATCH 1/6] Fix gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 849ddff..ce6135a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ +node_modules dist/ +save.json \ No newline at end of file From c86eaf2ca5d76a9d93618cc89dd5cf3ee87f06ad Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Fri, 8 Mar 2024 15:10:41 +0100 Subject: [PATCH 2/6] Update dependencies --- package-lock.json | 1760 +++++++++++++++++++++++++++------------------ package.json | 5 +- 2 files changed, 1061 insertions(+), 704 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fb6890..707a625 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ldes-client", - "version": "0.0.5", + "version": "0.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ldes-client", - "version": "0.0.5", + "version": "0.0.7", "license": "MIT", "dependencies": { "@ajuvercr/js-runner": "^0.1.15", @@ -55,12 +55,13 @@ } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", + "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.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -78,8 +79,9 @@ }, "node_modules/@babel/code-frame": { "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -88,93 +90,102 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, - "node_modules/@babel/code-frame/node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, - "node_modules/@babel/code-frame/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "node_modules/@babel/code-frame/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, - "node_modules/@babel/code-frame/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "node_modules/@babel/code-frame/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, - "node_modules/@babel/code-frame/node_modules/chalk/node_modules/escape-string-regexp": { + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, - "node_modules/@babel/code-frame/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/@babel/code-frame/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { - "version": "3.0.0", + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { "node": ">=4" } }, "node_modules/@babel/compat-data": { "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.9", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -189,18 +200,11 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", @@ -213,8 +217,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", @@ -226,39 +231,20 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -269,8 +255,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -280,8 +267,9 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.15" }, @@ -291,8 +279,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -308,17 +297,19 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", + "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, - "license": "MIT", "engines": { "node": ">=6.9.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, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -328,8 +319,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -339,36 +331,40 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.9", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -376,8 +372,9 @@ }, "node_modules/@babel/highlight": { "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -387,74 +384,82 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", + "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, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", + "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, - "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "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, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "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/chalk/node_modules/escape-string-regexp": { + "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, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.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, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { - "version": "3.0.0", + "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, - "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { "node": ">=4" } }, "node_modules/@babel/parser": { - "version": "7.23.9", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -464,8 +469,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -475,8 +481,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -486,8 +493,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -497,8 +505,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -508,8 +517,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -519,8 +529,9 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -533,8 +544,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -544,8 +556,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -555,8 +568,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -566,8 +580,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -577,8 +592,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -588,8 +604,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -599,8 +616,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -613,8 +631,9 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -626,22 +645,24 @@ } }, "node_modules/@babel/template": { - "version": "7.23.9", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.9", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", @@ -649,8 +670,8 @@ "@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.23.9", - "@babel/types": "^7.23.9", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -659,9 +680,10 @@ } }, "node_modules/@babel/types": { - "version": "7.23.9", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -673,22 +695,25 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, "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" ], - "license": "MIT", "dependencies": { "buffer": "^6.0.3" } }, "node_modules/@comunica/actor-abstract-mediatyped": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-mediatyped/-/actor-abstract-mediatyped-2.10.0.tgz", + "integrity": "sha512-0o6WBujsMnIVcwvRJv6Nj+kKPLZzqBS3On48rm01Rh9T1/My0E/buJMXwgcARKCfMonc2mJ9zxpPCh5ilGEU2A==", "dependencies": { "@comunica/core": "^2.10.0", "@comunica/types": "^2.10.0" @@ -696,7 +721,8 @@ }, "node_modules/@comunica/actor-abstract-parse": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-parse/-/actor-abstract-parse-2.10.0.tgz", + "integrity": "sha512-0puCWF+y24EDOOAUUVVbC+tOf4UV+LzEbqi8T5v25jcVGCXyTqfra+bDywfrcv3adrVp18jLCJ46ycaH5xhy9Q==", "dependencies": { "@comunica/core": "^2.10.0", "readable-stream": "^4.4.2" @@ -704,7 +730,8 @@ }, "node_modules/@comunica/actor-dereference-fallback": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-fallback/-/actor-dereference-fallback-2.10.0.tgz", + "integrity": "sha512-RSc/ScPdC7l13aZjz/6r4niWA8WDETbzuESQKKSWXi/HAlFOyOxdrDADdayVY2oyeZHIQibeNRtSi2ItzU7OPQ==", "dependencies": { "@comunica/bus-dereference": "^2.10.0", "@comunica/core": "^2.10.0" @@ -712,7 +739,8 @@ }, "node_modules/@comunica/actor-dereference-file": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-file/-/actor-dereference-file-2.10.0.tgz", + "integrity": "sha512-WXfAyHm0M3+YbYEtLtasT6YHsrzTAevmH27ex8r51qKNj2LK74llpw4mSeea3xyjQR30jVnKBIJSxuSbN64Now==", "dependencies": { "@comunica/bus-dereference": "^2.10.0", "@comunica/core": "^2.10.0" @@ -720,7 +748,8 @@ }, "node_modules/@comunica/actor-dereference-http": { "version": "2.10.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-http/-/actor-dereference-http-2.10.2.tgz", + "integrity": "sha512-gdDo83W1TAgD2jx0kVbzZKzzt++L4Y4fbyTOH3duy6vx1EMGGZlNCp6I1uguepKEjNX4N0zhAcZzdJcv8A3XMA==", "dependencies": { "@comunica/bus-dereference": "^2.10.0", "@comunica/bus-http": "^2.10.2", @@ -732,7 +761,8 @@ }, "node_modules/@comunica/actor-dereference-rdf-parse": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-dereference-rdf-parse/-/actor-dereference-rdf-parse-2.10.0.tgz", + "integrity": "sha512-ANWL6Bv+2WHUjVRS7hfkOfVBNJs8xYZ9KHlgBOQ94CKtQZB9uSMjdb1hLp/cQjiDmFIWLn0+GM5Xi0KFwBkVAw==", "dependencies": { "@comunica/bus-dereference": "^2.10.0", "@comunica/bus-dereference-rdf": "^2.10.0", @@ -741,7 +771,8 @@ }, "node_modules/@comunica/actor-http-fetch": { "version": "2.10.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-http-fetch/-/actor-http-fetch-2.10.2.tgz", + "integrity": "sha512-siHGx0TMVNb2gXvOroq0B3JE6uuS+4s+MsDkntqdBNVigwVYqLpNSKEaL5is8pputFfohJfDQY06lAHbfDNEcw==", "dependencies": { "@comunica/bus-http": "^2.10.2", "@comunica/context-entries": "^2.10.0", @@ -752,7 +783,8 @@ }, "node_modules/@comunica/actor-http-proxy": { "version": "2.10.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-http-proxy/-/actor-http-proxy-2.10.2.tgz", + "integrity": "sha512-3yUF8BCh4nwq8J6NRILEsyNrQNStkE9ggJ7hYwRfA1XcMgz1pANNaWJ2P2TEKH1jNinr23bL3JeuUZCm9Kz9dA==", "dependencies": { "@comunica/bus-http": "^2.10.2", "@comunica/context-entries": "^2.10.0", @@ -762,7 +794,8 @@ }, "node_modules/@comunica/actor-rdf-parse-html": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html/-/actor-rdf-parse-html-2.10.0.tgz", + "integrity": "sha512-zgImXKpc+BN1i6lQiN1Qhlb1HbKdMIeJMOys6qbzRIijdK8GkGGChwhQp7Cso3lY1Nf4K7M3jPLZeQXeED2w7g==", "dependencies": { "@comunica/bus-rdf-parse": "^2.10.0", "@comunica/bus-rdf-parse-html": "^2.10.0", @@ -775,7 +808,8 @@ }, "node_modules/@comunica/actor-rdf-parse-html-microdata": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-microdata/-/actor-rdf-parse-html-microdata-2.10.0.tgz", + "integrity": "sha512-JLfiDauq4SmpI6TDS4HaHzI6iJe1j8lSk5FRRYK6YVEu8eO28jPmxQJiOiwbQiYqsjsV7kON/WIZSoUELoI4Ig==", "dependencies": { "@comunica/bus-rdf-parse-html": "^2.10.0", "@comunica/core": "^2.10.0", @@ -784,7 +818,8 @@ }, "node_modules/@comunica/actor-rdf-parse-html-rdfa": { "version": "2.10.0", - "license": "MIT", + "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==", "dependencies": { "@comunica/bus-rdf-parse-html": "^2.10.0", "@comunica/core": "^2.10.0", @@ -793,7 +828,8 @@ }, "node_modules/@comunica/actor-rdf-parse-html-script": { "version": "2.10.0", - "license": "MIT", + "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==", "dependencies": { "@comunica/bus-rdf-parse": "^2.10.0", "@comunica/bus-rdf-parse-html": "^2.10.0", @@ -807,7 +843,8 @@ }, "node_modules/@comunica/actor-rdf-parse-jsonld": { "version": "2.10.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-jsonld/-/actor-rdf-parse-jsonld-2.10.2.tgz", + "integrity": "sha512-K4fvD0zMU22KkQCqIFVT5Oy2FREEZ9CAo9u6kOcsMxEvg9aHGIM6hkaXR8I+1JCx1mDuEj3zQ8joR4tQh8fYCw==", "dependencies": { "@comunica/bus-http": "^2.10.2", "@comunica/bus-rdf-parse": "^2.10.0", @@ -821,7 +858,8 @@ }, "node_modules/@comunica/actor-rdf-parse-n3": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-n3/-/actor-rdf-parse-n3-2.10.0.tgz", + "integrity": "sha512-o1MAbwJxW4Br2WCZdhFoRmAiOP4mfogeQqJ4nqlsOkoMtQ45EvLHsotb3Kqhuk5V+vsTxyK5v/a4zylGtcU7VQ==", "dependencies": { "@comunica/bus-rdf-parse": "^2.10.0", "@comunica/types": "^2.10.0", @@ -830,7 +868,8 @@ }, "node_modules/@comunica/actor-rdf-parse-rdfxml": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-rdfxml/-/actor-rdf-parse-rdfxml-2.10.0.tgz", + "integrity": "sha512-HoJN52shXY3cvYtsS0cpin9KXpW3L7g1leebyCRSqnlnHdJv5D6G0Ep8vyt2xhquKNbOQ7LnP5VhiDiqz73XDg==", "dependencies": { "@comunica/bus-rdf-parse": "^2.10.0", "@comunica/types": "^2.10.0", @@ -839,7 +878,8 @@ }, "node_modules/@comunica/actor-rdf-parse-shaclc": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-shaclc/-/actor-rdf-parse-shaclc-2.10.0.tgz", + "integrity": "sha512-i6tmuZuS+RtDiSXpQc3s/PxtCqwIguo4ANmVB20PK4VWgQgBwoPG7LlNcJ0xmuH/3Bv6C2Agn18PLF6dZX+fKw==", "dependencies": { "@comunica/bus-rdf-parse": "^2.10.0", "@comunica/types": "^2.10.0", @@ -852,7 +892,8 @@ }, "node_modules/@comunica/actor-rdf-parse-xml-rdfa": { "version": "2.10.0", - "license": "MIT", + "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==", "dependencies": { "@comunica/bus-rdf-parse": "^2.10.0", "@comunica/types": "^2.10.0", @@ -861,7 +902,8 @@ }, "node_modules/@comunica/bus-dereference": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/bus-dereference/-/bus-dereference-2.10.0.tgz", + "integrity": "sha512-nWyQXiH7zbiPTVttWVKJHykhV4IuahfhfUwPx3Op+cVsK489Su84dnGeSmPkxTAFFuxe6wU6ZEH4i7PDu48YvQ==", "dependencies": { "@comunica/actor-abstract-mediatyped": "^2.10.0", "@comunica/actor-abstract-parse": "^2.10.0", @@ -873,7 +915,8 @@ }, "node_modules/@comunica/bus-dereference-rdf": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/bus-dereference-rdf/-/bus-dereference-rdf-2.10.0.tgz", + "integrity": "sha512-WY/wPmFpO76wwJ2D5Aus43ZbYnBRLvQ0EOp4yywO0lBiq6F0JisjCVCM4EtWouOEAAfqEoIjHXGyC3gPWqm+SQ==", "dependencies": { "@comunica/bus-dereference": "^2.10.0", "@comunica/bus-rdf-parse": "^2.10.0", @@ -883,7 +926,8 @@ }, "node_modules/@comunica/bus-http": { "version": "2.10.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/bus-http/-/bus-http-2.10.2.tgz", + "integrity": "sha512-MAYRF6uEBAuJ9dCPW2Uyne7w3lNwXFXKfa14XuPG5DFTDpgo/Z2pWupPrBsA1eIWMNJ6WOG6QyEv4rllSIBqlg==", "dependencies": { "@comunica/core": "^2.10.0", "@smessie/readable-web-to-node-stream": "^3.0.3", @@ -894,7 +938,8 @@ }, "node_modules/@comunica/bus-init": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/bus-init/-/bus-init-2.10.0.tgz", + "integrity": "sha512-hJejHa8sLVhQLFlduCVnhOd5aW3FCEz8wmWjyeLI3kiHFaQibnGVMhUuuNRX5f8bnnPuTdEiHc1nnYHuSi+j8A==", "dependencies": { "@comunica/core": "^2.10.0", "readable-stream": "^4.4.2" @@ -902,7 +947,8 @@ }, "node_modules/@comunica/bus-rdf-parse": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse/-/bus-rdf-parse-2.10.0.tgz", + "integrity": "sha512-EgCMZACfTG/+mayQpExWt0HoBT32BBVC1aS1lC43fXKBTxJ8kYrSrorVUuMACoh4dQVGTb+7j1j4K0hGNVzXGA==", "dependencies": { "@comunica/actor-abstract-mediatyped": "^2.10.0", "@comunica/actor-abstract-parse": "^2.10.0", @@ -912,7 +958,8 @@ }, "node_modules/@comunica/bus-rdf-parse-html": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse-html/-/bus-rdf-parse-html-2.10.0.tgz", + "integrity": "sha512-RZliz4TtKP63QggoohGuIkGb6lq0BoYJ4aztKtGldWtPAVP/pdEvlDpiZWLB/j19g7S2aDLNY/lJtZ5efM1tHQ==", "dependencies": { "@comunica/core": "^2.10.0", "@rdfjs/types": "*" @@ -920,11 +967,13 @@ }, "node_modules/@comunica/config-query-sparql": { "version": "2.7.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@comunica/config-query-sparql/-/config-query-sparql-2.7.0.tgz", + "integrity": "sha512-rMnFgT7cz9+0z7wV4OzIMY5qM9/Z0mTGrR8y2JokoHyyTcBGOSajFmy61XCSLMCsLLG8qDXsJ4ClCCky3TGfqA==" }, "node_modules/@comunica/context-entries": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/context-entries/-/context-entries-2.10.0.tgz", + "integrity": "sha512-lmCYCcXxW8C6ecFH2whZCt31NT1ejb0P/sbytK7f4ctyA06Q8iYFEcYE4eWOXMdpfkwkcnz31x9XL77OGeSC2Q==", "dependencies": { "@comunica/core": "^2.10.0", "@comunica/types": "^2.10.0", @@ -935,7 +984,8 @@ }, "node_modules/@comunica/core": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/core/-/core-2.10.0.tgz", + "integrity": "sha512-onsGs2iKHUPRxxMOdx42vdxslk8q9FQZdRjQtHJ6SGiCpJwIL9ciBgPIOl2RL2YfzXHemr/0umeNOppRDcWhJA==", "dependencies": { "@comunica/types": "^2.10.0", "immutable": "^4.1.0" @@ -946,7 +996,8 @@ }, "node_modules/@comunica/mediator-combine-pipeline": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/mediator-combine-pipeline/-/mediator-combine-pipeline-2.10.0.tgz", + "integrity": "sha512-j7+/oUlbhKB4Rq6g9oNKU+e9cQL8U9z8tAUNhoXUSHajcr4huj0t1+riaOD109/DRWhV793ILhBDzgiZbHd7DA==", "dependencies": { "@comunica/core": "^2.10.0", "@comunica/types": "^2.10.0" @@ -954,35 +1005,40 @@ }, "node_modules/@comunica/mediator-combine-union": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/mediator-combine-union/-/mediator-combine-union-2.10.0.tgz", + "integrity": "sha512-QbP4zP1i6nMDZ8teC0RoTz5E8pOpxDhWPBr1ylb2jzPUjPpMgrnbHYTondlN0Oau3SMEehItojg/LYDtPOP/GQ==", "dependencies": { "@comunica/core": "^2.10.0" } }, "node_modules/@comunica/mediator-number": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/mediator-number/-/mediator-number-2.10.0.tgz", + "integrity": "sha512-0T8D1HGTu5Sd8iKb2dBjc6VRc/U4A15TAN6m561ra9pFlP+w31kby0ZYP6WWBHBobbUsX1LCvnbRQaAC4uWwVw==", "dependencies": { "@comunica/core": "^2.10.0" } }, "node_modules/@comunica/mediator-race": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/mediator-race/-/mediator-race-2.10.0.tgz", + "integrity": "sha512-JiEtOLMkPnbjSLabVpE4VqDbu2ZKKnkUdATGBeWX+o+MjPw6c0hhw01RG4WY2rQhDyNl++nLQe3EowQh8xW9TA==", "dependencies": { "@comunica/core": "^2.10.0" } }, "node_modules/@comunica/mediatortype-time": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/mediatortype-time/-/mediatortype-time-2.10.0.tgz", + "integrity": "sha512-nBz1exxrja1Tj8KSlSevG4Hw2u09tTh6gtNfVjI76i/e7muu4RUWVhi9b8PcwBNAfuUqRl+5OgOSa2X4W+6QlA==", "dependencies": { "@comunica/core": "^2.10.0" } }, "node_modules/@comunica/types": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-2.10.0.tgz", + "integrity": "sha512-1UjPGbZcYrapBjMGUZedrIGcn9rOLpEOlJo1ZkWddFUGTwndVg9d4BZnQw+UnQzXMcLJcdKt94Zns8iEmBqARw==", "dependencies": { "@rdfjs/types": "*", "@types/yargs": "^17.0.24", @@ -992,8 +1048,9 @@ }, "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, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -1005,26 +1062,20 @@ "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -1039,8 +1090,9 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/reporters": "^29.7.0", @@ -1085,8 +1137,9 @@ }, "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, - "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -1099,8 +1152,9 @@ }, "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, - "license": "MIT", "dependencies": { "expect": "^29.7.0", "jest-snapshot": "^29.7.0" @@ -1111,8 +1165,9 @@ }, "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, - "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -1122,8 +1177,9 @@ }, "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, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -1138,8 +1194,9 @@ }, "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, - "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -1152,8 +1209,9 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, - "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.7.0", @@ -1194,8 +1252,9 @@ }, "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, - "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -1205,8 +1264,9 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -1218,8 +1278,9 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", @@ -1232,8 +1293,9 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", @@ -1246,8 +1308,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -1271,8 +1334,9 @@ }, "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, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -1286,43 +1350,48 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "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, - "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", + "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, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "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, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "dev": true, - "license": "MIT" + "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.22", + "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, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1330,14 +1399,16 @@ }, "node_modules/@rdfjs/types": { "version": "1.1.0", - "license": "MIT", + "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", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@rubensworks/saxes/-/saxes-6.0.1.tgz", + "integrity": "sha512-UW4OTIsOtJ5KSXo2Tchi4lhZqu+tlHrOAs4nNti7CrtB53kAZl3/hyrTi6HkMihxdbDM6m2Zc3swc/ZewEe1xw==", "dependencies": { "xmlchars": "^2.2.0" }, @@ -1347,28 +1418,32 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "dev": true, - "license": "MIT" + "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, - "license": "BSD-3-Clause", "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, - "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" } }, "node_modules/@smessie/readable-web-to-node-stream": { "version": "3.0.3", - "license": "MIT", + "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==", "dependencies": { "process": "^0.11.10", "readable-stream": "^4.5.1" @@ -1383,7 +1458,8 @@ }, "node_modules/@treecg/types": { "version": "0.4.5", - "license": "UNLICENSE", + "resolved": "https://registry.npmjs.org/@treecg/types/-/types-0.4.5.tgz", + "integrity": "sha512-vPEVVlRDPQz8KwQmC6SKW5cTgggrBmEapw1Plg7beVX6pmfM1bll7lMnHGNLJDmoDyfAkR6LV4nB/VLGpjGBPA==", "dependencies": { "@rdfjs/types": "*", "loglevel": "^1.8.1", @@ -1393,8 +1469,9 @@ }, "node_modules/@types/babel__core": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -1405,16 +1482,18 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -1422,113 +1501,125 @@ }, "node_modules/@types/babel__traverse": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/debug": { "version": "4.1.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { "@types/ms": "*" } }, "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, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/http-link-header": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.5.tgz", + "integrity": "sha512-AxhIKR8UbyoqCTNp9rRepkktHuUOw3DjfOfDCaO9kwI8AYzjhxyrvZq4+mRw/2daD3hYDknrtSeV6SsPwmc71w==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/ms": { "version": "0.7.34", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "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, - "license": "MIT", "dependencies": { "@rdfjs/types": "^1.1.0", "@types/node": "*" } }, "node_modules/@types/node": { - "version": "20.11.16", - "license": "MIT", + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/readable-stream": { "version": "2.3.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", "dependencies": { "@types/node": "*", "safe-buffer": "~5.1.1" } }, - "node_modules/@types/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, "node_modules/@types/sparqljs": { "version": "3.1.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/sparqljs/-/sparqljs-3.1.10.tgz", + "integrity": "sha512-rqMpUhl/d8B+vaACa6ZVdwPQ1JXw+KxiCc0cndgn/V6moRG3WjUAgoBnhSwfKtXD98wgMThDsc6R1+yRUuMsAg==", "dependencies": { "@rdfjs/types": ">=1.0.0" } }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true }, "node_modules/@types/yargs": { "version": "17.0.32", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/abort-controller": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -1549,8 +1640,9 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -1563,16 +1655,18 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT", "engines": { "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" }, @@ -1590,8 +1684,9 @@ }, "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" @@ -1602,8 +1697,9 @@ }, "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, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -1618,7 +1714,8 @@ }, "node_modules/asynciterator": { "version": "3.8.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.8.1.tgz", + "integrity": "sha512-SmdG0FUY3pYGOZZGdYq8Qb/DCRDXBFZUk08V1/4lbBXdAQvcC3Kxzz9FUDPBTik7VAVltt4cZirAPtJv3gOpEw==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -1627,8 +1724,9 @@ }, "node_modules/babel-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -1647,8 +1745,9 @@ }, "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, - "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -1662,8 +1761,9 @@ }, "node_modules/babel-plugin-istanbul/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, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -1675,18 +1775,11 @@ "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -1699,8 +1792,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -1721,8 +1815,9 @@ }, "node_modules/babel-preset-jest": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -1736,11 +1831,14 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "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", @@ -1754,8 +1852,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/bidi-js": { "version": "1.0.3", @@ -1767,8 +1864,9 @@ }, "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" @@ -1776,8 +1874,9 @@ }, "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, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -1786,7 +1885,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.3", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -1802,10 +1903,9 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -1818,8 +1918,9 @@ }, "node_modules/bs-logger": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "license": "MIT", "dependencies": { "fast-json-stable-stringify": "2.x" }, @@ -1829,14 +1930,17 @@ }, "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, - "license": "Apache-2.0", "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", @@ -1851,7 +1955,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -1859,19 +1962,32 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001583", + "version": "1.0.30001593", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", + "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", "dev": true, "funding": [ { @@ -1886,17 +2002,18 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/canonicalize": { "version": "1.0.8", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" }, "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" @@ -1910,14 +2027,17 @@ }, "node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "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": [ { @@ -1925,20 +2045,21 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cjs-module-lexer": { "version": "1.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true }, "node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -1950,8 +2071,9 @@ }, "node_modules/co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -1959,13 +2081,15 @@ }, "node_modules/collect-v8-coverage": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1975,8 +2099,9 @@ }, "node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/combined-stream": { "version": "1.0.8", @@ -2099,25 +2224,29 @@ }, "node_modules/commander": { "version": "11.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "engines": { "node": ">=16" } }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/create-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -2136,15 +2265,17 @@ }, "node_modules/cross-fetch": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2189,40 +2320,10 @@ "node": ">=18" } }, - "node_modules/data-urls/node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/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==", - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/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==", - "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/debug": { "version": "4.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -2242,8 +2343,9 @@ }, "node_modules/dedent": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, - "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -2263,8 +2365,9 @@ }, "node_modules/deepmerge": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2279,23 +2382,26 @@ }, "node_modules/detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "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/dom-serializer": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -2307,17 +2413,19 @@ }, "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" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domhandler": { "version": "5.0.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dependencies": { "domelementtype": "^2.3.0" }, @@ -2330,7 +2438,8 @@ }, "node_modules/domutils": { "version": "3.1.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -2341,14 +2450,16 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.655", - "dev": true, - "license": "ISC" + "version": "1.4.690", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", + "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", + "dev": true }, "node_modules/emittery": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -2358,12 +2469,14 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/entities": { "version": "4.5.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "engines": { "node": ">=0.12" }, @@ -2373,32 +2486,36 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "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, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -2409,22 +2526,25 @@ }, "node_modules/event-target-shim": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "engines": { "node": ">=6" } }, "node_modules/events": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -2445,6 +2565,8 @@ }, "node_modules/exit": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -2452,8 +2574,9 @@ }, "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, - "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -2466,9 +2589,9 @@ } }, "node_modules/extract-cbd-shape": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/extract-cbd-shape/-/extract-cbd-shape-0.1.0.tgz", - "integrity": "sha512-RiasGuHEK5/5dCTuHY/idctZNyE/62/BIk42/F24IxuUWW8QWXkgFgURFl54Z/cILJFmHho8aVtK4kEVpTGYfg==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/extract-cbd-shape/-/extract-cbd-shape-0.1.2.tgz", + "integrity": "sha512-kMX5u8i+m8FE52vlOvsMVk37VdwIdejYe0ouABvC1YU4pViln7OiNyxrYhmhZYUGDclMTaQtg/6RUyraQclwVQ==", "dependencies": { "@treecg/types": "^0.4.5", "jsdom": "^23.0.1", @@ -2483,25 +2606,29 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "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, - "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "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, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2522,8 +2649,9 @@ }, "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, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2547,45 +2675,65 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "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==", "dev": true, - "license": "MIT", "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, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "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, - "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2595,8 +2743,9 @@ }, "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", @@ -2614,37 +2763,42 @@ }, "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, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/graceful-fs": { "version": "4.2.11", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hash.js": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" } }, "node_modules/hasown": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2653,8 +2807,9 @@ } }, "node_modules/heap-js": { - "version": "2.3.0", - "license": "BSD-3-Clause", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.5.0.tgz", + "integrity": "sha512-kUGoI3p7u6B41z/dp33G6OaL7J4DRqRYwVmeIlwLClx7yaaAy7hoDExnuejTKtuDwfcatGmddHDEOjf6EyIxtQ==", "engines": { "node": ">=10.0.0" } @@ -2672,11 +2827,14 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "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", { @@ -2684,7 +2842,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -2693,8 +2850,9 @@ } }, "node_modules/http-link-header": { - "version": "1.1.1", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.2.tgz", + "integrity": "sha512-6qz1XhMq/ryde52SZGzVhzi3jcG2KqO16KITkupyQxvW6u7iylm0Fq7r3OpCYsc0S0ELlCiFpuxDcccUwjbEqA==", "engines": { "node": ">=6.0.0" } @@ -2725,8 +2883,9 @@ }, "node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -2744,6 +2903,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -2757,17 +2918,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/immutable": { "version": "4.3.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" }, "node_modules/import-local": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -2784,16 +2946,18 @@ }, "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" @@ -2801,17 +2965,20 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/is-arrayish": { "version": "0.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-core-module": { "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -2821,24 +2988,27 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "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, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -2850,7 +3020,8 @@ }, "node_modules/is-stream": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" }, @@ -2860,25 +3031,28 @@ }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "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, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -2886,40 +3060,44 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", + "node_modules/istanbul-lib-instrument/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/istanbul-lib-instrument/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, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver/node_modules/lru-cache/node_modules/yallist": { + "node_modules/istanbul-lib-instrument/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/istanbul-lib-report": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -2931,8 +3109,9 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -2943,9 +3122,10 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -2956,8 +3136,9 @@ }, "node_modules/jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -2981,8 +3162,9 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, - "license": "MIT", "dependencies": { "execa": "^5.0.0", "jest-util": "^29.7.0", @@ -2994,8 +3176,9 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -3024,8 +3207,9 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/test-result": "^29.7.0", @@ -3056,8 +3240,9 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.7.0", @@ -3100,8 +3285,9 @@ }, "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, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -3114,8 +3300,9 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, - "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -3125,8 +3312,9 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -3140,8 +3328,9 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -3156,16 +3345,18 @@ }, "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, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.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, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -3188,8 +3379,9 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, - "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" @@ -3200,8 +3392,9 @@ }, "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, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -3214,8 +3407,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -3233,8 +3427,9 @@ }, "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, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -3246,8 +3441,9 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -3262,16 +3458,18 @@ }, "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, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -3289,8 +3487,9 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, - "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" @@ -3301,8 +3500,9 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", @@ -3332,8 +3532,9 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -3364,8 +3565,9 @@ }, "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, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -3392,40 +3594,44 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/jest-snapshot/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, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/semver/node_modules/lru-cache/node_modules/yallist": { + "node_modules/jest-snapshot/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/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, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -3440,8 +3646,9 @@ }, "node_modules/jest-validate": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -3456,8 +3663,9 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -3467,8 +3675,9 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", @@ -3485,8 +3694,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -3499,8 +3709,9 @@ }, "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3513,13 +3724,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3567,41 +3780,11 @@ } } }, - "node_modules/jsdom/node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/jsdom/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==", - "engines": { - "node": ">=12" - } - }, - "node_modules/jsdom/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==", - "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -3611,13 +3794,15 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -3627,7 +3812,8 @@ }, "node_modules/jsonld-context-parser": { "version": "2.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-2.4.0.tgz", + "integrity": "sha512-ZYOfvh525SdPd9ReYY58dxB3E2RUEU4DJ6ZibO8AitcowPeBH4L5rCAitE2om5G1P+HMEgYEYEr4EZKbVN4tpA==", "dependencies": { "@types/http-link-header": "^1.0.1", "@types/node": "^18.0.0", @@ -3640,22 +3826,25 @@ } }, "node_modules/jsonld-context-parser/node_modules/@types/node": { - "version": "18.19.14", - "license": "MIT", + "version": "18.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", + "integrity": "sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/jsonld-context-parser/node_modules/cross-fetch": { "version": "3.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/jsonld-streaming-parser": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-3.3.0.tgz", + "integrity": "sha512-6aWiAsWGZioTB/vNQ3KenREz9ddEOliZoEETi+jLrlL7+vkgMeHjnxyFlGe4UOCU7SVUNPhz/lgLGZjnxgVYtA==", "dependencies": { "@bergos/jsonparse": "^1.4.0", "@rdfjs/types": "*", @@ -3679,29 +3868,33 @@ }, "node_modules/kleur": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/leven": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/lines-and-columns": { "version": "1.2.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -3716,12 +3909,14 @@ }, "node_modules/lodash.memoize": { "version": "4.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true }, "node_modules/loglevel": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", "engines": { "node": ">= 0.6.0" }, @@ -3732,23 +3927,23 @@ }, "node_modules/loglevel-plugin-prefix": { "version": "0.8.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==" }, "node_modules/lru-cache": { - "version": "6.0.0", + "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, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/make-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -3759,45 +3954,50 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", + "node_modules/make-dir/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/make-dir/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/make-dir/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, - "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/make-dir/node_modules/semver/node_modules/lru-cache/node_modules/yallist": { + "node_modules/make-dir/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/make-error": { "version": "1.3.6", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, "node_modules/makeerror": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } @@ -3809,12 +4009,14 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/microdata-rdf-streaming-parser": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/microdata-rdf-streaming-parser/-/microdata-rdf-streaming-parser-2.0.1.tgz", + "integrity": "sha512-oEEYP3OwPGOtoE4eIyJvX1eJXI7VkGR4gKYqpEufaRXc2ele/Tkid/KMU3Los13wGrOq6woSxLEGOYSHzpRvwA==", "dependencies": { "@rdfjs/types": "*", "htmlparser2": "^8.0.0", @@ -3825,6 +4027,8 @@ }, "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", { @@ -3832,7 +4036,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -3842,8 +4045,9 @@ }, "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, - "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -3873,20 +4077,23 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "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" }, @@ -3896,18 +4103,21 @@ }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/ms": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/n3": { "version": "1.17.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.2.tgz", + "integrity": "sha512-BxSM52wYFqXrbQQT5WUEzKUn6qpYV+2L4XZLfn3Gblz2kwZ09S+QxC33WNdVEQy2djenFL8SNkrjejEKlvI6+Q==", "dependencies": { "queue-microtask": "^1.1.2", "readable-stream": "^4.0.0" @@ -3918,12 +4128,14 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/node-fetch": { "version": "2.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -3939,28 +4151,51 @@ } } }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "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==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-int64": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -3970,16 +4205,18 @@ }, "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/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -3992,8 +4229,9 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -4006,8 +4244,9 @@ }, "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, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -4017,8 +4256,9 @@ }, "node_modules/p-locate/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, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -4031,16 +4271,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -4067,42 +4309,48 @@ }, "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", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "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" }, @@ -4112,16 +4360,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -4130,9 +4380,10 @@ } }, "node_modules/prettier": { - "version": "3.2.4", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -4145,8 +4396,9 @@ }, "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", @@ -4158,8 +4410,9 @@ }, "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" }, @@ -4169,19 +4422,22 @@ }, "node_modules/process": { "version": "0.11.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "engines": { "node": ">= 0.6.0" } }, "node_modules/promise-polyfill": { "version": "1.1.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", + "integrity": "sha512-7rrONfyLkDEc7OJ5QBkqa4KI4EBhCd340xRuIUPGCfu13znS+vx+VDdrT9ODAJHlXm7w4lbxN3DRjyv58EuzDg==" }, "node_modules/prompts": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -4205,6 +4461,8 @@ }, "node_modules/pure-rand": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", "dev": true, "funding": [ { @@ -4215,8 +4473,7 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ], - "license": "MIT" + ] }, "node_modules/querystringify": { "version": "2.2.0", @@ -4225,6 +4482,8 @@ }, "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", @@ -4238,8 +4497,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/rdf-data-factory": { "version": "1.1.2", @@ -4251,7 +4509,8 @@ }, "node_modules/rdf-dereference": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rdf-dereference/-/rdf-dereference-2.2.0.tgz", + "integrity": "sha512-6geM3CSUlXTK3n4OoKsL95M7XwKXoxiwK7cf4e/+Dj0X/ll77ihFN5j9VhLGXNYbMXDlm30kBg/VU6ymMv6o/Q==", "dependencies": { "@comunica/actor-dereference-fallback": "^2.0.2", "@comunica/actor-dereference-file": "^2.0.2", @@ -4292,7 +4551,8 @@ }, "node_modules/rdf-isomorphic": { "version": "1.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rdf-isomorphic/-/rdf-isomorphic-1.3.1.tgz", + "integrity": "sha512-6uIhsXTVp2AtO6f41PdnRV5xZsa0zVZQDTBdn0br+DZuFf5M/YD+T6m8hKDUnALI6nFL/IujTMLgEs20MlNidQ==", "dependencies": { "@rdfjs/types": "*", "hash.js": "^1.1.7", @@ -4333,7 +4593,8 @@ }, "node_modules/rdf-string": { "version": "1.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rdf-string/-/rdf-string-1.6.3.tgz", + "integrity": "sha512-HIVwQ2gOqf+ObsCLSUAGFZMIl3rh9uGcRf1KbM85UDhKqP+hy6qj7Vz8FKt3GA54RiThqK3mNcr66dm1LP0+6g==", "dependencies": { "@rdfjs/types": "*", "rdf-data-factory": "^1.1.0" @@ -4341,7 +4602,8 @@ }, "node_modules/rdf-terms": { "version": "1.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rdf-terms/-/rdf-terms-1.11.0.tgz", + "integrity": "sha512-iKlVgnMopRKl9pHVNrQrax7PtZKRCT/uJIgYqvuw1VVQb88zDvurtDr1xp0rt7N9JtKtFwUXoIQoEsjyRo20qQ==", "dependencies": { "@rdfjs/types": "*", "rdf-data-factory": "^1.1.0", @@ -4350,7 +4612,8 @@ }, "node_modules/rdfa-streaming-parser": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rdfa-streaming-parser/-/rdfa-streaming-parser-2.0.1.tgz", + "integrity": "sha512-7Yyaj030LO7iQ38Wh/RNLVeYrVFJeyx3dpCK7C1nvX55eIN/gE4HWfbg4BYI9X7Bd+eUIUMVeiKYLmYjV6apow==", "dependencies": { "@rdfjs/types": "*", "htmlparser2": "^8.0.0", @@ -4361,6 +4624,8 @@ }, "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", { @@ -4368,7 +4633,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -4378,7 +4642,8 @@ }, "node_modules/rdfxml-streaming-parser": { "version": "2.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", + "integrity": "sha512-f+tdI1wxOiPzMbFWRtOwinwPsqac0WIN80668yFKcVdFCSTGOWTM70ucQGUSdDZZo7pce/UvZgV0C3LDj0P7tg==", "dependencies": { "@rdfjs/types": "*", "@rubensworks/saxes": "^6.0.1", @@ -4392,12 +4657,14 @@ }, "node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/readable-stream": { "version": "4.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -4411,7 +4678,8 @@ }, "node_modules/readable-stream-node-to-web": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/readable-stream-node-to-web/-/readable-stream-node-to-web-1.0.1.tgz", + "integrity": "sha512-OGzi2VKLa8H259kAx7BIwuRrXHGcxeHj4RdASSgEGBP9Q2wowdPvBc65upF4Q9O05qWgKqBw1+9PiLTtObl7uQ==" }, "node_modules/reduce-flatten": { "version": "2.0.0", @@ -4423,12 +4691,14 @@ }, "node_modules/relative-to-absolute-iri": { "version": "1.0.7", - "license": "MIT" + "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==" }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4448,8 +4718,9 @@ }, "node_modules/resolve": { "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -4464,8 +4735,9 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -4475,16 +4747,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve.exports": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -4494,6 +4768,11 @@ "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==" + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4511,22 +4790,18 @@ } }, "node_modules/semver": { - "version": "7.5.4", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/shaclc-parse": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shaclc-parse/-/shaclc-parse-1.4.0.tgz", + "integrity": "sha512-zyxjIYQH2ghg/wtMvOp+4Nr6aK8j9bqFiVT3w47K8WHPYN+S3Zgnh2ybT+dGgMwo9KjiOoywxhjC7d8Z6GCmfA==", "dependencies": { "@rdfjs/types": "^1.1.0", "n3": "^1.16.3" @@ -4534,8 +4809,9 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4545,34 +4821,39 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/signal-exit": { "version": "3.0.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/sisteransi": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "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/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -4587,8 +4868,9 @@ }, "node_modules/source-map-support": { "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -4596,7 +4878,8 @@ }, "node_modules/sparqlalgebrajs": { "version": "4.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sparqlalgebrajs/-/sparqlalgebrajs-4.3.3.tgz", + "integrity": "sha512-g5+fYsb+7bNDTR72cCo/BSUgTroYr3hVtf+bAz7jszx6yU8+hHZxcoDuT+zkCA3sfHs/qG9oYDD/TA3UsH07eA==", "dependencies": { "@rdfjs/types": "*", "@types/sparqljs": "^3.1.3", @@ -4614,7 +4897,8 @@ }, "node_modules/sparqljs": { "version": "3.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sparqljs/-/sparqljs-3.7.1.tgz", + "integrity": "sha512-I1jYMtcwDkgCEqQ4eQuQIhB8hFAlRAJ6YDXDcV54XztaJaYRFqJlidHt77S3j8Mfh6kY6GK04dXPEIopxbEeuQ==", "dependencies": { "rdf-data-factory": "^1.1.2" }, @@ -4627,13 +4911,15 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -4651,20 +4937,24 @@ }, "node_modules/stream-to-string": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-to-string/-/stream-to-string-1.2.1.tgz", + "integrity": "sha512-WsvTDNF8UYs369Yko3pcdTducQtYpzEZeOV7cTuReyFvOoA9S/DLJ6sYK+xPafSPHhUMpaxiljKYnT6JSFztIA==", "dependencies": { "promise-polyfill": "^1.1.6" } }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, "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", @@ -4678,13 +4968,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -4695,8 +4985,9 @@ }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4708,8 +4999,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4719,24 +5011,27 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -4746,8 +5041,9 @@ }, "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" }, @@ -4757,8 +5053,9 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4803,8 +5100,9 @@ }, "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", @@ -4814,34 +5112,26 @@ "node": ">=8" } }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.0.8", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/tmpl": { "version": "1.0.5", - "dev": true, - "license": "BSD-3-Clause" + "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, - "license": "MIT", "engines": { "node": ">=4" } }, "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, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -4864,13 +5154,21 @@ } }, "node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } }, "node_modules/ts-jest": { "version": "29.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", + "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", "dev": true, - "license": "MIT", "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", @@ -4909,18 +5207,53 @@ } } }, + "node_modules/ts-jest/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/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" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/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/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.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -4930,8 +5263,9 @@ }, "node_modules/typescript": { "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4950,7 +5284,8 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/universalify": { "version": "0.2.0", @@ -4962,6 +5297,8 @@ }, "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": [ { @@ -4977,7 +5314,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -5000,8 +5336,9 @@ }, "node_modules/v8-to-istanbul": { "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, - "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -5013,7 +5350,8 @@ }, "node_modules/validate-iri": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/validate-iri/-/validate-iri-1.0.1.tgz", + "integrity": "sha512-gLXi7351CoyVVQw8XE5sgpYawRKatxE7kj/xmCxXOZS1kMdtcqC0ILIqLuVEVnAUQSL/evOGG3eQ+8VgbdnstA==" }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", @@ -5028,19 +5366,25 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/web-streams-ponyfill": { "version": "1.4.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/web-streams-ponyfill/-/web-streams-ponyfill-1.4.2.tgz", + "integrity": "sha512-LCHW+fE2UBJ2vjhqJujqmoxh1ytEDEr0dPO3CabMdMDJPKmsaxzS90V1Ar6LtNE5VHLqxR4YMEj1i4lzMAccIA==" }, "node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } }, "node_modules/whatwg-encoding": { "version": "3.1.1", @@ -5062,17 +5406,22 @@ } }, "node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", + "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==", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5105,8 +5454,9 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5121,13 +5471,15 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "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, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -5166,25 +5518,29 @@ }, "node_modules/xmlchars": { "version": "2.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -5200,16 +5556,18 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index a10f921..6157bd6 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,14 @@ "author": "Arthur Vercruysse", "license": "MIT", "dependencies": { - "@ajuvercr/js-runner": "^0.1.15", + "@ajuvercr/js-runner": "^0.1.17", "@treecg/types": "^0.4.5", "@types/debug": "^4.1.10", "commander": "^11.1.0", "debug": "^4.3.4", "extract-cbd-shape": "^0.1.0", "heap-js": "^2.3.0", - "n3": "^1.17.1", - "rdf-data-factory": "^1.1.2", + "n3": "^1.17.2", "rdf-dereference": "^2.2.0", "rdf-stores": "^1.0.0" }, From a334125f5351c19d008d47f6357de4d31692543e Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Fri, 8 Mar 2024 15:11:43 +0100 Subject: [PATCH 3/6] Add connector architecture tests --- tests/processor.test.ts | 85 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 tests/processor.test.ts diff --git a/tests/processor.test.ts b/tests/processor.test.ts new file mode 100644 index 0000000..ecfc7b8 --- /dev/null +++ b/tests/processor.test.ts @@ -0,0 +1,85 @@ +import { describe, expect, test } from "@jest/globals"; +import { extractProcessors, extractSteps, Source } from "@ajuvercr/js-runner"; + +describe("Tests for js:LdesClient processor", async () => { + const pipeline = ` + @prefix js: . + @prefix ws: . + @prefix : . + @prefix owl: . + @prefix rdfs: . + @prefix xsd: . + @prefix sh: . + + <> owl:imports <./node_modules/@ajuvercr/js-runner/ontology.ttl>, <./processor.ttl>. + + [ ] a :Channel; + :writer . + a js:JsWriterChannel. + `; + + const baseIRI = process.cwd() + "/config.ttl"; + + test("js:LdesClient is properly defined", async () => { + const proc = ` + [ ] a js:LdesClient; + js:output ; + js:url ; + js:ordered "ascending"; + js:follow true; + js:interval 5; + js:shapeFile ; + js:noShape false; + js:savePath ; + js:loose false; + js:urlIsView false; + js:verbose true. + `; + + const source: Source = { + value: pipeline + proc, + baseIRI, + type: "memory", + }; + + const { processors, quads, shapes: config } = await extractProcessors(source); + + const env = processors.find((x) => x.ty.value === "https://w3id.org/conn/js#LdesClient")!; + expect(env).toBeDefined(); + + const argss = extractSteps(env, quads, config); + expect(argss.length).toBe(1); + expect(argss[0].length).toBe(11); + + const [[ + output, url, ordered, follow, pollInterval, shapeFile, + noShape, savePath, loose, urlIsView, verbose + ]] = argss; + + testWriter(output); + expect(url).toBe("https://era.ilabt.imec.be/rinf/ldes"); + expect(ordered).toBe("ascending"); + expect(follow).toBeTruthy(); + expect(pollInterval).toBe(5); + expect(shapeFile).toBe("/path/to/shape.ttl"); + expect(noShape).toBeFalsy(); + expect(savePath).toBe("/state/save.json"); + expect(loose).toBeFalsy(); + expect(urlIsView).toBeFalsy(); + expect(verbose).toBeTruthy(); + + await checkProc(env.file, env.func); + }); +}); + +function testWriter(arg: any) { + expect(arg).toBeInstanceOf(Object); + expect(arg.channel).toBeDefined(); + expect(arg.channel.id).toBeDefined(); + expect(arg.ty).toBeDefined(); +} + +async function checkProc(location: string, func: string) { + const mod = await import("file://" + location); + expect(mod[func]).toBeDefined(); +} \ No newline at end of file From b3ee3e6152fb003d19a6b17b766a8d74c2616b52 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Sat, 9 Mar 2024 17:20:31 +0100 Subject: [PATCH 4/6] Changes include: - Use n3 DataFactory for SDS blank node generation. The one from rdf-data-factory crashes. - Implement logic for supporting before and after date filters. - Add tests for Connector Architecture processor. - Update dependencies. - Comment typos. --- bin/cli.ts | 22 +++ bun.lockb | Bin 0 -> 194736 bytes lib/client.ts | 23 ++- lib/page.ts | 117 +++++++++++- lib/pageFetcher.ts | 8 +- lib/relation.ts | 2 +- lib/strategy/index.ts | 2 +- lib/strategy/unordered.ts | 6 +- lib/utils.ts | 2 +- package-lock.json | 10 +- package.json | 3 +- processor.ttl | 36 +++- .../ldes-client.test.ts | 175 ++++++++++++++++++ .../processor.test.ts | 8 +- 14 files changed, 376 insertions(+), 38 deletions(-) create mode 100755 bun.lockb create mode 100644 tests/connector-architecture/ldes-client.test.ts rename tests/{ => connector-architecture}/processor.test.ts (87%) diff --git a/bin/cli.ts b/bin/cli.ts index d331260..520a417 100644 --- a/bin/cli.ts +++ b/bin/cli.ts @@ -8,6 +8,8 @@ import { Writer } from "n3"; const program = new Command(); let paramURL: string = ""; let paramFollow: boolean = false; +let after: Date | undefined; +let before: Date | undefined; let paramPollInterval: number; let urlIsView = false; let noShape = false; @@ -27,6 +29,8 @@ program .default("none"), ) .option("-f, --follow", "follow the LDES, the client stays in sync") + .option("--after ", "follow only relations including members after a certain point in time") + .option("--before ", "follow only relations including members before a certain point in time") .option("--poll-interval ", "specify poll interval") .option("--shape-file ", "specify a shapefile") .option( @@ -64,6 +68,22 @@ program verbose = program.verbose; loose = program.loose; onlyDefaultGraph = program.onlyDefaultGraph; + if (program.after) { + if (!isNaN(new Date(program.after).getTime())) { + after = new Date(program.after); + } else { + console.error(`--after ${program.after} is not a valid date`); + process.exit(); + } + } + if (program.before) { + if (!isNaN(new Date(program.before).getTime())) { + before = new Date(program.before); + } else { + console.error(`--before ${program.before} is not a valid date`); + process.exit(); + } + } }); program.parse(process.argv); @@ -82,6 +102,8 @@ async function main() { urlIsView: urlIsView, shapeFile, onlyDefaultGraph, + after, + before }), undefined, undefined, diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..719197334d37b553147fa32c78fbbd7c292996c2 GIT binary patch literal 194736 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

=jrl~yDe+rpZ zzjuoNfSFqzAMWb>_(u0OcI_n-_IDwtcMm zRrXOvTK`Iasg-?gLl#}fcby~;_{>F$aNYQ4{dU`$RR_-3ZZtc1FkRX9he>zogsqtm z_qzqStxVI(?vejA^jv`G%Pi;JvjY4zj%p@!KdPMhT~DzSTVeWbAR@dOgcP*!m{Qdz za1-M&c)(cyzJ*mY147Oge(*By$=cpWA@@tkcTI`*heUUGDhNuo-!dq+a?OQ#VahH~ z->wW-`gF_ba=&&o-fc8qejJi`x6{ak6F(?=CxxAOcm1x);z_Zu&r~h#`oiDU_3fY@ z_n)lWcW&2e?;2Ln#ml)ta^H@89r0m*XQ}mrtfL!`jo&-gV@kw*ycZ$7nRMO*a~;gT zG}W18ADY(Zh||MYYWXom-A39pZ2fk9=fLIpaoJG?mul1Y`PoK|$(|uw&aP!^_q8+l zwprLzwphBcKi>Nj-W_z_*&ipyT`ldKc)WwpJmaNX0%p#d*n4Q7b`J{&6^W)eok&rf zdT+ARndey(_UDh?G4p8bxVjTTx@+?qKRPAoo^AhHnZ~=5&b#}5dHr0U(K@Efo;lvV zFns3JnT;lWYLXT5-WpeHR!F)SCD)Fz)*ZI%U1a%_rDbA=rBpj!T3dQYFL}1HN=E6j z7c|~obl#-hR;<3S74!S4blzq7Ovu8+*t#w~wB*Hw;Ojxgo7U|w+@NUxRpi3=di@8R z_CMY6+}3ySsR=?$^b=A#pIEzU`vDs7ZaOa?^RS1`E14=iH1S47b>a`N5gB_l@?++Q zgnmiu8hD^oygW;)?zT@(3_I6yOxl8J>-zRJu*&La>J{|kR*k|Si4N^{>dkyii#LnT z%g1>4(s>6ye5>><(YgF-pB~1e-<+SC;&|$7+K{p=+mU&VT|1OsC_3&dX&U7B;_*wR zse4n{r?n58cfGl)cA4CbgB>M&iuGvm;=K3_fFPLq~kdJLQm^t#~Qn^ZK^6Nec3gCY^AvA-p)}ND)4e;dtx0 zqLKV3^9x$Wfn#*^9Ul&@v6V6NzP0b#{jj(B;a43hrM&WvU%T~rYU=m9uIq{tjR&%P==+DWE(7pe3;vdi~P=fm!zDI5DA zsUA0`{fiY2B5qwGKX-Jp~`d}8TviQ}nvyt~P* z3VHb%*Di_oFr9bw8|mEp`(>_b$aHA?M(L1CwWG7|q+KFQ@0?yxJE-JMb=8iNHf`Sr z?X0>Y-#Pw!?{j_Pq~4X?Eo;#1cLom~8=+*V-fy>L z{JUwY1DD^Qr%*h7d}VEgkKdODSHn94m87O@+$#Ha@RUvs7Ek*~SBsduFYiXbPleZb z|0(>OzeoPV3ggymQ7>cJU~gj;u|ko?>QB+`LMN?mW%h5Z6EO)l8K!dc<&EA_iYq$= zzci@xU9Xtb?&kJo%X1u`P5kc0{;+$%6#BZrdsb3}r?mN`{9a#pu>JhW3a_Nf#Ty=+ zS#S5CUP|Wl7@>6Wr*rS^y*4iEaZe?S=+v}nwpBhNse8`NTjOkZ#r}3xR(q$hKt#qZ zkC1{Eo*=exbHBHKrL}E8Iet5Gw*J}_2|aJe-X2BaewPm?#`P{*_~25Vv&X^Xsz;2z zUN8+cJ9cl>=P-k|FTXF`S~LAIKC2L3TzjMl*XVvoQBmHiq*RpL>v&V_NHd3~Ig>Ld z9c_GjyUt6ty;x<$gmnt{>)fA3Y&uXFAQutzE;(}kI>QWe_X<0^gDXUVi0~dGq@abZ z#~&10)ON%-|4#c>uos>5o<2lMugS7t$a&#i8J3013UxQ!czNKty~xRN$2Qw6xssdE zai8v8uMQDT!7opYo04#o##=z={TlG#s-5o*6ZWVKUvCph@rXNNYdU>7w%gm;LDe|@ zk)@P!%%jfc9dnQ8h(4bAM7Y#rVerkpVNZt)F85pa#WSOn#(SK`%a22n2mI`XpM~(^ zoa1L9yhZ#Z1unu{%n)x0L%b&$;yuL>?`ej3&oIP$mLcAA4Dp_4i1z|RycZeby~Ggj zWrlchkLPD0``HzKk^&duEn|rHDnq>ZuAQHS_(=*}g!d&wytNGRzG8^C zjv?N9hIn5y#EYNB@w1S5_LiTdz(sf)7~*}$5bt}2cpDkw{lF0KM}~MmF~s|sA>J>BjslyyzLm`ZO;&I z2Zne>7~&OWh_@p{ykZRTc4CNEoFU%M4Dm`Z#4E`VZx@DmyE4Qp#SpJFL%cE!@yas9 z+l?V!{Qhiy7IJ;V?;GQ1A-wVo@%CVdwbsx!pfk0IXv4Dk+Nh<6}Eyc!JgYBI#D#SrfxhIj`v#H-B^?+}J~ zbr|9u$`G$EL%hQn;?-k_cQ`}5BN*bzxUCUt-Bny!buo{46A1Yle6yFvL5N zAzmAXcqcK$JDDNgDGc#WWr)|7AznL%c&OtV z6GObt4Dq@!#OulsuNyNjT4Pb~j zkRje6hIoS+;tgSlHf+60O4Dlv1 z#GAwr?<$6PS2M)Bh9Tay4DqgGh<80hyc-ze-N+DcGDEzZ7~)M~h<7tXyjvLJO=XBT zjUnEx4DqHj#GAno?>2^bw==|>$q?@jhIn@}#Jh_j-rWrG?qP^Giy_{<4Dn_&#Ji6n z-u(>m9$<*~AVa)|7~(z55N{4cytxeV9$|?0C_}t?4DseO#Cwb(-U5brk2A!3f+5~Q zhIoq@;w@%~w}c_ylML~mVu<%NL%e4g;yud{?>UBe&ojh(fg#?D4DnuKi1#u>yrm5B zUSWv0j3M5u4DpsT#Cwe)-s=qU-e8FLCPTax4DsG#i1#)_ymuJly~_}9B}2Sb4DnVo z#Cwk+-un#kK46IVA&pn~{@e9F6)VNe6eSMbnENjN_U#21rPiB$4O{cFs=w4emk_zi z#TgwpI&FE{OVwb}%zIgGN@{rr0&2#_O)T(PH0sO)_(K`;_brd;yp~-W)Vk{i9IT4S zHIun$G)Z6nxwgWA#>}yq=VE&w4mVj;@VZo1SZR=G%!|_t+=YdXCu!MjwKy<2>*(I| zS`)_6zt86}jh7#PmxFX-AmAg8AAJ9RaA3^UZCNbw|DiEseBmN27JMI79LWdTet@kj z%|_1szpP;xSp#4or6Dh)K=%;j=l|vDAn3aw1A+_)G9bu+AOnI7{4dJ@-s`yxVX@$Q zF5`SacNX01{Vy9~{&q*0q9Yos_#EZx>!s-(LY)MK=ZO$2wmYKV{A?RXY&ieC*&(4= z|MeVcBhZ2j2r?kZfFJ{c3%LL_o{eL z6X+Zq!VZReotZ3_)c?geF;{CGIrsP6XZ^pU<-g4hZX-wRulKC~X5*Gm&`yv6K?eT! zXP`BE&c9^``OeP%=X)1?ZibH~o1dTm4I{Aq%mC(Z;GBQHQ}}sSa3sjUe}4w>eo`-< z^Le}_=+^#T2(B561i|k;v~*_Rc-&aVdH%Qu`oH0wIlr%4+~$toe)-MEZ9kfy>4Mpz zp|uV zdyrCyR}?$IeV~$#lC!Uuhkt-Od>I#(rXQSw$2)-v**J_p>-c}EqhQ%ZwGo12{LT|B zyD1xf4~hw%fU<|OwS!|b%9cgh+JkK@W!p>HI)H5@9An9*Y{6;QV0luZU~3#sIvplq^W zi>GXbV8g?1Aaf{eG1X2EY<_Tz`6;2=b%$erIL2~{vdP1756X51G#>T;pvEM@Bn z#}At=EY>;7rU3N|lXzDtx%32e_P+hq#d8*CMDjO7Z| zP8p7GQMNM5rUJHi=nTqL%BBj(BPd%rW$OdBmlXCIW$O#JS~$ksUI&dKsDYdSEan#d z!#|cfNINP%^pCcFARWMl`Myor`opmZ)$R^u8vwT1aExPcm$D6n;|R)DN!c{O76Qju zswkT#99zOMj!QLY?2;CU5Y-NsJ{}GNaRtHhfU*sS~=7Zoqxe#O#NIXaa$YK!OE0=-H0>M4f2?X~=R}eQ4dk_bZ=^&#) zx`K2AIS9TFfhd9W22lo40l_tfa{82b?oFM{rKy9KdnFyyN)cc;SAC>kRj7a}eC8iy*dQkP?tnAg4iaug1N3J4hzT zE|5JSSs;5svO)HN;9h+Ip~4kEl3^kyarJNDS`Sa zkSoB0dpGXYxHsPic?5#jghr4LAm2cAK=7KN4Va-Ix*#2(E(+2KL>goih$)B-$YJ0( z0`e6EuhqLjHUee?NE!;%w}PaDWPoe~*$yHEbK)G}aqrs=`WQ$7$Z?QEAcsM6KypEj zfNTUw21x~34YC$w8SpO$Spgypg4dq*Ab4$=2NDk4K_DR@HXxHg%s|G1n1hS~83|$t zG7LlyWH`tO5FL=gAh9qGF(7k6qCtef)(H9o$VU)Y5O^L3?f$>!-UC32V)-9GFoA-AWE4dZL39r|vIG%D5fKC>7y$R~_U@M3 z+dX#oI1Uj}5saW>LKKuBD&{9D20$@K446PgpHBtM5ft$M`BeAp%gww1>M*nI0Y3nK1U!ed=K(JOUIx4Zcn#1TxDc*IfMP%ipd7&Q>np(5fLeI| z3;A{fdgHzi;8?%}KvSd*!gV+D9f@lP!0muL0QVy8PQVJly~xLLV;!!~0G6}TK+_ke$2 zUh&)!*XQxv4%Z_9W09pkt_K3%0lW?92lxwl+vC~^z!+dZ*y?zs4a4)ZxE_b=3cyRa zzZU!=xH4{x0g3^q0~bPi0Pqp+f5CMhzzKlE0IQLQ<2&Q0HGut)hp`W1opL}NFbwb| z%3c5{1cU&LNf?8)!1Z820q)NM>;>qHXO7d~0KNq-)r*M4|uoysn+y=N6a510+Pz+!{gE$f=fJFE( zZeSY3k=TN~t!L|=*L?wuGuV$qfI>h4APATU7!NobK%YDga3+8@I1DfZFc5GYU;v;G zfMYbrb&l^G=MMugR-rAm1{?xl{KB&90Vv=8fCB)`$9RTu4e^X=Sr5iHd~OM70cZ|j zT^a+d`Z4}t8uKw0u+p31zNt<>7+02I0n4(=BwZT-%VLbu5zr3M7H~M=2ta!PXTXeQ zjs#F|)E{|}z88S;jP=ZGE`Tu%V;aUbtg{vCFuv&qV0^>8mOP~4bALcT0An4-JftO# z`lgPV$62nWYw}?}=HdPE0OlJ6ppJ-RolXJ_2Al{u0dO+FO5@eKC(hzUK5P^6ppR$U zF^x7zU+*lJexJCJfDr)dz*+uqJnsuQ9WV-Dl|f##B|bar)CSL^0W6dLi@e!Z7Vj~* zXM42)Smm%x@}WICd6CxA191les3+_G9NaU{xd4loo6aoWq^GV)GXX%}mi{dLvQCuY zJOJ~O#+gPt$p;((I1a!*MgF{JKISK$a!?0MXPR|gfcr@R>W?zl0@MYB0hDV#;5xuu zz}0{`fZ2dc0T%&g0xks109*i=4wwR{07LPOT?M!Ta2eooz?A^XFb{Ao;2HpVQ|6lh*8^q( zZUo!_xEa8@F9h5I*c-42z_g`+M*+(L%K+5d62R>M*6$90m5)~^k5zcSAFu*&C*VH7 zy?~W~y8!n9?gl&zcnI(S;6cE@0FMBk0IUW)4tPvIZ$X2V0=D3pF*@VaPXL<$&miqc zTsPx-FRp8FeHy?xnQ4#Ux)xV91k*S-WBLbx$8rA{fO)>a^A^Acz&Zf)zl!TCfR_O; z0oDVa1v~?I5%2=wIl%J(;&}fW;C09I8@PWHz%n-hSnm6P_W*AJ-UYk^cpI=0K-v!h z9|4H_6!0-%UqCAW=|2H5ojjS&w0{FW2Yd#gJ{W@&Pn}r!mAGdd!F_vi=iz!a zfN|^=JW~gI0AB$peDS-89 z3D^RBJzVPo_5qZw_ExZv!yyxf$SA@0*a$vaGgby;;_c z0IMwz#{CxXXW6ZAPn+loxC(G3;AjBnzm`th(vQxG4dUSEB!?WKmb4+JO)>bM-SY01LOg^0?3E-r0uNl`Aput zlFrJ*=e~g6fL?%O0et}d^p)vOnON39z;OVUMOj!U@*xZZoC+8WH~}ySa3a8(?+n5H zNdWqzlW}D}tNanTC$Im%uH;SIWt}1bwlQ^F3ZSjf{%Chwa8H|_h@|+GhA8-X=7T^-Vg@74=ivTkL7XxMkE(Od1Tn4xt zkg0#_$)8xf@*q9S-U1+=T?LeN7;&~N-ZOS&b{tMU9K;0Ztzz-s{V zqP&(q8seVva{RUE*C35N*e|G;^8jqqrvZBboO+@?)I*wcEa2Eey^xOjTnpHOH0tz4 zzzcxq0sWA60Iur+&j7{))&ZUcJg4CmTwemb40sjr5rB1Z)`Rv%J7GN<r3 zhxY()0yYBP0I*J5fUAou^;sWR%KSR6l$-oG9(Ka@T>xpxX9Iw-&0Dy>4R{A|F`kLr z2f+4ayHx?0_CDYPz=wd%fR6#Cfc-$jxRWx!vV5ynn)6?;Q)@zApWI%#U1TM`9x!izJ$ce~*T1+6n69~9fsnaq zU0^DPtf{xD?^Ep*rYBI+0>E6``RuEYT-Co1xpm3y+BLWPq);MBc}nIk8@h4C^_}f< z%Jna5Z=TR))Wb)wz8aWrxm|L*!5<|8LUz+LE8cnbtaVQ*8VDgX(EU-);`TF-Ir`F2 zJ}^CU^K$dl9I`PmfBm}hrS6A5^+xSl6Cglt*Iu$>!J3|QZD`7zM;7!JO!wR#YM#KF zes@Cf{ieyacL39!G+ktN!`SzVB z>YY61vgtz8g_sV&INP*#txibc-!1^P6IpTD&>{5;>VT$OZg0{UBc;xLux;cmPu8wA1NPPv&D~`$nTOBJYxK+!*Rf`(nD(Gq)P6^Y3t!#u8Nsk)$vzVL>dgDr4ISCF58}ltNhXT{?#HOPLeqXxF#vHJ>tX$2!{H3Zh2lj0Cl#S^IOgqqg z{o(Adzsj95%EpWVhO!+#C3ozYH_H~=nDc>QP4CO!zfQ>uJLlM#g}@vF%u&7n`eAPK zLnAikF-^1mj-uO2pKSYujd@>VF8gs+odr+T?Isw}!SBGd1-A$LR8IV1N8aH!O-s1H zmcSHVKeYBc=Qiu3F=&N6U|It+@9wIl8)pAn&&G@Z<{)4`s?+eQ`zJkDX>$u|%vldz zw&{toOD!7cIsr^`&@}sg-jauRKT^x4xdIs0wB6SyMMixwYlDrs6BtS`yCNH+nAGpVSQHgUN?K?v%PoP7;`TvkH-o^ ziA2t-L9H4dwCSmrKqD@`YZr4r9glJvqMR%5Jo3`hrfj?)G+p7ZVb`lPW<<+^ySh(r zyj(C{b9)+e(3NiN_5GCRi~Q&3F%!<(wpOGT%w}Ndce)M#`o3{T9y0(KdU8)sac&*e zw{Plk+Lo7k*T0n#VEoI?>u&IgXrB_$(DxqKY{K|&zb?<0a-=?Hy}hGp9y#^thEGQW zM}ejrWP|7bTw_|kbZy;_FMV*OjVTL9!)4(_a>2*fKRR;umt80u^akyi{o9Y=M%(Gw zeq;X7ythsg8X0BG?c?gNMWc!GV0?09QexO!TlREryLzO^){8c3kN|zotb>wZq9hk1 z;Ij)0D|b&QY$&pI&F$so<6UKAfRYoAmW1NrWTMe6+nTrd^xa}`qwj@A*TV=H1-!YS zw13GJf6ybr3f#w^0sV>Uk~8`MMRU*AnTg(?c3y9Lf7jlq?9Hv8`d~b)*T~IGW7c&u z4ChUug9T64`Eu}cpR5z@NQ`8*-g`kqe{j@8f!jtOy74qyZ`otxgsun=pttp)f$C;n z)OWuRp6I!FIA|EZ!A9QzhP}S|Ikf{XZ>^}Sxxqp{0j32o!6$E>oii-%A@p2KJuYH7}LT0VbMiw(Ws1Ez-vkQ0g)#0taF;#pVUaORdv zuU*|l#eA@kWV}1%z-mO%XCEwBHR}Y7+Yp%+avr$R`!DPC$(0qS95oc&C^cxzV|}&` zI*~d4%obv9pF|_&$=4(o+*r5CGs?${?c4|q$L(c<>wmTSqtO?M4t%W2T#i|`22cRK z*sI^}Gw%2!*Y-p?-E+G$b}0mgE!Vbo+hebJcyGizmUi+hii$#U%(qTC@v4r~o|y*> z#%5|XG$j;GCNR_4@6JJkYyZIbpqq+r%_Bw<<`SzFjcO@QC{ZxF_3&7B-4&T&y zLWc>5f2ATWwohea<>SYWx;1Cd_kX;Ca^OYTx5J@Os8^5fIkQGr>=|{~i8}<7M@;V~ zvST;1;X54A-%=gc%_jhbm@ppza!U4PN6yurfp`-t8|qf3C1*~jpc zR&1a5S$AOQ-%y{Gz#I&k1s_F!+4%mhYow-vc>x$yc4qXM#E20uUb$5;(x&ECaFx0T z%W;jX#1dU2p&Hw0P5Ods^yDLfxlLVlAbK;`)Xc3XoEsWq=A!$SE!?uLV|%;h%>DE> z(9q%&kIlVkK<&dByC?^18fnoNT%{H-X7I3iSfM~U>~p6~DE|7ArF*mg=vnA5z|h0~ z^*miG2=Hqw~^nKg3$SR67b9jxw;fQ-Ns) zZi{m+TebbJt7Z!~c>iuW=8?$|shawaw1T1kfF=kD*gk*GDC)2^{5T_G6+mXKe%TSE z>u3gTV@uT<=lD5wEC~lzVo_ScR5SYB?_Z~T|>vXPDaETZ+ z-vGlnWLe?F3ziIvouM(%+iqam0CVGKgGRnNq}AuZFiwQjSW-=ddSEx@*_F%N9A3d) z5v-^(@@{>kngbp*WYej^;!n9wj+Hc)lL$@?L7_P<-|SrP@TbR~3=AV;U^;4=$nWF# z313vTH!$6>MvR@vZon`?nSRf5E^BsOm8+;^W$?G(-ltsf z_}qT4f(APutZEe8=tpk~y?f;AbMI&SXxR#a(J4XD?e1~+x>=p}IST81SlyxGc7lej zU6Q!}uRj{B3iZryTRC6HEl;wV+luJ?!59(?8-mw^V=q=mcy4139< zo&_TwdagJr+Gg?k7%?@Zf~5& z0fv^?xz_xfCcGN_#nNbAPFc7t6e!HkS^xa9A9ug79CO;Pxjm$Pc7TSh&}8b2gO9j< z3wEGp&{IHfHR)N|Yu^8jU7I~pez-79C;$D8zq~aucG{y_2e2ym>p&783HW%{K6l(w z@o-FZAic!w6Uz#tfx=)icxcJJt&iFm_?@kdr6=fM6@Zp_^v0#}w@M#ASC<1DO#m7L zbI!ppK039>o^4W&Sd}?~jKqo~SgDTm+%<2;q>nn#S9QfX2XHzNrp1+oUz$uAJY$h~ zF|;WCs9|h`TA2GY`9STwm-~pxek_wgl3HL1P}b*MM6ia66&w^BYfCb1ywP zPqjd{H-Vu~EWLC^|CJ}r=>QD&MA(B%gGHr5w8EBYYxgprMby@X4b-`SFJ62H_^_@$UYb)3%<_5Z5i2|2DPo zj00b&ueqV7HPJyfjiu3lw&fBSf7wqD>2hL4tmiSXHyJTt16YoUltOQB{`;aX!Ro_zE*f6Uu_;^U-YKLt&)syti}jO5&1xN712j|v_HhAjsj7|KDL{snH- z+t8v!^Rv$hekXfVGS-{9?T_6oN*(`pK)(go*QSqG!)eaxz|e;rGH0(_+V&h|^#w>^ z<~AI0EF~D;`Pn5cUs>M-+!#4PwzGg~0?gby9v;2>f;UI&nnL0-U|7!J^#uj5clbFj zH5CiN-fo~M5-gs-x#WrZ<2G?!nL#HcxDe2=XZSZ>b;wQ;kW=A z7aeH5xwH?Zh7NWftNQkttDjtbNt^xt;E1lG*xG&7iJMu+y?gM`4KE=Uv*O-EfT2H_ zHhnIa^DM)FAl#s^!H2Kh7(;seicf*v_<-kyaqxvo% zcjURh&bKj{=lN{R$*3i1th0Fy5pkgz+Vt!Bljb&V_}r@kKVA2{(hgTAGbK}}DKgQh(2bhufQT6K_e zFu0f{2qOn|QE=0WJr!@&SzvQB%jV)Kv{g+5H|qM(vZnL?95lYUgWJ?_5(>&`aL<-c zPkHNM#$sq3*2i4aOEtI0+cxPtkVqI2!p0YhgrdQZ_hg&G~Am)F9{{!_kx9?U6J*>PdjJo zL}1uYf!P2FIF>vRUb*qL#%r2U0??ondeF<9!kk^})=ekh?Oj`&1FIgr4`_p%irb++%FLFbFn+-&hj zAFrgIv(I%MH}%~_4~z4j^swf>&>b|i#N_RZmn^#dHu!k@MD}e4Vr3L&36f8&v!ijlJ#|KwG zaZ5YU=(8)M1}RHC?6%rlx*zn&SHQrx^g zd}pU`fB&**JL`k?0k<*0&_*vfs9)Zrk44@AM%ySliFg<5l(ijon$EKI_Gq7{P!7+J z?!K+pg~y!H`DmM4wrri)1@ULL5VLG%3n>T(!qK8w&hdL4uxrvc_hSS^O~tC#4pueo zJ@l3D@)ow53Jm=L#`#x(;Yd6Byl?*c_)R z`OG@_1l%~v+&k>saU+|*`h+dpR$!U}Q|E)a&F^XZrJP_@r~1vkaSv$duTQ+O=<$08 z=g2;->ZkQFq|+<+>oohkmq)a^(k`bZFqB}!p~Gigci49_Ur^=LWMn!5+~|9^mp!*| z+*c!C742Zr4sWt)Oi7Q4cXmGJ+Z%w<@wM4gBqBI$2#tPwTiqr{g|2=BG`j!v2Dip2 zXT*JPRet+^%N~M}@h8)I8`iQc9`7PVvG9{KYh2HwMlXFbf$K;rvfFQn@*zW4{k7$j zbGI;7)}A~RkH_MH(A1B&etFsE+#7BN2Ei?TZwt`yOmN>TmTb;DeCIR3a2*M~zK7;E zZPQ^5Un>Yy35}eG?R1LL^>5J|FK)8`o%CYxRpj;{?Ekzb%&~R-d~HLxjsjOhCS=+yRK;P-h2CUbk@H2 z|8h<9<3XII##>5FKG^q(^^&~;%-8q5hw(K>Kv>Afz)(A#IuF^k@S4;)c+1eivk ziPU=Q)Vr5%odFu{EzPm=1)!l1*}q}WE}i$kgewca9yYVj+2fB(YwI=*m4%bZP`v7{ zXKsIQ?3g}hqa4(e>M?uEt8`5-ZZP)d@M#^7vt=`T%LSmJMo&Lr?3B&R+gxtbtN`X9 zV9t5q$<=Q>`N0=9W;HO>+stuK&+L59i=WsSvmbp0H1$9e?zm@O!;6CI^y~kG_22! z4QC$TZT$The-K>rSWV8b(-gN^f2~^dXN#s$&~QQt+ZhWC{q+~$Jke@ho84~#qjxJB z4OcXsR}5J9<)!%-2u5Ngb8DMxx&Yj$omcB@J#y&qS6%}*9V5BKVmiV%$6{vdHAewv zsV9w4vK?D=Phx(D36mfjM|AYLnpm${2UAcEqv-jk_PYP!-u+uiInuYE2ZpUMxy6Pr zufE}<9AMZ!@FC_|!K~AjKX~S#zQ0Z!b{$7rP;lkN><`S^$&M4P_NhNojkFanwe7iR z+oc_~Y_J_OH?ywI8a4MhvqsJFf$NCg6^+`>EcI`wDf`cBrJt^Rs^<-Vpr+bJ%~G3v zl{pfsNxV~Ml+< zTJMsw92E`r22Dd~r}4(Nxyv3}xJF?(2Q>G_|J7JBM9bFT-!~lDw#!(aZPotGY`ry! z*3Dyy*?Px8HjdjnmOuUbw7e5X*cz=#v>pUE`jGox+1%pmb*DLI)ivoQQ7zl!*G~U* z(CwAiKsG%(n`dCZXkBlgbpGtR$M#$dnqGL>7`|%nGZ7U-w%>=%`@ZWJ?Nn4Fm_vX$ z44Bg2AMHNir$KXUn!dnrTxiz#%V8Za8^S1>3t8RpMF?Qn8{g}FLTuJhuAEwySQD!{ z3*6d(+x0^`tQoRtK?88p7Gmz(p{eDef+XJ6KBmWB&9}|wxd7c4%)Pz}<*>EemF=83 z`}m;~Y#Q^d?P6WiB|G0;y=c=TMK+Dus?4o@J-9J`YufOkC#TJesu>GfH7Ccz?-BiFV9Vo69+RjEec* z?f>h2d9{D0KS0aTSD9PET#nfi&D{RkHZ_-%KUTfbJHNw)!O`Ch-+`K9>5KF2Ilyqe ze8N2q+J4ujQq3rPvu7>QG}o6^ywQBY4!~>({c`(t+kW08m_zK6s>vg+iRpg+~q+aF|qt8e~k`oo+_$h^L1&H`ZQ6VIBq?CD>desaHs>6Y_2Fr2ZR{CQ+> zr)M7H`nAyX$$0@7djAF|oV2My|8INSn0J6-uOBpG^oY~0p3l))(|oQmt#*`sd-thr zudp$$z86yW$@vj9^u61^zU7uPIT|yjCN6-8$v~oI}~` zY$dIE-^^tX44ssb_X+1H>uvx1oo947coO%~r9Rzr%qt5MKtrjIZ?ZDn>VYxm+fvu0 z<<2};wcPKwHu!AzHZCV+-S*$9UEY{CUorTE6@D1Y2m{b zO^=-WfT6`VSh?rkid&92(8BceXj60hxVD1mjZsZ7lE}$j^LXx{ypEiO>aSh6bIXJE znlbKHg($j*I}Mk=%(^yPuZde9gKX?s1rycU`ogACaW4x2CznFdTt=(_61 zRUd3R?x`6XgYSn-N?@-G5$^U;LkDdCVidg?6hM1xeV*cW-YEqKw7q=vN5JS=b$4Lc z+B+MCO80bseE~4oVae^8Zf5rm-3G2YUgMa#ePw9*qPG|G43l^YNDT~Q%h=6tHkfhQu$zFv zyq-(-E>R7vfOcT^NG|b?UgxVURONKLu3*|Tx807Fl1WIRpS}dwCX}sjF!*xb@VbzI zw$rnF@0)av$67qUdBcW1vi8JvzV128fZ-XY)4#uC#n~@SKUZkDGUl;Q+aRRY4-%IT z+4IQqBc^K_j9HmFXjrQy@-jj-^dHa|`VVY$Zn4^Dy5OlZX7+t%4&y59%kTp{rq&L0 zaizfu55AYzSIued(+uE-RjL2SG(2PczmV=Q&7OC%C9&koJ&2j;Z^^GwgY!c-oP2b0*8 zxbVB}RsDuG;~brHGt3IiD`p3lsWqYc?br4@@vY7wO@r|?3=G$zJ2$A4f7rGE+6D~# z5xFHbX3ePZ`r3Qmp+@NwdwH!5J{?t_Ja%r`z=tPQj+Jucz*s+w%q%B+Pdpf{DhnnH zN_JH2oHcs;b*pqam}9&NZlrl&{gPA8?9k=|V05HvZiSlY+PofbZiPx5LgWdrKTq%U zQJX{^o*?3yLvKX)G3A3xJ6_hee#h;ILx{i!GN93NSSh|~I;Br(Xx*|W6$VFSa`F@8 zg}u;yFFtE=(~bX9XQ^SlIX{3KSC1dQ^U2Y%)A!qea`>7AJZ!XF%_OGpJAPsRt9V{n z+6Nfdy(zH}b1S%da@j@r*JKqrtSE1~>9+$f;CVh)2<5y1%t4TC!oeLglx~hx^2~riNhw_5>&>6 z<>giQqT#I{zR_X&ls{orWPv}k4$S44xw-pm9_et6{Si6z^01JHDwMxoxPRs9my4c% z6ZO$&N(@mNbl`Hj31=$VKt|AQ!->=s-b=f=AYa8V_ z?GFRVxoGUs&F@?_Ue+KXHFV(G>k&o&?U>Jp#ykd_J-K;2ePNm!&EDO(EuJ|1q1vjeaeUw8Va#!rVC*PV}zYQ>Y z{4tNT(esseSvqM-Mb(~jS_=)Vs!PsvVCY>gc`)>5r#>UN@$UUM z(8xlKLHl5rG**dGaL932*1de_7J7dz!Mf?HJ_{GT(rR+q;|BOk#Und@WT zmocyVn|EK#J8EVL%o_EOP0yLEbKa_^T-h$aP|Y=$ZhWcZ&kw)dnXL_l!sN~6nD-aV z5|~^2HAv79ttD^ga1`4n00XS zMXGNPuKUsMyN0~SbxUp6W~t5AYu;I{iB*|BYyl!j{+<7Hp8-cKe|;IG#wrDSV_~Qe zuLR<^4>p!>9dzJVKhmmHKm7nTrRQ6}@V&QYufFddV6@-)3K&LQ=l*B+_Gwqu%&)G)wSL}jqs+e)`59vb;ObH)-Ig6re^PN)^%poDSJ7x!c=dTnq!RYklSw6E$6hfB{1&?yK<9} z$#sQR_NrZ1GzDYU+ce0=b-w;D)aiIeofkQ$jt0MXx0ZO+n8+GIw=R?E`h|#t`dme%owwOGuweV z<}+JJd1-N=FdWZ$efR6tynddg>{jnTjK4UiXGBqx|cJ1DE-|w^K0+yp`C1{f=3q z=BTD7=lRUao*DpuBW9h)$a%Q_WM``Ajtjq}Cmf#M^))KPK zxoqF?q{vpt{UL`P(+vW)6`pcECI(t1lAB)>dm9hA)%CCz{XdJ_>F!&l;Q8`s(S!=_weSxTA*owqcDJQa=lBjUik4=r_lGH8y^s$R>Ui-&qJ31d5^$j6bp6 z0XN;c&6c`6m@EmDhN|99tlhJ5R6p*hX@BjCk&)^7E0sqY*!0tzk6l|wJQAcvO)E>n z1tn;o*UIMpzI4P-Cus>#pKtwMBa zE^EZvu6se(w4F!KzhLWOFV*9!hi-+Tz_b9SpnS&Z!OL#tsUzAbT00+@hQMrEbL!GB z=9Zi*G_vzx_ORxD`uQ-`8?#U7oBfXY1i0BF#UVAQM$Sma@!9wRZMxb&jnv!zX(XXf%9$U$q4j5zk?eN?P_>Yrou3tNB-SZ!4J+#4U!o z)z$5%prpQ$!cc-=RlvecAx`LaW_|I9A8i=O4=!}pXT%2L8#0p;o$+0bP-39`+d10J zy1{#rl2i~6mnR1XCsjZ{1@X?<5Q$erqoMdfejKQvIE`BRRY9z*EEp{e#Y0n*cry;4 zcgQacBuawiA%3!kp9cyQAvqSWl4s<@x9IWpe?cdZ9!iuXljVtHJ9mzUiXncyDmPkQ zHYt%Cix+n$jmp$H;CKjdR?;OmSv*a?_Y{U{1i?z>rhV`ZiDiDgC68t;_u!24bHdtJ zEEbd!iw_{?aYl&cL+ezF=HN`C5C|l^`8b;sJf!u6&`)?rlY@?L$OhC8e&JJYD6%42 z7{=^K_<2;rnGI~5j{*6er5--=r?nh7q&)}tLsnhMfyO*aOc3_$Ay0;Nfni2UKz6>! zav*HBB8rdybQZ%5(0H{`!d4@Z{9r+;XP$5*AMA`8eEzKt%nEGW&C{K~0N?RHp0*(}#%Yo}L(t-=VSZBt=y%adkJcO{-T!66;Ja}=C+IaE6;WGS+ zLoh!Q@?e?D18%AN06(MU=Yul}1HBqX?3(DoLOwvGOf?uO4&fd6NeO!9j3jRtosk)( zWu%DAGJfh}6@F5pD2VSy6^26PfzafNV1)fGoQRdh;^mmo+j7uK>32MIWpPXujtHk4 zUS|`V^q@;G64dDlus?38csD(E?)ghvAl7$cwY^9sKN=R~`&C#62{JxSdI;l^8%$kN zQ2}WLOBeSWPSB z{+(JZy|WlLh~*lPACc=Ok(bl()o2~}Xc3p(DW)>i#{=?7H{V)iyBg)4!7b%%REooA zcnOxx5GgWZ$Z+7~n}+zW*;@mWTL~8K?-r6VID&OXii4pFKrlY4@l>^fTO$33Te`P1 zbEAkuAlGz=#kB}nv^EsB7{2QeEe+rYW)XiPEW>alpIt zfp9$R(dZ@;h-X5Hrw~`H-<2qbZU zIh4ebUD(T1vhsp+R+_j>KN0OdoMFdy*P+y0GURxd*{vLg?xABbfz3St;D$^h*1Xo zT~cdeMh?a8g%U`|_3ern#0kF#mZB8qpO z2Xn4n>Re#ycna{_U}C%YeVkAvREBji&fM@+f^7$kL>^p`SAOUcEUjA^(Zu_C&{;p7 z2|DW*Mx?g|kP^WBJdD};G|$p)5fvXTuQ*9Ra|ErUvWni30QLG0TW*+2n#!pR%tPtUY+&nr6bI%fYP1`uqTP@evv{!>EU;FD)S7oPm?-rq zJ0m9;Wu$;BRqpLV&B{U_LFaT)mO?m`r4#h9QO$nIj-N?^!VJ7nnl%}XSLEX>9+k0p zX#%kneyvE)12WwG6xcd;4g98^&TJ^&`B<$%!o6@-Bt4=<1<)J)<{*yP5G))|=z!JP zUCUIBFoB9B0Q3uT&>}cz6X#l=bqlFE-qqBE#Jn^68qEE_95d8%1;or`t=BPxz4RuX zkZETgy~;p=!VDNY9v_GeiQ-s7GRnAs-;s)O%Z^Uhqey2ql;eC96ZBh~%qmw4D>8rs z->a)>3vyHosBJSBeLJxKZJP=!bpD{J7~=ksLQ?yQrjk+_9L3pbkR!`)c{Hv!Aw=-b z01>JYZl>bE%nm`VnyOi?PDlpsF%A}J{>yde)ndDNc^otrkv)A1p^FuyBS~!z0*ZD2m0)>h7h=z-BC`F7wx_Kao zFRrOwLDlb70%p_Yu_UKAK`c>M;ILF#K+hBc(O?usmZ&Prk45BX-jcD3 z;u0+9#Y)4W%5DV#1S$5MMz4WeqUcBd79Kl1gH19H==d(?H3Q4e3}s~}%AClrr7LL~ zl?luU`J0n83$-Fwkql!`q$tqalE}-k+3Wjcmf9W&sGqp>u{CHiV z&b9s2PJ@S~SwA9)60KYG5C2W)jMlSjZMA2$Jf-GhnS{;7N|E`o#71H6lVEQv>D3H& zCa|&}&`5OSml5jq?QIL2{UB8>Bua1fry z3DWX`bK0|n&3;`oy7L~H@_^>_I?u{@mbCh z35>JS#3hPWWfTi=SHr{E$;o2ykt@0jeiy~3MatM5Wr=Eaa$5w@*bkyrzm}lTE|qmA zNnQN{2iL(~G>73e4nt~8VY~70Z-Tazd z|5`HW^qmwZZKj9FKoL%{vPXFzjCIKkrY@<~Qfu0)7~rG&B+W?98UZKKC{sIUWDe#`iWOw`O ztV?GW0MRm&VB!Am*C{l3I3KHJMs|k+wfz8Eyni#ju4aFQvd7q!8gHQKYI-oq6aG=DVn7$UlUI_u$T_oUEEz5ed!AX5 za`5i3RU~e+ip7VflW>NKib%2mJM%aeKq^Hkr+wwt+Wq%XQP#T``rHPOBVvTa*`5G5 zDXcgd-w=>B^ePo^2P(sb$r3;I`dkz0<7{ZYjKTlBXJ7pNauVVKQ)Sreo!==J=$wz} zuKN54>~B(7jU`xqDXNG>q#p2`cn`Nc7LF!KS012~^{AYkNtdK3?86D-q-DtR;9_S2 z7yChK>!%%q^k8JbRLkW!)B{eACpie_7ffWC3V39tVW{_S`wSZdpNtd}sL)LbYS+W8qqDi6q0_p&7Ar#xwY75ISG@l>s`CT$$2=nRjn zctDipTWO)-0G=XGjplyy%`}$-^0a4%2TP6Fl7UT1kB%ua4iyHtYKG4ZVTI4|zDZg> zl#=%BC`GyFL_rD08L#;!yr=xgJy=<{0lcu`KQC}J4rm=u60rC+beede*MhPFdiP~u zA{;G<1jBI|t@C4E%LiF`!I4S@6+-wt{x+Dm+l=rWIf&$H#}*##kk)vhOnY`z!-GY7 z@Xrkyzv)7H_)fK@%>>ZJ{M*e6;z4cQ%2dU##ZqPq!qh!{y?+Sk2wOla;fq5-dcgy4 zZU&?I6%ho!*eZ@;OA3n)nK%T$ocDO>)Ifo9Qw3-yG89Ok&ZMCPD%0O6$R=`@Wv5DU zerv66l32RPWNW31U-NtIT&$BJD7d8V9p0jtuh}CI2oxo-Mi7%9zVN7gDi7GD?jeZ( zR92FcR$siOa!UEgIfJJ+N8$neJ`v2`t7gGa8}~V1okYk{eiE;;B9Z5 zUMLPJ2H`l)Hpp!#Iwc&BMR^chUa^ow33LKfvVN5Bx2t>kc!(Sg6V*znkAog~jZXqC znKp1X2!>wP?UEZ6a!C~z=BG^gW*F%s7$L+y{d|BeH^}S<+vBGuD+nZu;uuDyW-2FL zET=X2#!Wz`Jqa#1CJ;;%qQgfj$~@m`%*qQ1veGbj_g`r96bW2C@zpYNsa+s670j$# zNXAWFST`b5nZ||_UK0mLE^u)?aXj;#HDomdct~(BZNgzff0sdLEWuBO$j^m%^!d!J zV3{IQ9F;Rw)76qt1YcjWPQxGy3-g=aGWEj(bTU?o6b_dTlqIIQdPC8=mS%l%5gX(i7|%7|c(-@9)uKsXXA5x)-7RRO#@LpmjVs#wTmBAqt1C53O#A>42{?+O?zycd@lD)}o= zp}4xoYYI3lWA7X40L()%*_lzx>_qfyoS;#wG8H^^C;NJKzG{__&Y1_9{Kf$NLMitU zLF{;f!}5<@IsqbXmkp{1d;jAIQFI3@W%#K`O;&_5O{LdphngrC2Cx_+8_|4^W z@7Ivi18HzePvC(+UtKzj0te@#1Zmak2-@0G^-;#>sF2LG)GB&{BR|e*VtcFDa~Ucv zA1mji6Q3pihp&q$-{E0xb|x^gA7C&3yYZp2Fo*vtP+GTaX#cR$S!obEA0fUTSvj-7 z_bU=!)8|wka7o>BOs&R-APuauW95-7=pfWOq@#%t&G4vgU`p@QOvX#0*}1{lg-5ki zoaQNokN8Z7bRMEe7jim7Fvv=Cu+sAtOx+4f#d*RaQ@0-FIC7x`$5XW?Gj3Z*VB?lt zt$vqX3m2jMrf#Ape5aDbhNU(A=v0{4P!T^z%ZzdTbxhmM7a-axixpPjTzmvygI1$X znKh0jqQUY+NlY)#=HvZS^Fk5(czFPMq%!)xS|OBF#VX3Gi}mcRj0*K|BwT&^Qiopp z%m;p$I~kmcNzPQ)bXf*a-|tgwBtcoP`Y|MBP->$Ct6T}L$XCSi-A*;<3aA1^*g~9B zmm8T~VeI5A3=$_R;yjU#A0Y_FaYP#53JaBCWx;#9L*=2?Br{?d?hzq!kHjmmCxBSM zL+hzLpikXb>vX36b};DlUA5XOqmH1?NP*MvKOmN^J21*lbhN#P3Q{d%@nGvXNafL* zV|z^k(ldfvdIDMcf9h1(5{R`?*)x8RDrB3X%|J}cQ5_F9ezpsyep$rlOAzPUi{uz! zAk_mCu9@<~ID?gRMPY#z-+aOm98A`d{M4iBi|Jih@9*K&i=ZoBCd?|NaA$xGQaNsd zvckn`)r1A|+mY@BQEW+JevFIeD#MlF zQzP&w!9w?Jfue+%8a0XzA&~{8Sfqq1884EdA;XdT7B1P1IB=9c?|y zdX1&SWC%YGiyc-i8%X)O0KU1yFHu2}skxB)kuJ4y?e(37O#jM0EEbN%QvJTF+y)-9z& zbk!7?Ny+g7yQ6y4H#;*6%i{2NM0S%2Ox==Ih5Yu)GK`4=YP&Kj#4+CwObI8#b}!dr z6jekE#PYdgrwh=ik{CY>IVFfMX5gb#mYG}Pm*Yhttk%gP2D}p&p$kC|@=&qFPC)%Ck;kl{;VzDA_zN^)iA=7_*|#<64`?aB4qH9=-2l%9Zr@G`M}QcRIM!) zCnrZ6fs^A&G$Zp#XLinSWMiP3%1`BItu0#A*MHS6t+R0*S~~D5y zBD=(HHh&kS(x&nZijmB7@r`PJTR)9;>MdzR(HzUm-{89=ihm zE1}tQS%!GNYtas|P^42z%!T1f#B?Og?AE1Am##f}cfrS1!WH;}J74vc*W0lx%XbtC zO88a*wiJ1y4d0s$;fO3&bfFr2-_cP_pfKOVrrZf2nma{uN2 zD96qX-u8ovQ+)!|v>Jju?O9?x-w&_4DGr?6lEt6)?BUmGoXrAG&PS<~Zaz_!hhDs` z7>soUmucUsYxoJNxjT9dMdezN>O>gz_Q@bs_DDa%|@+6W)-25Yp$itRnV*g zGBZd~zH1a*$mX0zg|A?mx_2!9N}y%E=W3lXtc)WbkrxL7SdGN-5D%Y~l@|qNrO94^ zIzCiZ5y$^H(NMz0RQOQ-Sg;3wM=o%7JjuBezt8Q5?czY~c;ddT+7|IByF84g6gldm z@1!2pI;?1)rbD^1rC_I2Z{=TzQYSwwE~x}Z8|n=}$7#f(e0A&tF9Lg1uQC|HX%KK$ zHxk;&Nn^g+BPYK+h*Nn$pSl+o>SbXM(j=xtpyEXc{30DkZ9wLDlK4=}%A>S=Ocg-J z3-aqQUcyZ5D)j8`L1||Kz5M{w@!yidYre9X2TJQ!X5iv?qC6$f&oJWE8qb3d=@~@| zC#7@&-!&w)VC%3B@NqoBruoXC_b6(9I}FUsNKv?-fUYhGY+cjk{b9ACWO*xma4ZrF z76zhK1z3IIZzT+Lpw!8HD?yHD^Jg*R*mA*VkhzxJDb!LNL&PRK1RQ+}k zwp=_cDwPLZQuoq|((mLz9hY)>K*VzeHzOytC5u-nT68S@CyL6)`!hHWT!jGK$f}}x8bL-aI{Dc zz=F`al@k5NDu+%%>Ua`rzn+`j&%i`=I2m94f-FO?WF>H@CiOan-CyOTwitC<2J2k{ z4>NGhpIMN_2P)^R*V`pJE1%(iz&9fW>eS}}`NC8=4jJ*hCOxyYM9U+L9`ZZ0fxYul z4!TNHsU`D3Rj`a-MfBi?Q##B9M*5CMra#O}Ci>@h!6cNh-a=LB){{4X(8uv@M)22n z5;*xSpy3sA***f9bt`75KFmgzQGBD&vto88FtHzmjh{7UwhTCACW%%1^$K}Myn-Jj z)ps(&3KdTDatSZx!Vvo=Jl~iQSEX`+pW{gs>L-b#I8ZyDY?JXY672emxGY%T+BNZ} z3*(@qBI6yR0ROkF%JFd{x=Xo&!v9UM)LUGjO5LMo{>L$0*90U?vfi*ypZD1)jz;?B za}N!;^2bRsR!@CV$Ua?GJ&t+?A$w2Y;(T;W1SGjUTFx^f+@->4Gr8uf-C-|}kdYH* zWTc=;^Z{8q0*&<0fzDwwLLbC>o5VR7x#e((+IA4DmX4n~v@GZ4@cZI8Bv*#FWJ>Xt zcO>ZfyQ$WTgzl7(!iTqb2*3VhOA3begV6fUMAPaF`gA2QQua4o%>H7Pe9=?gNSlbz zsl8=1PN7Guq~!yjv}e@AfA=lR#=s>jjcx6_+9^~#8)|Xjy~CP4s*!oj6dW>>swILt zC}*Dm0w4RqF-_;E6mVq2^GkoJJQT*tFTtCiSt%*94`tYA{hSB-Jk;XM1}V_%d0@F+Rc91jK)$CHBz-*}EiF>`aEy`*!=p1~VIf*xd2ys;Tl=KV{9nOVV8 z6QSYsREN%Azi#6pp(7WVIG$vn_IrO@x|mkZN(w|nm3+6+L&o%s;Fz9Jt!^XrEReTaEs@ldLm)U=`z%UPRH+7Mpvx<8 zHW5psUcNGw2i#NlGT--GdQBB$$%T&;lsKgFP)vrvV33i*fdZ!KJvS)~@pVNIs~h-2 zZhM0!ZB3;t$gll-2vZOPi-H(TSbr_tBX81^_>U_E>*oJ zPQ((u98dKqEL|BEfmN2xf`Mf?h{g8$lL1lr@I^xg8+fbm?cj&nO6EN=FfP@#B7|V(Y zX9tdNT6wP%I5L8f=wp9MSjr0#qs!SlASBm;N26 zG!m+y!sIGS_FG?2wxzq6%zy02OySg5J8-f|ybcZ*;8p5E*@sgpRx5u;uRBkPD9Xy>ZfS%lk}BP15WCzcVH{9 zrxj4!fQe{%SpYAo$$AP8oR>pa+*0(9KU{Lt1hRS9Q!Ecf$D$$q-kiRZO86}x;_Kdc z=c9uxBM3@Z6z_bjru{lLS{%)lSrrGW zT23ZSJN5=nCR-a*Ehms=fZ*paM?@k1%TA(RIo$wa`vHS~H{W+i(!YQT`t$^7#(x1V z^~F_?r|v~^u|E1L%uAAZoiUz^MJVPyj&>lU__=YOVA#r%3%KpZ1x3fL^p^E-*5 Sqix6U#P(DXdd~mRzyA-J)jB-@ literal 0 HcmV?d00001 diff --git a/lib/client.ts b/lib/client.ts index 1700648..3346974 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -4,8 +4,7 @@ import rdfDereference, { RdfDereferencer } from "rdf-dereference"; import { FileStateFactory, NoStateFactory, State, StateFactory } from "./state"; import { CBDShapeExtractor } from "extract-cbd-shape"; import { RdfStore } from "rdf-stores"; -import { DataFactory } from "rdf-data-factory"; -import { Writer as NWriter } from "n3"; +import { DataFactory, Writer as NWriter } from "n3"; import { Quad_Object, Term } from "@rdfjs/types"; import { getObjects, ModulatorFactory, Notifier, streamToArray } from "./utils"; import { LDES, SDS, TREE } from "@treecg/types"; @@ -19,9 +18,8 @@ export { intoConfig } from "./config"; export type { Member, Page, Relation } from "./page"; export type { Config, MediatorConfig, ShapeConfig } from "./config"; -const df = new DataFactory(); const log = debug("client"); -const { namedNode, blankNode, quad } = df; +const { namedNode, blankNode, quad } = DataFactory; type Controller = ReadableStreamDefaultController; @@ -282,11 +280,22 @@ export class Client { throw "Can only emit members in order, if LDES is configured with timestampPath"; } - this.fetcher = new Fetcher(this.dereferencer, this.config.loose); + this.fetcher = new Fetcher(this.dereferencer, this.config.loose, this.config.after, this.config.before); const notifier: Notifier = { fragment: () => this.emit("fragment", undefined), member: (m) => { + // Check if member is within date constraints (if any) + if (this.config.before) { + if (m.timestamp && m.timestamp instanceof Date && m.timestamp > this.config.before) { + return; + } + } + if (this.config.after) { + if (m.timestamp && m.timestamp instanceof Date && m.timestamp < this.config.after) { + return; + } + } emit(m); }, pollCycle: () => { @@ -375,6 +384,8 @@ async function fetchPage( export async function processor( writer: Writer, url: string, + before?: Date, + after?: Date, ordered?: string, follow?: boolean, pollInterval?: number, @@ -392,6 +403,8 @@ export async function processor( shapeFile: shape, polling: follow, url: url, + after, + before, stateFile: save, follow, pollInterval: pollInterval, diff --git a/lib/page.ts b/lib/page.ts index f24afdb..6b77e39 100644 --- a/lib/page.ts +++ b/lib/page.ts @@ -73,26 +73,125 @@ export function extractRelations( store: RdfStore, node: Term, loose: boolean, + after?: Date, + before?: Date ): Relation[] { const relationIds = loose ? getObjects(store, null, TREE.terms.relation, null) : getObjects(store, node, TREE.terms.relation, null); const source = node.value; - const out: Relation[] = []; + // Set of tree:Nodes that are to be skipped based on temporal constraints. + // Necessary when there is more than one relation type pointing towards the same node + const filteredNodes = new Set(); + const allowedNodes = new Map(); + for (let relationId of relationIds) { const node = getObjects(store, relationId, TREE.terms.node, null)[0]; const ty = getObjects(store, relationId, RDF.terms.type, null); const path = getObjects(store, relationId, TREE.terms.path, null)[0]; const value = getObjects(store, relationId, TREE.terms.value, null); - out.push({ - source, - node: node.value, - type: ty[0], - path, - value, - }); + + // Logic to determine which relations to follow based on before and after date filters + if (value.length > 0) { + const assessableRelations = []; + + if (after) { + assessableRelations.push(...[TREE.LessThanRelation, TREE.LessThanOrEqualToRelation]); + if (before) { + assessableRelations.push(...[TREE.GreaterThanRelation, TREE.GreaterThanOrEqualToRelation]); + // This filter applies for all cardinal relations + if (assessableRelations.includes(ty[0].value)) { + if (ty[0].value === TREE.LessThanRelation && after >= new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + if (ty[0].value === TREE.LessThanOrEqualToRelation && after > new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + if (ty[0].value === TREE.GreaterThanRelation && before <= new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + if (ty[0].value === TREE.GreaterThanOrEqualToRelation && before < new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + } + } else { + // This filter only applies for tree:LessThanRelation and tree:LessThanOrEqualToRelation + if (assessableRelations.includes(ty[0].value)) { + if (ty[0].value === TREE.LessThanRelation && after >= new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + if (ty[0].value === TREE.LessThanOrEqualToRelation && after > new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + } + } + } else { + if (before) { + assessableRelations.push(...[TREE.GreaterThanRelation, TREE.GreaterThanOrEqualToRelation]); + // This filter only applies for tree:GreaterThanRelation and tree:GreaterThanOrEqualToRelation + if (assessableRelations.includes(ty[0].value)) { + if (ty[0].value === TREE.GreaterThanRelation && before <= new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + if (ty[0].value === TREE.GreaterThanOrEqualToRelation && before < new Date(value[0].value)) { + filteredNodes.add(node.value); + if (allowedNodes.has(node.value)) { + // In case a permissive relation had allowed this node before + allowedNodes.delete(node.value); + } + continue; + } + } + } else { /* No filters, everything is allowed*/ } + } + } + + if (!filteredNodes.has(node.value)) { + allowedNodes.set(node.value, { + source, + node: node.value, + type: ty[0], + path, + value, + }); + } } - return out; + return Array.from(allowedNodes.values()); } diff --git a/lib/pageFetcher.ts b/lib/pageFetcher.ts index 71c6d24..2a45c1f 100644 --- a/lib/pageFetcher.ts +++ b/lib/pageFetcher.ts @@ -73,10 +73,14 @@ export type Cache = { export class Fetcher { private dereferencer: RdfDereferencer; private loose: boolean; + private after?: Date; + private before?: Date; - constructor(dereferencer: RdfDereferencer, loose: boolean) { + constructor(dereferencer: RdfDereferencer, loose: boolean, after?: Date, before?: Date) { this.dereferencer = dereferencer; this.loose = loose; + if (after) this.after = after; + if (before) this.before = before; } async fetch(node: Node, state: S, notifier: Notifier) { @@ -127,7 +131,7 @@ export class Fetcher { }); logger("Got data %s (%d quads)", node.target, quadCount); - for (let rel of extractRelations(data, namedNode(resp.url), this.loose)) { + for (let rel of extractRelations(data, namedNode(resp.url), this.loose, this.after, this.before)) { if (!node.expected.some((x) => x == rel.node)) { notifier.relationFound({ from: node, target: rel }, state); } diff --git a/lib/relation.ts b/lib/relation.ts index 9fba5ac..0689cc5 100644 --- a/lib/relation.ts +++ b/lib/relation.ts @@ -4,7 +4,7 @@ export type SimpleRelation = { }; /** - * This relation chian is important to better understand the order of fragments to fetch + * This relation chain is important to better understand the order of fragments to fetch * First fetch all not important relations * Then fetch an important relation with the smallest value (for timestamp path) * This new relation can access other unimportant relations, but these should only be fetched after full unimportant relation chains diff --git a/lib/strategy/index.ts b/lib/strategy/index.ts index aca860b..f473405 100644 --- a/lib/strategy/index.ts +++ b/lib/strategy/index.ts @@ -11,7 +11,7 @@ export { OrderedStrategy } from "./ordered"; */ export const GTRs = [ TREE.terms.GreaterThanRelation, - TREE.terms.GreaterThanOrEqualRelation, + TREE.terms.GreaterThanOrEqualToRelation, ]; /** diff --git a/lib/strategy/unordered.ts b/lib/strategy/unordered.ts index 2fa7a44..b75bcfd 100644 --- a/lib/strategy/unordered.ts +++ b/lib/strategy/unordered.ts @@ -41,7 +41,7 @@ export class UnorderedStrategy { // so one fetch request is terminated, inFlight -= 1 // - pageFetched: a complete page is fetched and the relations have been extracted // start member extraction - // - relationFound: a relation has been found, inFlight += 1 and put it in the queueu + // - relationFound: a relation has been found, inFlight += 1 and put it in the queue this.fetchNotifier = { scheduleFetch: (node: Node) => { this.cacheList.push(node); @@ -54,7 +54,9 @@ export class UnorderedStrategy { }, }; - // Callbacks for the member extractor - done: all members have been extracted, we are finally done with a page inFlight -= 1 - extracted: a member has been found, yeet it + // Callbacks for the member extractor + // - done: all members have been extracted, we are finally done with a page inFlight -= 1 + // - extracted: a member has been found, yeet it this.memberNotifier = { done: () => { this.inFlight -= 1; diff --git a/lib/utils.ts b/lib/utils.ts index 00b50b6..0328a9e 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -132,7 +132,7 @@ export class ModulatorFactory { } /** - * Modulator is a stucture that only buffers elements and only handles elements + * Modulator is a structure that only buffers elements and only handles elements * when the factory is not paused and when not too many items are active at once. */ export interface Modulator { diff --git a/package-lock.json b/package-lock.json index 707a625..e1d4d67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,14 @@ "version": "0.0.7", "license": "MIT", "dependencies": { - "@ajuvercr/js-runner": "^0.1.15", + "@ajuvercr/js-runner": "^0.1.17", "@treecg/types": "^0.4.5", "@types/debug": "^4.1.10", "commander": "^11.1.0", "debug": "^4.3.4", "extract-cbd-shape": "^0.1.0", "heap-js": "^2.3.0", - "n3": "^1.17.1", + "n3": "^1.17.2", "rdf-data-factory": "^1.1.2", "rdf-dereference": "^2.2.0", "rdf-stores": "^1.0.0" @@ -36,9 +36,9 @@ } }, "node_modules/@ajuvercr/js-runner": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/@ajuvercr/js-runner/-/js-runner-0.1.15.tgz", - "integrity": "sha512-mmUZF6O5nZeNyDdEPnCa2KpflKtRs0gklVGZJwZzSLpfKswT53Fr6ngxCXRI9yvZzRF+7BwYtS3XNTlM2sEUtw==", + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@ajuvercr/js-runner/-/js-runner-0.1.17.tgz", + "integrity": "sha512-auipGcIA9IZRSFAeVIagdpd7E98hm24rXaBf4agO4/8bSpfpCOIYG1F9kN1EwRPd8wQqfh9hCXIf13ndACZi8A==", "dependencies": { "@rdfjs/types": "^1.1.0", "@treecg/types": "^0.4.5", diff --git a/package.json b/package.json index 6157bd6..1effe97 100644 --- a/package.json +++ b/package.json @@ -23,13 +23,14 @@ "license": "MIT", "dependencies": { "@ajuvercr/js-runner": "^0.1.17", - "@treecg/types": "^0.4.5", + "@treecg/types": "^0.4.6", "@types/debug": "^4.1.10", "commander": "^11.1.0", "debug": "^4.3.4", "extract-cbd-shape": "^0.1.0", "heap-js": "^2.3.0", "n3": "^1.17.2", + "rdf-data-factory": "^1.1.2", "rdf-dereference": "^2.2.0", "rdf-stores": "^1.0.0" }, diff --git a/processor.ttl b/processor.ttl index e614726..16ac6d7 100644 --- a/processor.ttl +++ b/processor.ttl @@ -25,40 +25,48 @@ js:LdesClient a js:JsProcess; fnom:implementationParameterPosition "1"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "Ordered parameter"; + fnom:functionParameter "Before parameter"; fnom:implementationParameterPosition "2"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "Follow"; + fnom:functionParameter "After parameter"; fnom:implementationParameterPosition "3"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "Poll interval"; + fnom:functionParameter "Ordered parameter"; fnom:implementationParameterPosition "4"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "Shape"; + fnom:functionParameter "Follow"; fnom:implementationParameterPosition "5"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "No Shape"; + fnom:functionParameter "Poll interval"; fnom:implementationParameterPosition "6"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "Save Path"; + fnom:functionParameter "Shape"; fnom:implementationParameterPosition "7"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "Loose"; + fnom:functionParameter "No Shape"; fnom:implementationParameterPosition "8"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "UrlIsView"; + fnom:functionParameter "Save Path"; fnom:implementationParameterPosition "9"^^xsd:int; ], [ a fnom:PositionParameterMapping; - fnom:functionParameter "verbose"; + fnom:functionParameter "Loose"; fnom:implementationParameterPosition "10"^^xsd:int; + ], [ + a fnom:PositionParameterMapping; + fnom:functionParameter "UrlIsView"; + fnom:implementationParameterPosition "11"^^xsd:int; + ], [ + a fnom:PositionParameterMapping; + fnom:functionParameter "verbose"; + fnom:implementationParameterPosition "12"^^xsd:int; ]; ]. @@ -76,6 +84,16 @@ js:LdesClient a js:JsProcess; sh:name "LDES Url"; sh:maxCount 1; sh:minCount 1; + ], [ + sh:datatype xsd:dateTime; + sh:path js:before; + sh:name "Before parameter"; + sh:maxCount 1; + ], [ + sh:datatype xsd:dateTime; + sh:path js:after; + sh:name "After parameter"; + sh:maxCount 1; ], [ sh:datatype xsd:string; sh:path js:ordered; diff --git a/tests/connector-architecture/ldes-client.test.ts b/tests/connector-architecture/ldes-client.test.ts new file mode 100644 index 0000000..77da280 --- /dev/null +++ b/tests/connector-architecture/ldes-client.test.ts @@ -0,0 +1,175 @@ +import { describe, test, expect } from "@jest/globals"; +import { SimpleStream } from "@ajuvercr/js-runner"; +import { Parser } from "n3"; +import { RdfStore } from "rdf-stores"; +import { processor } from "../../lib/client"; +import { DC, SDS } from "@treecg/types"; + +describe("Functional tests for the js:LdesClient Connector Architecture function", () => { + + test("Fetching a remote LDES unordered and with after filter", async () => { + const outputStream = new SimpleStream(); + + let count = 0; + outputStream.data(() => { + count++; + }); + + // Setup client + const exec = await processor( + outputStream, + "https://era.ilabt.imec.be/rinf/ldes", + undefined, + new Date("3024-03-09T15:00:00.000Z"), + "none", + false + ); + + // Run client + await exec(); + // No members were expected + expect(count).toBe(0); + }); + + test("Fetching a remote LDES unordered and with before filter", async () => { + const outputStream = new SimpleStream(); + + let count = 0; + outputStream.data(() => { + count++; + }); + + // Setup client + const exec = await processor( + outputStream, + "https://era.ilabt.imec.be/rinf/ldes", + new Date("1600-01-01T00:00:00.000Z"), + undefined, + "none", + false + ); + + // Run client + await exec(); + // No members were expected + expect(count).toBe(0); + }); + + test("Fetching a remote LDES unordered and with before and after filter", async () => { + const outputStream = new SimpleStream(); + + let count = 0; + outputStream.data(record => { + expect(record.indexOf(SDS.stream)).toBeGreaterThanOrEqual(0); + expect(record.indexOf(SDS.payload)).toBeGreaterThanOrEqual(0); + + // Extract timestamp property (dc:modified in this LDES) + const store = RdfStore.createDefault(); + new Parser().parse(record).forEach(q => store.addQuad(q)); + const timestampQ = store.getQuads(null, DC.terms.modified)[0]; + expect(timestampQ).toBeDefined(); + // Check that member is within date constraints + expect(new Date(timestampQ.object.value).getTime()).toBeGreaterThan(new Date("2024-03-08T11:39:00.000Z").getTime()); + expect(new Date(timestampQ.object.value).getTime()).toBeLessThan(new Date("2024-03-08T11:43:00.000Z").getTime()); + count++; + }); + + // Setup client + const exec = await processor( + outputStream, + "https://era.ilabt.imec.be/rinf/ldes", + new Date("2024-03-08T11:43:00.000Z"), + new Date("2024-03-08T11:39:00.000Z"), + "none", + false + ); + + // Run client + await exec(); + // Check we got some members + expect(count).toBeGreaterThan(0); + }); + + test("Fetching a remote LDES in ascending order and with before and after filters", async () => { + const outputStream = new SimpleStream(); + + let count = 0; + const timestamps: number[] = []; + + outputStream.data(record => { + expect(record.indexOf(SDS.stream)).toBeGreaterThanOrEqual(0); + expect(record.indexOf(SDS.payload)).toBeGreaterThanOrEqual(0); + + // Extract timestamp property (dc:modified in this LDES) + const store = RdfStore.createDefault(); + new Parser().parse(record).forEach(q => store.addQuad(q)); + const timestampQ = store.getQuads(null, DC.terms.modified)[0]; + expect(timestampQ).toBeDefined(); + // Check that member is within date constraints + expect(new Date(timestampQ.object.value).getTime()).toBeGreaterThan(new Date("2024-03-08T11:39:00.000Z").getTime()); + expect(new Date(timestampQ.object.value).getTime()).toBeLessThan(new Date("2024-03-08T11:43:00.000Z").getTime()); + // Keep track of timestamp for checking order + timestamps.push(new Date(timestampQ.object.value).getTime()); + count++; + }); + + // Setup client + const exec = await processor( + outputStream, + "https://era.ilabt.imec.be/rinf/ldes", + new Date("2024-03-08T11:43:00.000Z"), + new Date("2024-03-08T11:39:00.000Z"), + "ascending", + false + ); + + // Run client + await exec(); + // Check we got some members + expect(count).toBeGreaterThan(0); + // Check result was ordered + const isSorted = timestamps.every((v, i) => (i === 0 || v >= timestamps[i - 1])); + expect(isSorted).toBeTruthy(); + }); + + test("Fetching a remote LDES in descending order and with before and after filters", async () => { + const outputStream = new SimpleStream(); + + let count = 0; + const timestamps: number[] = []; + + outputStream.data(record => { + expect(record.indexOf(SDS.stream)).toBeGreaterThanOrEqual(0); + expect(record.indexOf(SDS.payload)).toBeGreaterThanOrEqual(0); + + // Extract timestamp property (dc:modified in this LDES) + const store = RdfStore.createDefault(); + new Parser().parse(record).forEach(q => store.addQuad(q)); + const timestampQ = store.getQuads(null, DC.terms.modified)[0]; + expect(timestampQ).toBeDefined(); + expect(new Date(timestampQ.object.value).getTime()).toBeGreaterThan(new Date("2024-03-08T11:39:00.000Z").getTime()); + expect(new Date(timestampQ.object.value).getTime()).toBeLessThan(new Date("2024-03-08T11:43:00.000Z").getTime()); + // Keep track of timestamp for checking order + timestamps.push(new Date(timestampQ.object.value).getTime()); + count++; + }); + + // Setup client + const exec = await processor( + outputStream, + "https://era.ilabt.imec.be/rinf/ldes", + new Date("2024-03-08T11:43:00.000Z"), + new Date("2024-03-08T11:39:00.000Z"), + "descending", + false + ); + + // Run client + await exec(); + // Check we got some members + expect(count).toBeGreaterThan(0); + // Check result was ordered + const isSorted = timestamps.every((v, i) => (i === 0 || v <= timestamps[i - 1])); + expect(isSorted).toBeTruthy(); + }); +}); \ No newline at end of file diff --git a/tests/processor.test.ts b/tests/connector-architecture/processor.test.ts similarity index 87% rename from tests/processor.test.ts rename to tests/connector-architecture/processor.test.ts index ecfc7b8..3d5992d 100644 --- a/tests/processor.test.ts +++ b/tests/connector-architecture/processor.test.ts @@ -25,6 +25,8 @@ describe("Tests for js:LdesClient processor", async () => { [ ] a js:LdesClient; js:output ; js:url ; + js:before "2025-01-01T00:00:00.000Z"^^xsd:dateTime; + js:after "2023-12-31T23:59:59.000Z"^^xsd:dateTime; js:ordered "ascending"; js:follow true; js:interval 5; @@ -49,15 +51,17 @@ describe("Tests for js:LdesClient processor", async () => { const argss = extractSteps(env, quads, config); expect(argss.length).toBe(1); - expect(argss[0].length).toBe(11); + expect(argss[0].length).toBe(13); const [[ - output, url, ordered, follow, pollInterval, shapeFile, + output, url, before, after, ordered, follow, pollInterval, shapeFile, noShape, savePath, loose, urlIsView, verbose ]] = argss; testWriter(output); expect(url).toBe("https://era.ilabt.imec.be/rinf/ldes"); + expect(before.toISOString()).toBe("2025-01-01T00:00:00.000Z"); + expect(after.toISOString()).toBe("2023-12-31T23:59:59.000Z"); expect(ordered).toBe("ascending"); expect(follow).toBeTruthy(); expect(pollInterval).toBe(5); From 5871633ed96ab195c6fd20466b6a3ebd4e91aff6 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Sat, 9 Mar 2024 17:31:16 +0100 Subject: [PATCH 5/6] Add build step to CI --- .github/workflows/ci-tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 4c31749..2f3e1f7 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -24,5 +24,8 @@ jobs: - name: Install dependencies run: npm install ; npm install -g bun ; + - name: Build + run: npm run build + - name: Run tests run: npm test From 637f0d14f2b1ae47d19fbf35e34e2a3cb92a1bc7 Mon Sep 17 00:00:00 2001 From: Julian Rojas Date: Sun, 10 Mar 2024 00:24:20 +0100 Subject: [PATCH 6/6] Add support for multiple shape descriptions --- bin/cli.ts | 8 +- lib/client.ts | 118 +++++++++++------- lib/config.ts | 4 +- lib/memberManager.ts | 89 ++++++++----- lib/utils.ts | 46 ++++++- processor.ttl | 2 +- .../ldes-client.test.ts | 89 ++++++++++++- .../connector-architecture/processor.test.ts | 4 +- tests/data/shape1.ttl | 19 +++ tests/data/shape2.ttl | 12 ++ tests/unordered.test.ts | 3 +- 11 files changed, 308 insertions(+), 86 deletions(-) create mode 100644 tests/data/shape1.ttl create mode 100644 tests/data/shape2.ttl diff --git a/bin/cli.ts b/bin/cli.ts index 520a417..a49d427 100644 --- a/bin/cli.ts +++ b/bin/cli.ts @@ -13,7 +13,7 @@ let before: Date | undefined; let paramPollInterval: number; let urlIsView = false; let noShape = false; -let shapeFile: string | undefined; +let shapeFiles: string[] | undefined; let ordered: Ordered = "none"; let quiet: boolean = false; let verbose: boolean = false; @@ -32,7 +32,7 @@ program .option("--after ", "follow only relations including members after a certain point in time") .option("--before ", "follow only relations including members before a certain point in time") .option("--poll-interval ", "specify poll interval") - .option("--shape-file ", "specify a shapefile") + .option("--shape-files [shapeFiles...]", "specify a shapefile") .option( "--no-shape", "don't extract members with a shape (only use cbd and named graphs)", @@ -60,7 +60,7 @@ program noShape = !program.shape; save = program.save; paramURL = url; - shapeFile = program.shapeFile; + shapeFiles = program.shapeFiles; paramFollow = program.follow; paramPollInterval = program.pollInterval; ordered = program.ordered; @@ -100,7 +100,7 @@ async function main() { pollInterval: paramPollInterval, fetcher: { maxFetched: 2, concurrentRequests: 10 }, urlIsView: urlIsView, - shapeFile, + shapeFiles, onlyDefaultGraph, after, before diff --git a/lib/client.ts b/lib/client.ts index 3346974..0d677bb 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -6,8 +6,8 @@ import { CBDShapeExtractor } from "extract-cbd-shape"; import { RdfStore } from "rdf-stores"; import { DataFactory, Writer as NWriter } from "n3"; import { Quad_Object, Term } from "@rdfjs/types"; -import { getObjects, ModulatorFactory, Notifier, streamToArray } from "./utils"; -import { LDES, SDS, TREE } from "@treecg/types"; +import { extractMainNodeShape, getObjects, ModulatorFactory, Notifier, streamToArray } from "./utils"; +import { LDES, SDS, SHACL, TREE } from "@treecg/types"; import { FetchedPage, Fetcher, longPromise, resetPromise } from "./pageFetcher"; import { Manager } from "./memberManager"; import { OrderedStrategy, StrategyEvents, UnorderedStrategy } from "./strategy"; @@ -39,7 +39,7 @@ export function replicateLDES( } export type LDESInfo = { - shape?: Term; + shapeMap?: Map; extractor: CBDShapeExtractor; timestampPath?: Term; isVersionOfPath?: Term; @@ -53,19 +53,39 @@ async function getInfo( ): Promise { const logger = log.extend("getShape"); - if (config.shapeFile) { - const shapeId = config.shapeFile.startsWith("http") - ? config.shapeFile - : "file://" + config.shapeFile; + const shapeConfigStore = RdfStore.createDefault(); + if (config.shapeFiles && config.shapeFiles.length > 0) { + config.shapes = []; - const resp = await rdfDereference.dereference(config.shapeFile, { - localFiles: true, - }); - const quads = await streamToArray(resp.data); - config.shape = { - quads: quads, - shapeId: namedNode(shapeId), - }; + for (const shapeFile of config.shapeFiles) { + const tempShapeStore = RdfStore.createDefault(); + const shapeId = shapeFile.startsWith("http") + ? shapeFile + : "file://" + shapeFile; + + const resp = await rdfDereference.dereference(shapeFile, { + localFiles: true, + }); + const quads = await streamToArray(resp.data); + // Add retrieved quads to local stores + quads.forEach(q => { + tempShapeStore.addQuad(q); + shapeConfigStore.addQuad(q); + }); + + if (shapeId.startsWith("file://")) { + // We have to find the actual IRI/Blank Node of the main shape within the file + config.shapes.push({ + quads, + shapeId: extractMainNodeShape(tempShapeStore) + }); + } else { + config.shapes.push({ + quads: quads, + shapeId: namedNode(shapeId), + }); + } + } } let shapeIds = config.noShape @@ -105,11 +125,7 @@ async function getInfo( timestampPaths.length, isVersionOfPaths.length, ); - } catch (ex: any) {} - } - - if (shapeIds.length > 1) { - console.error("Expected at most one shape id, found " + shapeIds.length); + } catch (ex: any) { } } if (timestampPaths.length > 1) { @@ -124,22 +140,38 @@ async function getInfo( ); } - let shapeConfigStore = RdfStore.createDefault(); - if (config.shape) { - for (let quad of config.shape.quads) { - shapeConfigStore.addQuad(quad); + // Create a map of shapes and member types + const shapeMap = new Map(); + + if (config.shapes) { + for (const shape of config.shapes) { + const memberType = getObjects(shapeConfigStore, shape.shapeId, SHACL.terms.targetClass)[0]; + if (memberType) { + shapeMap.set(memberType.value, shape.shapeId); + } else { + console.error("Ignoring SHACL shape without a declared sh:targetClass: ", shape.shapeId); + } + } + } else { + for (const shapeId of shapeIds) { + const memberType = getObjects(store, shapeId, SHACL.terms.targetClass)[0]; + if (memberType) { + shapeMap.set(memberType.value, shapeId); + } else { + console.error("Ignoring SHACL shape without a declared sh:targetClass: ", shapeId); + } } } return { extractor: new CBDShapeExtractor( - config.shape ? shapeConfigStore : store, + config.shapes && config.shapes.length > 0 ? shapeConfigStore : store, dereferencer, { cbdDefaultGraph: config.onlyDefaultGraph, }, ), - shape: config.shape ? config.shape.shapeId : shapeIds[0], + shapeMap: config.noShape ? undefined : shapeMap, timestampPath: timestampPaths[0], isVersionOfPath: isVersionOfPaths[0], }; @@ -311,22 +343,22 @@ export class Client { this.strategy = this.ordered !== "none" ? new OrderedStrategy( - this.memberManager, - this.fetcher, - notifier, - factory, - this.ordered, - this.config.polling, - this.config.pollInterval, - ) + this.memberManager, + this.fetcher, + notifier, + factory, + this.ordered, + this.config.polling, + this.config.pollInterval, + ) : new UnorderedStrategy( - this.memberManager, - this.fetcher, - notifier, - factory, - this.config.polling, - this.config.pollInterval, - ); + this.memberManager, + this.fetcher, + notifier, + factory, + this.config.polling, + this.config.pollInterval, + ); logger("Found %d views, choosing %s", viewQuads.length, ldesId.value); this.strategy.start(ldesId.value); @@ -389,7 +421,7 @@ export async function processor( ordered?: string, follow?: boolean, pollInterval?: number, - shape?: string, + shapes?: string[], noShape?: boolean, save?: string, loose?: boolean, @@ -400,7 +432,7 @@ export async function processor( intoConfig({ loose, noShape, - shapeFile: shape, + shapeFiles: shapes, polling: follow, url: url, after, diff --git a/lib/config.ts b/lib/config.ts index 7921543..a375081 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -29,8 +29,8 @@ export interface Config { fetcher: FetcherConfig; before?: Date; after?: Date; - shape?: ShapeConfig; - shapeFile?: string; + shapes?: ShapeConfig[]; + shapeFiles?: string[]; onlyDefaultGraph?: boolean; // Add flag to indicate in order (default true) diff --git a/lib/memberManager.ts b/lib/memberManager.ts index d9977c1..4b8550b 100644 --- a/lib/memberManager.ts +++ b/lib/memberManager.ts @@ -1,8 +1,8 @@ -import { Term } from "@rdfjs/types"; +import { Term, Quad } from "@rdfjs/types"; import { Member } from "./page"; import { FetchedPage } from "./pageFetcher"; import { CBDShapeExtractor } from "extract-cbd-shape"; -import { TREE } from "@treecg/types"; +import { RDF, TREE } from "@treecg/types"; import Heap from "heap-js"; import { LDESInfo } from "./client"; import debug from "debug"; @@ -26,7 +26,7 @@ export type MemberEvents = { extracted: Member; done: Member[]; }; -const getObjects = function (store: RdfStore, subject:Term|null, predicate: Term|null, graph?:Term|null) { +const getObjects = function (store: RdfStore, subject: Term | null, predicate: Term | null, graph?: Term | null) { return store.getQuads(subject, predicate, null, graph).map((quad) => { return quad.object; }); @@ -41,7 +41,7 @@ export class Manager { private state: Set; private extractor: CBDShapeExtractor; - private shapeId?: Term; + private shapeMap?: Map; private timestampPath?: Term; private isVersionOfPath?: Term; @@ -53,7 +53,7 @@ export class Manager { this.extractor = info.extractor; this.timestampPath = info.timestampPath; this.isVersionOfPath = info.isVersionOfPath; - this.shapeId = info.shape; + this.shapeMap = info.shapeMap; logger("new %s %o", ldesId.value, info); @@ -85,39 +85,68 @@ export class Manager { member: Term, data: RdfStore, ): Promise { - const quads = await this.extractor.extract(data, member, this.shapeId); + + let quads: Quad[] = []; + + if (this.shapeMap) { + if (this.shapeMap.size === 1) { + // Use the only shape available + quads = await this.extractor.extract(data, member, Array.from(this.shapeMap.values())[0]); + } else if (this.shapeMap.size > 1) { + // Find what is the proper shape for this member based on its rdf:type + const memberType = getObjects(data, member, RDF.terms.type)[0]; + if (memberType) { + const shapeId = this.shapeMap.get(memberType.value); + if (shapeId) { + quads = await this.extractor.extract(data, member, shapeId); + } + } else { + // There is no rdf:type defined for this member. Fallback to CBD extraction + quads = await this.extractor.extract(data, member); + } + } else { + // Do a simple CBD extraction + quads = await this.extractor.extract(data, member); + } + } else { + // Do a simple CBD extraction + quads = await this.extractor.extract(data, member); + } if (this.state.has(member.value)) { return; } - this.state.add(member.value); - - // Get timestamp - let timestamp: Date | string | undefined; - if (this.timestampPath) { - const ts = quads.find( - (x) => - x.subject.equals(member) && x.predicate.equals(this.timestampPath), - )?.object.value; - if (ts) { - try { - timestamp = new Date(ts); - } catch (ex: any) { - timestamp = ts; + + if (quads.length > 0) { + this.state.add(member.value); + + // Get timestamp + let timestamp: Date | string | undefined; + if (this.timestampPath) { + const ts = quads.find( + (x) => + x.subject.equals(member) && x.predicate.equals(this.timestampPath), + )?.object.value; + if (ts) { + try { + timestamp = new Date(ts); + } catch (ex: any) { + timestamp = ts; + } } } - } - let isVersionOf: string | undefined; - if (this.isVersionOfPath) { - isVersionOf = quads.find( - (x) => - x.subject.equals(member) && x.predicate.equals(this.isVersionOfPath), - )?.object.value; - } + let isVersionOf: string | undefined; + if (this.isVersionOfPath) { + isVersionOf = quads.find( + (x) => + x.subject.equals(member) && x.predicate.equals(this.isVersionOfPath), + )?.object.value; + } - this.members.push({ id: member, quads, timestamp, isVersionOf }); - return { id: member, quads, timestamp, isVersionOf }; + this.members.push({ id: member, quads, timestamp, isVersionOf }); + return { id: member, quads, timestamp, isVersionOf }; + } } // Extract members found in this page, this does not yet emit the members diff --git a/lib/utils.ts b/lib/utils.ts index 0328a9e..edb87e9 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -1,12 +1,24 @@ -import { Stream, Term } from "@rdfjs/types"; +import { NamedNode, Quad_Subject, Stream, Term } from "@rdfjs/types"; import { BaseQuad } from "n3"; import { StateFactory, StateT } from "./state"; import { RdfStore } from "rdf-stores"; +import { RDF, SHACL } from "@treecg/types"; export type Notifier = { [K in keyof Events]: (event: Events[K], state: S) => void; }; +export function getSubjects( + store: RdfStore, + predicate: Term | null, + object: Term | null, + graph?: Term | null, +) { + return store.getQuads(null, predicate, object, graph).map((quad) => { + return quad.subject; + }); +} + export function getObjects( store: RdfStore, subject: Term | null, @@ -54,6 +66,38 @@ export function streamToArray( }); } +/** + * Find the main sh:NodeShape subject of a given Shape Graph. + * We determine this by assuming that the main node shape + * is not referenced by any other shape description. + * If more than one is found an exception is thrown. + */ +export function extractMainNodeShape(store: RdfStore): NamedNode { + const nodeShapes = getSubjects(store, RDF.terms.type, SHACL.terms.NodeShape, null); + let mainNodeShape = null; + + if (nodeShapes && nodeShapes.length > 0) { + for (const ns of nodeShapes) { + const isNotReferenced = getSubjects(store, null, ns, null).length === 0; + + if (isNotReferenced) { + if (!mainNodeShape) { + mainNodeShape = ns; + } else { + throw new Error("There are multiple main node shapes in a given shape graph. Unrelated shapes must be given as separate shape graphs"); + } + } + } + if (mainNodeShape) { + return mainNodeShape; + } else { + throw new Error("No main SHACL Node Shapes found in given shape graph"); + } + } else { + throw new Error("No SHACL Node Shapes found in given shape graph"); + } +} + /** * Generic interface that represents a structure that ranks elements. * Most common is a Prority Queue (heap like) the pops elements in order. diff --git a/processor.ttl b/processor.ttl index 16ac6d7..9f03dfc 100644 --- a/processor.ttl +++ b/processor.ttl @@ -113,7 +113,7 @@ js:LdesClient a js:JsProcess; sh:datatype xsd:string; sh:path js:shapeFile; sh:name "Shape"; - sh:maxCount 1; + sh:minCount 0; ], [ sh:datatype xsd:boolean; sh:path js:noShape; diff --git a/tests/connector-architecture/ldes-client.test.ts b/tests/connector-architecture/ldes-client.test.ts index 77da280..85bb21d 100644 --- a/tests/connector-architecture/ldes-client.test.ts +++ b/tests/connector-architecture/ldes-client.test.ts @@ -3,7 +3,7 @@ import { SimpleStream } from "@ajuvercr/js-runner"; import { Parser } from "n3"; import { RdfStore } from "rdf-stores"; import { processor } from "../../lib/client"; -import { DC, SDS } from "@treecg/types"; +import { DC, RDF, SDS } from "@treecg/types"; describe("Functional tests for the js:LdesClient Connector Architecture function", () => { @@ -172,4 +172,91 @@ describe("Functional tests for the js:LdesClient Connector Architecture function const isSorted = timestamps.every((v, i) => (i === 0 || v <= timestamps[i - 1])); expect(isSorted).toBeTruthy(); }); + + test("Fetching a remote LDES unordered, with before and after filter and original shapes", async () => { + const outputStream = new SimpleStream(); + + let count = 0; + const observedClasses = new Map([ + ["ContactLineSystem", false], + ["ETCSLevel", false], + ["LoadCapability", false], + ["NationalRailwayLine", false], + ["NetElement", false], + ["NetRelation", false], + ["OperationalPoint", false], + ["Geometry", false], + ["LineReference", false], + ["SectionOfLine", false], + ["Track", false], + ["TrainDetectionSystem", false] + ]); + outputStream.data(record => { + for (const classSuffix of observedClasses.keys()) { + if (record.includes(classSuffix)) { + observedClasses.set(classSuffix, true); + } + } + count++; + }); + + // Setup client + const exec = await processor( + outputStream, + "https://era.ilabt.imec.be/rinf/ldes", + new Date("2024-03-08T11:43:00.000Z"), + new Date("2024-03-08T11:39:00.000Z"), + "none", + false, + undefined, + undefined, + false + ); + + // Run client + await exec(); + // Check we got some members + expect(count).toBeGreaterThan(0); + // Check we saw all expected classes + expect(Array.from(observedClasses.values()).every(v => v === true)).toBeTruthy(); + }); + + test("Fetching a remote LDES unordered, with before and after filter and overridden shapes", async () => { + const outputStream = new SimpleStream(); + + let count = 0; + const observedClasses = new Set(); + outputStream.data(record => { + const store = RdfStore.createDefault(); + new Parser().parse(record).forEach(q => store.addQuad(q)); + const typeQs = store.getQuads(null, RDF.terms.type); + typeQs.forEach(tq => observedClasses.add(tq.object.value)); + + // Check era:Tracks only have the 2 properties defined in shape2.ttl + if (record.includes("/Track")) { + expect(store.getQuads(typeQs[0].subject).length).toBeLessThanOrEqual(2); + } + count++; + }); + + // Setup client + const exec = await processor( + outputStream, + "https://era.ilabt.imec.be/rinf/ldes", + new Date("2024-03-08T11:43:00.000Z"), + new Date("2024-03-08T11:39:00.000Z"), + "none", + false, + undefined, + ["./tests/data/shape1.ttl", "./tests/data/shape2.ttl"], + false + ); + + // Run client + await exec(); + // Check we got some members + expect(count).toBeGreaterThan(0); + // Check we only saw expected classes + expect(observedClasses.size).toBe(5); + }); }); \ No newline at end of file diff --git a/tests/connector-architecture/processor.test.ts b/tests/connector-architecture/processor.test.ts index 3d5992d..8be99ed 100644 --- a/tests/connector-architecture/processor.test.ts +++ b/tests/connector-architecture/processor.test.ts @@ -54,7 +54,7 @@ describe("Tests for js:LdesClient processor", async () => { expect(argss[0].length).toBe(13); const [[ - output, url, before, after, ordered, follow, pollInterval, shapeFile, + output, url, before, after, ordered, follow, pollInterval, shapeFiles, noShape, savePath, loose, urlIsView, verbose ]] = argss; @@ -65,7 +65,7 @@ describe("Tests for js:LdesClient processor", async () => { expect(ordered).toBe("ascending"); expect(follow).toBeTruthy(); expect(pollInterval).toBe(5); - expect(shapeFile).toBe("/path/to/shape.ttl"); + expect(shapeFiles[0]).toBe("/path/to/shape.ttl"); expect(noShape).toBeFalsy(); expect(savePath).toBe("/state/save.json"); expect(loose).toBeFalsy(); diff --git a/tests/data/shape1.ttl b/tests/data/shape1.ttl new file mode 100644 index 0000000..e2313c1 --- /dev/null +++ b/tests/data/shape1.ttl @@ -0,0 +1,19 @@ +@prefix sh: . +@prefix era: . +@prefix gsp: . + +[ ] a sh:NodeShape; + sh:targetClass era:OperationalPoint; + sh:property [ + sh:path gsp:hasGeometry; + sh:node [ + a sh:NodeShape; + sh:targetClass gsp:Geometry + ] + ], [ + sh:path era:lineReference; + sh:node [ + a sh:NodeShape; + sh:targetClass era:LineReference + ] + ]. \ No newline at end of file diff --git a/tests/data/shape2.ttl b/tests/data/shape2.ttl new file mode 100644 index 0000000..2cbafc8 --- /dev/null +++ b/tests/data/shape2.ttl @@ -0,0 +1,12 @@ +@prefix sh: . +@prefix rdf: . +@prefix era: . + +[ ] a sh:NodeShape; + sh:targetClass era:Track; + sh:closed true; + sh:property [ + sh:path rdf:type + ], [ + sh:path era:trackId + ]. \ No newline at end of file diff --git a/tests/unordered.test.ts b/tests/unordered.test.ts index 057df94..96d68b1 100644 --- a/tests/unordered.test.ts +++ b/tests/unordered.test.ts @@ -57,7 +57,6 @@ describe("Simple Tree", () => { test("ascending tree, emits ordered", async () => { const tree = simpleTree(1); - const base = tree.base() + tree.root(); const mock = tree.mock(); global.fetch = mock; @@ -179,7 +178,7 @@ describe("more complex tree", () => { .fragment(tree.root()) .relation( first, - TREE.GreaterThanOrEqualRelation, + TREE.GreaterThanOrEqualToRelation, "http://example.com/value", "3", );