diff --git a/package-lock.json b/package-lock.json index b1c6ee0..c5b31c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,6 @@ "packages": { "": { "name": "root", - "hasInstallScript": true, "workspaces": [ "packages/*" ], @@ -4623,7 +4622,6 @@ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", "dev": true, - "peer": true, "dependencies": { "expect": "^29.6.4", "jest-snapshot": "^29.6.4" @@ -4658,7 +4656,6 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", "dev": true, - "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -4685,7 +4682,6 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -4703,7 +4699,6 @@ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, - "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -4713,7 +4708,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "peer": true, "engines": { "node": ">=10" }, @@ -4725,15 +4719,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jest/expect/node_modules/expect": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", "dev": true, - "peer": true, "dependencies": { "@jest/expect-utils": "^29.6.4", "jest-get-type": "^29.6.3", @@ -4750,7 +4742,6 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -4760,7 +4751,6 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", "dev": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -4786,7 +4776,6 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", "dev": true, - "peer": true, "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.6.4", @@ -4802,7 +4791,6 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", "dev": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -4823,7 +4811,6 @@ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, - "peer": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -4833,7 +4820,6 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", "dev": true, - "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -4865,7 +4851,6 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dev": true, - "peer": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -4883,7 +4868,6 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", "dev": true, - "peer": true, "dependencies": { "@types/node": "*", "jest-util": "^29.6.3", @@ -4899,7 +4883,6 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", "dev": true, - "peer": true, "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -4913,15 +4896,13 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jest/expect/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, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4937,7 +4918,6 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -5205,6 +5185,14 @@ "resolved": "packages/subscribable-dataset", "link": true }, + "node_modules/@ldo/traverser-shexj": { + "resolved": "packages/traverser-shexj", + "link": true + }, + "node_modules/@ldo/type-traverser": { + "resolved": "packages/type-traverser", + "link": true + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", @@ -24601,8 +24589,7 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ], - "peer": true + ] }, "node_modules/q": { "version": "1.5.1", @@ -32525,3355 +32512,5696 @@ "engines": { "node": ">=4.2.0" } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" - }, - "@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" }, - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "packages/traverser-shexj": { + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@ldo/type-traverser": "^0.0.0" + }, + "devDependencies": { + "@types/jest": "^29.0.3", + "@types/shexj": "^2.1.3", + "jest": "^29.0.3", + "ts-jest": "^29.0.2" } }, - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "packages/traverser-shexj/node_modules/@jest/console": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", + "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "slash": "^3.0.0" }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "packages/traverser-shexj/node_modules/@jest/core": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", + "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "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==" - }, - "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==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } + "@jest/console": "^29.6.4", + "@jest/reporters": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.6.3", + "jest-config": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-resolve-dependencies": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "jest-watcher": "^29.6.4", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==" - }, - "@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "packages/traverser-shexj/node_modules/@jest/environment": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.6.3" }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "packages/traverser-shexj/node_modules/@jest/fake-timers": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", + "dev": true, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/eslint-parser": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz", - "integrity": "sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==", - "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" + "packages/traverser-shexj/node_modules/@jest/globals": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", + "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/types": "^29.6.3", + "jest-mock": "^29.6.3" }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "packages/traverser-shexj/node_modules/@jest/reporters": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", + "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", + "dev": true, "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", - "requires": { - "@babel/types": "^7.22.10", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "packages/traverser-shexj/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, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "requires": { - "@babel/types": "^7.22.5" + "packages/traverser-shexj/node_modules/@jest/test-result": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", + "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", - "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", - "requires": { - "@babel/types": "^7.22.10" + "packages/traverser-shexj/node_modules/@jest/test-sequencer": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", + "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.6.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.4", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, + "packages/traverser-shexj/node_modules/@jest/transform": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", + "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", + "dev": true, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.4", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", - "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, + "packages/traverser-shexj/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, + "packages/traverser-shexj/node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "type-detect": "4.0.8" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", - "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, + "packages/traverser-shexj/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, "dependencies": { - "resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } + "@sinonjs/commons": "^3.0.0" } }, - "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==" - }, - "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "packages/traverser-shexj/node_modules/@types/jest": { + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "@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==", - "requires": { - "@babel/types": "^7.22.5" + "packages/traverser-shexj/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", - "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", - "requires": { - "@babel/types": "^7.22.5" + "packages/traverser-shexj/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "requires": { - "@babel/types": "^7.22.5" + "packages/traverser-shexj/node_modules/babel-jest": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", + "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.6.4", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "packages/traverser-shexj/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, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "requires": { - "@babel/types": "^7.22.5" + "packages/traverser-shexj/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, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "packages/traverser-shexj/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5" + "packages/traverser-shexj/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, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "@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==", - "requires": { - "@babel/types": "^7.22.5" - } + "packages/traverser-shexj/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "requires": { - "@babel/types": "^7.22.5" + "packages/traverser-shexj/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, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "@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==", - "requires": { - "@babel/types": "^7.22.5" + "packages/traverser-shexj/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, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" - }, - "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==" - }, - "@babel/helper-wrap-function": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", - "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", - "requires": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.10" + "packages/traverser-shexj/node_modules/expect": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", - "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "packages/traverser-shexj/node_modules/istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" } }, - "@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, + "packages/traverser-shexj/node_modules/jest": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", + "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "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==" - }, - "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==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } + "@jest/core": "^29.6.4", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.6.4" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true } } }, - "@babel/parser": { - "version": "7.22.14", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz", - "integrity": "sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", - "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "packages/traverser-shexj/node_modules/jest-changed-files": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", + "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.6.3", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", - "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.5" + "packages/traverser-shexj/node_modules/jest-circus": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", + "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "p-limit": "^3.1.0", + "pretty-format": "^29.6.3", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "peer": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "packages/traverser-shexj/node_modules/jest-cli": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", + "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", + "dev": true, + "dependencies": { + "@jest/core": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "packages/traverser-shexj/node_modules/jest-config": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", + "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.6.4", + "@jest/types": "^29.6.3", + "babel-jest": "^29.6.4", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.6.4", + "jest-environment-node": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "@babel/plugin-proposal-decorators": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.10.tgz", - "integrity": "sha512-KxN6TqZzcFi4uD3UifqXElBTBNLAEH1l3vzMQj6JwJZbL2sZlThxSViOKCYY+4Ah4V4JhQ95IVB7s/Y6SJSlMQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.10", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/plugin-syntax-decorators": "^7.22.10" + "packages/traverser-shexj/node_modules/jest-docblock": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", + "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-export-default-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.5.tgz", - "integrity": "sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-default-from": "^7.22.5" + "packages/traverser-shexj/node_modules/jest-each": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", + "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.6.3", + "pretty-format": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "packages/traverser-shexj/node_modules/jest-environment-node": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "packages/traverser-shexj/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, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "packages/traverser-shexj/node_modules/jest-haste-map": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", + "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "peer": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" + "packages/traverser-shexj/node_modules/jest-leak-detector": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", + "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "packages/traverser-shexj/node_modules/jest-matcher-utils": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", + "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "packages/traverser-shexj/node_modules/jest-message-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "packages/traverser-shexj/node_modules/jest-mock": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "requires": {} - }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "packages/traverser-shexj/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "packages/traverser-shexj/node_modules/jest-resolve": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", + "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "packages/traverser-shexj/node_modules/jest-resolve-dependencies": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", + "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.6.4" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "packages/traverser-shexj/node_modules/jest-runner": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", + "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", + "dev": true, + "dependencies": { + "@jest/console": "^29.6.4", + "@jest/environment": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.6.3", + "jest-environment-node": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-leak-detector": "^29.6.3", + "jest-message-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-util": "^29.6.3", + "jest-watcher": "^29.6.4", + "jest-worker": "^29.6.4", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-decorators": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", - "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "packages/traverser-shexj/node_modules/jest-runtime": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", + "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/globals": "^29.6.4", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "packages/traverser-shexj/node_modules/jest-snapshot": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", + "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.6.4", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "natural-compare": "^1.4.0", + "pretty-format": "^29.6.3", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-export-default-from": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz", - "integrity": "sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==", - "peer": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "packages/traverser-shexj/node_modules/jest-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "packages/traverser-shexj/node_modules/jest-validate": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", + "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-flow": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", - "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "packages/traverser-shexj/node_modules/jest-watcher": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", + "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.6.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "packages/traverser-shexj/node_modules/jest-worker": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.6.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "packages/traverser-shexj/node_modules/pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "packages/traverser-shexj/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "packages/traverser-shexj/node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "packages/traverser-shexj/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, + "engines": { + "node": ">=10" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "packages/traverser-shexj/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, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "packages/traverser-shexj/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "packages/traverser-shexj/node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "packages/traverser-shexj/node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } + "packages/traverser-shexj/node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "packages/traverser-shexj/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, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "packages/traverser-shexj/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "packages/traverser-shexj/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "packages/traverser-shexj/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, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "packages/traverser-shexj/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, + "engines": { + "node": ">=12" + } + }, + "packages/type-traverser": { + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/jest": "^27.4.0", + "@types/shexj": "^2.1.1", + "@types/uuid": "^8.3.4", + "jest": "^27.4.7", + "jsonld2graphobject": "^0.0.3", + "ts-jest": "^27.1.2", + "ts-node": "^10.4.0" + } + }, + "packages/type-traverser/node_modules/jsonld2graphobject": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/jsonld2graphobject/-/jsonld2graphobject-0.0.3.tgz", + "integrity": "sha512-Jn3Zdh5zfzsGZvDZVindwpY/W3cdFJ3l1FNB0ngBa79i1tcLGP7QxBYlUoA4zbjzBSJlK4X6/qicy2zF9cS/IA==", + "dev": true, + "dependencies": { + "@rdfjs/types": "^1.0.1", + "@types/jsonld": "^1.5.6", + "jsonld": "^5.2.0", + "jsonld-context-parser": "^2.1.5", + "uuid": "^8.3.2" + } + }, + "packages/type-traverser/node_modules/ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "packages/type-traverser/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "packages/type-traverser/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" + }, + "@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" + }, + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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==" + }, + "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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==" + }, + "@babel/core": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", + "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.11", + "@babel/parser": "^7.22.11", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } } }, - "@babel/plugin-transform-async-generator-functions": { + "@babel/eslint-parser": { "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", - "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz", + "integrity": "sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==", "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "@babel/generator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", + "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", "requires": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/types": "^7.22.10", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" } }, - "@babel/plugin-transform-block-scoped-functions": { + "@babel/helper-annotate-as-pure": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-block-scoping": { + "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", - "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", + "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/types": "^7.22.10" } }, - "@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "@babel/helper-compilation-targets": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", + "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } } }, - "@babel/plugin-transform-class-static-block": { + "@babel/helper-create-class-features-plugin": { "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", + "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" + "semver": "^6.3.1" }, "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } } }, - "@babel/plugin-transform-destructuring": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", - "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "dependencies": { + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } } }, - "@babel/plugin-transform-dotall-regex": { + "@babel/helper-environment-visitor": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==" + }, + "@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-duplicate-keys": { + "@babel/helper-hoist-variables": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-exponentiation-operator": { + "@babel/helper-module-imports": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" } }, - "@babel/plugin-transform-flow-strip-types": { + "@babel/helper-optimise-call-expression": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", - "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.22.5" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-for-of": { + "@babel/helper-plugin-utils": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", - "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" } }, - "@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", "requires": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" } }, - "@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "@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==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-literals": { + "@babel/helper-skip-transparent-expression-wrappers": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "@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==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/types": "^7.22.5" } }, - "@babel/plugin-transform-member-expression-literals": { + "@babel/helper-string-parser": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" }, - "@babel/plugin-transform-modules-amd": { + "@babel/helper-validator-identifier": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", - "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", - "requires": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - } + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", - "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", + "@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==" + }, + "@babel/helper-wrap-function": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", + "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", "requires": { - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.10" } }, - "@babel/plugin-transform-modules-systemjs": { + "@babel/helpers": { "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", + "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", "requires": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.11", + "@babel/types": "^7.22.11" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "@babel/highlight": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", "requires": { - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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==" + }, + "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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "@babel/plugin-transform-named-capturing-groups-regex": { + "@babel/parser": { + "version": "7.22.14", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz", + "integrity": "sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-new-target": { + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" } }, - "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "peer": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, - "@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-transform-object-rest-spread": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", - "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", + "@babel/plugin-proposal-decorators": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.10.tgz", + "integrity": "sha512-KxN6TqZzcFi4uD3UifqXElBTBNLAEH1l3vzMQj6JwJZbL2sZlThxSViOKCYY+4Ah4V4JhQ95IVB7s/Y6SJSlMQ==", "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-create-class-features-plugin": "^7.22.10", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.22.10" } }, - "@babel/plugin-transform-object-super": { + "@babel/plugin-proposal-export-default-from": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.5.tgz", + "integrity": "sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==", + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/plugin-syntax-export-default-from": "^7.22.5" } }, - "@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "peer": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, - "@babel/plugin-transform-optional-chaining": { - "version": "7.22.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", - "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, - "@babel/plugin-transform-parameters": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", - "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, - "@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "peer": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" } }, - "@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "peer": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", - "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", - "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "requires": {} }, - "@babel/plugin-transform-react-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", - "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "@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==", "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "@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==", "requires": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", - "peer": true, + "@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==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", - "peer": true, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", - "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "@babel/plugin-syntax-decorators": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", + "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-reserved-words": { + "@babel/plugin-syntax-export-default-from": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz", + "integrity": "sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==", + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz", - "integrity": "sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==", + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "requires": { - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } + "@babel/helper-plugin-utils": "^7.8.3" } }, - "@babel/plugin-transform-shorthand-properties": { + "@babel/plugin-syntax-flow": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", + "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - } - }, - "@babel/plugin-transform-sticky-regex": { + "@babel/plugin-syntax-import-assertions": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-template-literals": { + "@babel/plugin-syntax-import-attributes": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "@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==", "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-transform-typescript": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", - "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", + "@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==", "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.22.5" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "@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==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@babel/plugin-transform-unicode-regex": { + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", + "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", + "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", + "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-unicode-sets-regex": { + "@babel/plugin-transform-duplicate-keys": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz", + "integrity": "sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.22.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", + "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", + "requires": { + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", + "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "requires": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/preset-env": { - "version": "7.22.14", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.14.tgz", - "integrity": "sha512-daodMIoVo+ol/g+//c/AH+szBkFj4STQUikvBijRGL72Ph+w+AMTSh55DUETe8KJlPlDT1k/mp7NBfOuiWmoig==", + "@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", + "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", "requires": { "@babel/compat-data": "^7.22.9", "@babel/helper-compilation-targets": "^7.22.10", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.11", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.11", - "@babel/plugin-transform-modules-systemjs": "^7.22.11", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.11", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.22.12", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.11", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" + "@babel/plugin-transform-parameters": "^7.22.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.22.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", + "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz", + "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz", + "integrity": "sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==", + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", + "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.22.14", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.14.tgz", + "integrity": "sha512-daodMIoVo+ol/g+//c/AH+szBkFj4STQUikvBijRGL72Ph+w+AMTSh55DUETe8KJlPlDT1k/mp7NBfOuiWmoig==", + "requires": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.11", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.10", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.10", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.11", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.11", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.12", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.11", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/preset-flow": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.22.5.tgz", + "integrity": "sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==", + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-transform-flow-strip-types": "^7.22.5" + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", + "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + } + }, + "@babel/preset-typescript": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.11.tgz", + "integrity": "sha512-tWY5wyCZYBGY7IlalfKI1rLiGlIfnwsRHZqlky0HVv8qviwQ1Uo/05M6+s+TcTCVa6Bmoo2uJW5TMFX6Wa4qVg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.11", + "@babel/plugin-transform-typescript": "^7.22.11" + } + }, + "@babel/register": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.5.tgz", + "integrity": "sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==", + "peer": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "peer": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "peer": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "peer": true + } + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "@babel/runtime": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", + "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "requires": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@babel/traverse": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", + "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "requires": { + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.11", + "@babel/types": "^7.22.11", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + } + } + }, + "@babel/types": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", + "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + }, + "@bergos/jsonparse": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.1.tgz", + "integrity": "sha512-vXIT0nzZGX/+yMD5bx2VhTzc92H55tPoehh1BW/FZHOndWGFddrH3MAfdx39FRc7irABirW6EQaGxIJYV6CGuA==", + "requires": { + "buffer": "^6.0.3" + } + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "devOptional": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" + }, + "@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "requires": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "requires": {} + }, + "@digitalbazaar/http-client": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-1.2.0.tgz", + "integrity": "sha512-W9KQQ5pUJcaR0I4c2HPJC0a7kRbZApIorZgPnEDwMBgj16iQzutGLrCXYaZOmxqVLVNqqlQ4aUJh+HBQZy4W6Q==", + "dev": true, + "requires": { + "esm": "^3.2.22", + "ky": "^0.25.1", + "ky-universal": "^0.8.2" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", + "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==" + }, + "@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", + "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==" + }, + "@expo/bunyan": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", + "integrity": "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==", + "peer": true, + "requires": { + "mv": "~2", + "safe-json-stringify": "~1", + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "peer": true + } + } + }, + "@expo/cli": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.10.11.tgz", + "integrity": "sha512-ehaAOw4SwkJ9uL5z9c3RD4LJpmMDCXZBCWZG4fonUGutks4t/GLoNRcdENkWsf6NSgkdPNgNl8KwphU1p083PQ==", + "peer": true, + "requires": { + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~8.1.0", + "@expo/config-plugins": "~7.2.0", + "@expo/dev-server": "0.5.5", + "@expo/devcert": "^1.0.0", + "@expo/env": "0.0.5", + "@expo/json-file": "^8.2.37", + "@expo/metro-config": "~0.10.0", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~1.0.0", + "@expo/plist": "^0.0.20", + "@expo/prebuild-config": "6.2.6", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "1.5.0", + "@expo/xcpretty": "^4.2.1", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "4.1.0", + "better-opn": "~3.0.2", + "bplist-parser": "^0.3.1", + "cacache": "^15.3.0", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", + "internal-ip": "4.3.0", + "is-root": "^2.1.0", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "md5-file": "^3.2.3", + "md5hex": "^1.0.0", + "minipass": "3.1.6", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "ora": "3.4.0", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "send": "^0.18.0", + "slugify": "^1.3.4", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "dependencies": { + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "peer": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "peer": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "peer": true + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "peer": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "peer": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "peer": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "peer": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "peer": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "peer": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "peer": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "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==", + "peer": true + }, + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "peer": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "peer": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "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==", + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "peer": true + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "peer": true, + "requires": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "peer": true + } + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "peer": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "peer": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "peer": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "peer": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "peer": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "peer": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "peer": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "peer": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "peer": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "peer": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "peer": true + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "peer": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "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==", + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "peer": true, + "requires": {} + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "peer": true + } + } + }, + "@expo/code-signing-certificates": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "peer": true, + "requires": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "@expo/config": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.1.2.tgz", + "integrity": "sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug==", + "peer": true, + "requires": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~7.2.0", + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "^8.2.37", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.5.3", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "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==", + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + }, + "semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "peer": true + } + } + }, + "@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", + "peer": true, + "requires": { + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + } + } + }, + "@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==", + "peer": true + }, + "@expo/dev-server": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.5.5.tgz", + "integrity": "sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA==", + "peer": true, + "requires": { + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "~0.10.0", + "@expo/osascript": "2.0.33", + "@expo/spawn-async": "^1.5.0", + "body-parser": "^1.20.1", + "chalk": "^4.0.0", + "connect": "^3.7.0", + "fs-extra": "9.0.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", + "node-fetch": "^2.6.0", + "open": "^8.3.0", + "resolve-from": "^5.0.0", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "peer": true + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "peer": true + } + } + }, + "@expo/devcert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz", + "integrity": "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==", + "peer": true, + "requires": { + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "rimraf": "^2.6.2", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^2.4.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "peer": true, + "requires": { + "ms": "^2.1.1" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "peer": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "peer": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "peer": true, + "requires": { + "glob": "^7.1.3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "peer": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "@expo/env": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.0.5.tgz", + "integrity": "sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ==", + "peer": true, + "requires": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.0.3", + "dotenv-expand": "~10.0.0", + "getenv": "^1.0.0" + }, + "dependencies": { + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "peer": true + } + } + }, + "@expo/image-utils": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz", + "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==", + "peer": true, + "requires": { + "@expo/spawn-async": "1.5.0", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "mime": "^2.4.4", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "tempy": "0.3.0" }, "dependencies": { + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", + "peer": true + }, + "fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + }, "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "peer": true + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "peer": true, + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "peer": true + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", + "peer": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "peer": true } } }, - "@babel/preset-flow": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.22.5.tgz", - "integrity": "sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==", + "@expo/json-file": { + "version": "8.2.37", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", + "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", "peer": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-transform-flow-strip-types": "^7.22.5" - } - }, - "@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "peer": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } } }, - "@babel/preset-react": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", - "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "@expo/metro-config": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.10.7.tgz", + "integrity": "sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ==", + "peer": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-transform-react-display-name": "^7.22.5", - "@babel/plugin-transform-react-jsx": "^7.22.5", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + "@expo/config": "~8.1.0", + "@expo/env": "0.0.5", + "@expo/json-file": "~8.2.37", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "jsc-safe-url": "^0.2.4", + "lightningcss": "~1.19.0", + "postcss": "~8.4.21", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + } } }, - "@babel/preset-typescript": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.11.tgz", - "integrity": "sha512-tWY5wyCZYBGY7IlalfKI1rLiGlIfnwsRHZqlky0HVv8qviwQ1Uo/05M6+s+TcTCVa6Bmoo2uJW5TMFX6Wa4qVg==", + "@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", + "peer": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.11", - "@babel/plugin-transform-typescript": "^7.22.11" + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" } }, - "@babel/register": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.5.tgz", - "integrity": "sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==", + "@expo/package-manager": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.0.2.tgz", + "integrity": "sha512-dlUp6o8qs1mi3/+l3y7cY3oMoqQVVzvH18cUTi6+t4ob8XwTpaeP2SwOP+obwZN29dMg9YzZAv4eQz+mshAbQA==", "peer": true, "requires": { - "clone-deep": "^4.0.1", - "find-cache-dir": "^2.0.0", - "make-dir": "^2.1.0", - "pirates": "^4.0.5", - "source-map-support": "^0.5.16" + "@expo/json-file": "^8.2.37", + "@expo/spawn-async": "^1.5.0", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "js-yaml": "^3.13.1", + "micromatch": "^4.0.2", + "npm-package-arg": "^7.0.0", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" }, "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "peer": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "sprintf-js": "~1.0.2" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "peer": true }, + "hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "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==", + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "peer": true, + "requires": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "peer": true + }, + "sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==", + "peer": true + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "peer": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "peer": true } } }, - "@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" - }, - "@babel/runtime": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", - "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", - "requires": { - "regenerator-runtime": "^0.14.0" - } - }, - "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "peer": true, "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" } }, - "@babel/traverse": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", - "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "@expo/prebuild-config": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz", + "integrity": "sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q==", + "peer": true, "requires": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@expo/config": "~8.1.0", + "@expo/config-plugins": "~7.2.0", + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/image-utils": "0.3.22", + "@expo/json-file": "^8.2.37", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.5.3", + "xml2js": "0.6.0" }, "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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==", + "peer": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "peer": true + }, + "semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "peer": true } } }, - "@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "@expo/rudder-sdk-node": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", + "peer": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@expo/bunyan": "^4.0.0", + "@segment/loosely-validate-event": "^2.0.0", + "fetch-retry": "^4.1.1", + "md5": "^2.2.1", + "node-fetch": "^2.6.1", + "remove-trailing-slash": "^0.1.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "peer": true + } } }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - }, - "@bergos/jsonparse": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.1.tgz", - "integrity": "sha512-vXIT0nzZGX/+yMD5bx2VhTzc92H55tPoehh1BW/FZHOndWGFddrH3MAfdx39FRc7irABirW6EQaGxIJYV6CGuA==", - "requires": { - "buffer": "^6.0.3" - } + "@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", + "peer": true }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "devOptional": true, + "@expo/spawn-async": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz", + "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==", + "peer": true, "requires": { - "@jridgewell/trace-mapping": "0.3.9" + "cross-spawn": "^6.0.5" }, "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "devOptional": true, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "peer": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "peer": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "peer": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "peer": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "peer": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "peer": true, + "requires": { + "isexe": "^2.0.0" } } } }, - "@csstools/normalize.css": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", - "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" - }, - "@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "requires": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - } - }, - "@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } + "@expo/vector-icons": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz", + "integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==", + "peer": true }, - "@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "@expo/xcpretty": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz", + "integrity": "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==", + "peer": true, "requires": { - "postcss-value-parser": "^4.2.0" + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + } } }, - "@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", - "requires": { - "postcss-value-parser": "^4.2.0" - } + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "peer": true }, - "@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peer": true, + "requires": {} }, - "@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "peer": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "peer": true, "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "@hapi/hoek": "^9.0.0" } }, - "@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "requires": { - "postcss-value-parser": "^4.2.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" } }, - "@csstools/postcss-normalize-display-values": { + "@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", - "requires": { - "postcss-value-parser": "^4.2.0" - } + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" }, - "@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, - "@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } + "@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true }, - "@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "@inrupt/oidc-client": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@inrupt/oidc-client/-/oidc-client-1.11.6.tgz", + "integrity": "sha512-1rCTk1T6pdm/7gKozutZutk7jwmYBADlnkGGoI5ypke099NOCa5KFXjkQpbjsps0PRkKZ+0EaR70XN5+xqmViA==", "requires": { - "postcss-value-parser": "^4.2.0" + "acorn": "^7.4.1", + "base64-js": "^1.5.1", + "core-js": "^3.8.3", + "crypto-js": "^4.0.0", + "serialize-javascript": "^4.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } } }, - "@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "@inrupt/oidc-client-ext": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@inrupt/oidc-client-ext/-/oidc-client-ext-1.17.1.tgz", + "integrity": "sha512-uh8ecf4xALoel6Yxlg8srsGO44JhQLjE++mdM13Fniy6TwCU+odHSnMny9afpO/HBZ6abQ02mCFiLtrufczzaA==", "requires": { - "postcss-value-parser": "^4.2.0" + "@inrupt/oidc-client": "^1.11.6", + "@inrupt/solid-client-authn-core": "^1.17.1", + "@inrupt/universal-fetch": "^1.0.1", + "jose": "^4.10.0", + "uuid": "^9.0.0" } }, - "@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "@inrupt/solid-client": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client/-/solid-client-1.30.0.tgz", + "integrity": "sha512-iRyLqM9k5W0IiRHZz+dGsa+94pu8cGqjRB5B8s+YhLlNQH/fY6Xmu21f1zl1uKWebc4PBlAJPcBcR46RVXlCJQ==", "requires": { - "postcss-value-parser": "^4.2.0" + "@inrupt/universal-fetch": "^1.0.1", + "@rdfjs/dataset": "^1.1.0", + "@types/rdfjs__dataset": "^1.0.4", + "buffer": "^6.0.3", + "fsevents": "^2.3.2", + "http-link-header": "^1.1.0", + "jsonld-context-parser": "^2.3.0", + "jsonld-streaming-parser": "^3.2.0", + "n3": "^1.10.0", + "uuid": "^9.0.0" } }, - "@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", - "requires": {} - }, - "@digitalbazaar/http-client": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-1.2.0.tgz", - "integrity": "sha512-W9KQQ5pUJcaR0I4c2HPJC0a7kRbZApIorZgPnEDwMBgj16iQzutGLrCXYaZOmxqVLVNqqlQ4aUJh+HBQZy4W6Q==", - "dev": true, + "@inrupt/solid-client-authn-browser": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-browser/-/solid-client-authn-browser-1.12.3.tgz", + "integrity": "sha512-13w9iQPOl9bzL46AXRKt9R2A0lJbotMFJM754j4CTBNRpCphb49Gd/Q2hQqjSFB++oOVNxfl1dhpT+x13libjw==", "requires": { - "esm": "^3.2.22", - "ky": "^0.25.1", - "ky-universal": "^0.8.2" + "@inrupt/oidc-client-ext": "^1.12.3", + "@inrupt/solid-client-authn-core": "^1.12.3", + "@types/lodash.clonedeep": "^4.5.6", + "@types/node": "^18.0.3", + "@types/uuid": "^8.3.0", + "events": "^3.3.0", + "jose": "^4.3.7", + "lodash.clonedeep": "^4.5.0", + "uuid": "^9.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.17.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.12.tgz", + "integrity": "sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ==" + } } }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "@inrupt/solid-client-authn-core": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-core/-/solid-client-authn-core-1.17.1.tgz", + "integrity": "sha512-UKTtZH0lISgWaiUYRr0zRkvFHIjYzVaWEC0IJoLUFIEfJdYogMXmPKoHyJEw7MdJ6qVYMLdPo9k2OSLfdUfYjA==", "requires": { - "eslint-visitor-keys": "^3.3.0" + "@inrupt/universal-fetch": "^1.0.1", + "events": "^3.3.0", + "jose": "^4.10.0", + "uuid": "^9.0.0" } }, - "@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==" - }, - "@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "@inrupt/solid-client-authn-node": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-node/-/solid-client-authn-node-1.12.3.tgz", + "integrity": "sha512-8uKsRZY6nyuCJEgvmeo28IAL6yL4E6lmpPYlxAPa/0uYm29Ubb3kl+QknbAjBW/p672nc0JEdEu8CiOZLh80Ew==", "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@inrupt/solid-client-authn-core": "^1.12.3", + "cross-fetch": "^3.1.5", + "jose": "^4.3.7", + "openid-client": "^5.1.0", + "uuid": "^9.0.0" } }, - "@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==" - }, - "@expo/bunyan": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", - "integrity": "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==", - "peer": true, + "@inrupt/universal-fetch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inrupt/universal-fetch/-/universal-fetch-1.0.3.tgz", + "integrity": "sha512-AP/nMOuuKvR2YoQkdS77ntuuq5ZYDGStI8Uirp1MCsyPSoBLyNnRjMLjlGqIlaC+5Xp7TYZJ9z/Kl2uUEpXUFw==", "requires": { - "mv": "~2", - "safe-json-stringify": "~1", - "uuid": "^8.0.0" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true - } + "node-fetch": "^2.6.7", + "undici": "^5.19.1" } }, - "@expo/cli": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.10.11.tgz", - "integrity": "sha512-ehaAOw4SwkJ9uL5z9c3RD4LJpmMDCXZBCWZG4fonUGutks4t/GLoNRcdENkWsf6NSgkdPNgNl8KwphU1p083PQ==", - "peer": true, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "requires": { - "@babel/runtime": "^7.20.0", - "@expo/code-signing-certificates": "0.0.5", - "@expo/config": "~8.1.0", - "@expo/config-plugins": "~7.2.0", - "@expo/dev-server": "0.5.5", - "@expo/devcert": "^1.0.0", - "@expo/env": "0.0.5", - "@expo/json-file": "^8.2.37", - "@expo/metro-config": "~0.10.0", - "@expo/osascript": "^2.0.31", - "@expo/package-manager": "~1.0.0", - "@expo/plist": "^0.0.20", - "@expo/prebuild-config": "6.2.6", - "@expo/rudder-sdk-node": "1.1.1", - "@expo/spawn-async": "1.5.0", - "@expo/xcpretty": "^4.2.1", - "@urql/core": "2.3.6", - "@urql/exchange-retry": "0.3.0", - "accepts": "^1.3.8", - "arg": "4.1.0", - "better-opn": "~3.0.2", - "bplist-parser": "^0.3.1", - "cacache": "^15.3.0", - "chalk": "^4.0.0", - "ci-info": "^3.3.0", - "debug": "^4.3.4", - "env-editor": "^0.4.1", - "form-data": "^3.0.1", - "freeport-async": "2.0.0", - "fs-extra": "~8.1.0", - "getenv": "^1.0.0", - "graphql": "15.8.0", - "graphql-tag": "^2.10.1", - "https-proxy-agent": "^5.0.1", - "internal-ip": "4.3.0", - "is-root": "^2.1.0", - "js-yaml": "^3.13.1", - "json-schema-deref-sync": "^0.13.0", - "md5-file": "^3.2.3", - "md5hex": "^1.0.0", - "minipass": "3.1.6", - "node-fetch": "^2.6.7", - "node-forge": "^1.3.1", - "npm-package-arg": "^7.0.0", - "ora": "3.4.0", - "pretty-bytes": "5.6.0", - "progress": "2.0.3", - "prompts": "^2.3.2", - "qrcode-terminal": "0.11.0", - "require-from-string": "^2.0.2", - "requireg": "^0.2.2", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "send": "^0.18.0", - "slugify": "^1.3.4", - "structured-headers": "^0.4.1", - "tar": "^6.0.5", - "tempy": "^0.7.1", - "terminal-link": "^2.1.1", - "text-table": "^0.2.0", - "url-join": "4.0.0", - "wrap-ansi": "^7.0.0", - "ws": "^8.12.1" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "peer": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "peer": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "peer": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "peer": true + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "peer": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "peer": true, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" } }, - "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==", - "peer": true, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "requires": { - "color-name": "1.1.3" + "ansi-regex": "^6.0.1" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "peer": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "peer": true - }, - "fs-extra": { + "wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "peer": true, + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "peer": true, + } + } + }, + "@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==", + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "minipass": "^3.0.0" + "sprintf-js": "~1.0.2" } }, - "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==", - "peer": true - }, - "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "peer": true, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "lru-cache": "^6.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "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==", - "peer": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "peer": true, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "graceful-fs": "^4.1.6" + "p-locate": "^4.1.0" } }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "peer": true, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "chalk": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } + "p-try": "^2.0.0" } }, - "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==", - "peer": true, + "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==", "requires": { - "yallist": "^4.0.0" + "p-limit": "^2.2.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "peer": true - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "@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==" + }, + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/create-cache-key-function": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.6.3.tgz", + "integrity": "sha512-kzSK9XAxtD1kRPJKxsmD0YKw2fyXveP+5ikeQkCYCHeacWW1EGYMTgjDIM/Di4Uhttx7lnHwrNpz2xn+0rTp8g==", + "peer": true, + "requires": { + "@jest/types": "^29.6.3" + }, + "dependencies": { + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "peer": true, "requires": { - "yallist": "^4.0.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" } }, - "npm-package-arg": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", - "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "peer": true, "requires": { - "hosted-git-info": "^3.0.2", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true - } + "@types/yargs-parser": "*" + } + } + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/expect": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", + "dev": true, + "requires": { + "expect": "^29.6.4", + "jest-snapshot": "^29.6.4" + }, + "dependencies": { + "@jest/transform": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", + "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.4", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "peer": true, + "@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, "requires": { - "mimic-fn": "^1.0.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" } }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "peer": true, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "peer": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "peer": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "peer": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "@types/yargs-parser": "*" } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true + "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 }, - "restore-cursor": { + "convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "peer": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "peer": true, + "expect": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", + "dev": true, "requires": { - "minipass": "^3.1.1" + "@jest/expect-utils": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } + "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 }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "peer": true, + "jest-haste-map": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", + "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", + "dev": true, "requires": { - "unique-slug": "^2.0.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", + "micromatch": "^4.0.4", + "walker": "^1.0.8" } }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "peer": true, + "jest-matcher-utils": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", + "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", + "dev": true, "requires": { - "imurmurhash": "^0.1.4" + "chalk": "^4.0.0", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "peer": true - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "peer": true, + "jest-message-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", + "dev": true, "requires": { - "builtins": "^1.0.3" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" } }, - "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==", - "peer": true, + "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 + }, + "jest-snapshot": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", + "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", + "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.6.4", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "natural-compare": "^1.4.0", + "pretty-format": "^29.6.3", + "semver": "^7.5.3" } }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "peer": true, - "requires": {} - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "peer": true - } - } - }, - "@expo/code-signing-certificates": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", - "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", - "peer": true, - "requires": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" - } - }, - "@expo/config": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.1.2.tgz", - "integrity": "sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug==", - "peer": true, - "requires": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~7.2.0", - "@expo/config-types": "^49.0.0-alpha.1", - "@expo/json-file": "^8.2.37", - "getenv": "^1.0.0", - "glob": "7.1.6", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", - "semver": "7.5.3", - "slugify": "^1.3.4", - "sucrase": "^3.20.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "peer": true, + "jest-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", + "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "peer": true, + "jest-worker": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@types/node": "*", + "jest-util": "^29.6.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" } }, - "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==", - "peer": true, + "pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "dev": true, "requires": { - "yallist": "^4.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "peer": true, + "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, "requires": { - "lru-cache": "^6.0.0" + "has-flag": "^4.0.0" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "peer": true + "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, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, - "@expo/config-plugins": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", - "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", - "peer": true, + "@jest/expect-utils": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", + "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", + "dev": true, "requires": { - "@expo/config-types": "^49.0.0-alpha.1", - "@expo/json-file": "~8.2.37", - "@expo/plist": "^0.0.20", - "@expo/sdk-runtime-versions": "^1.0.0", - "@react-native/normalize-color": "^2.0.0", - "chalk": "^4.1.2", - "debug": "^4.3.1", - "find-up": "~5.0.0", - "getenv": "^1.0.0", - "glob": "7.1.6", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "slash": "^3.0.0", - "xcode": "^3.0.1", - "xml2js": "0.6.0" + "jest-get-type": "^29.6.3" }, "dependencies": { - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "peer": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true + "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 } } }, - "@expo/config-types": { - "version": "49.0.0", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", - "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==", - "peer": true + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } }, - "@expo/dev-server": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.5.5.tgz", - "integrity": "sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA==", - "peer": true, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "requires": { - "@expo/bunyan": "4.0.0", - "@expo/metro-config": "~0.10.0", - "@expo/osascript": "2.0.33", - "@expo/spawn-async": "^1.5.0", - "body-parser": "^1.20.1", - "chalk": "^4.0.0", - "connect": "^3.7.0", - "fs-extra": "9.0.0", - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1", - "node-fetch": "^2.6.0", - "open": "^8.3.0", - "resolve-from": "^5.0.0", - "serialize-error": "6.0.0", - "temp-dir": "^2.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", - "peer": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "peer": true - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "peer": true - } + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" } }, - "@expo/devcert": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz", - "integrity": "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==", - "peer": true, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "requires": { - "application-config-path": "^0.1.0", - "command-exists": "^1.2.4", - "debug": "^3.1.0", - "eol": "^0.9.1", - "get-port": "^3.2.0", + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", "glob": "^7.1.2", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "password-prompt": "^1.0.4", - "rimraf": "^2.6.2", - "sudo-prompt": "^8.2.0", - "tmp": "^0.0.33", - "tslib": "^2.4.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", - "peer": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "peer": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "peer": true, - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "peer": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" } }, - "@expo/env": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.0.5.tgz", - "integrity": "sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ==", - "peer": true, + "@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==", "requires": { - "chalk": "^4.0.0", - "debug": "^4.3.4", - "dotenv": "~16.0.3", - "dotenv-expand": "~10.0.0", - "getenv": "^1.0.0" - }, - "dependencies": { - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "peer": true - } + "@sinclair/typebox": "^0.27.8" } }, - "@expo/image-utils": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz", - "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==", - "peer": true, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "requires": { - "@expo/spawn-async": "1.5.0", - "chalk": "^4.0.0", - "fs-extra": "9.0.0", - "getenv": "^1.0.0", - "jimp-compact": "0.16.1", - "mime": "^2.4.4", - "node-fetch": "^2.6.0", - "parse-png": "^2.1.0", - "resolve-from": "^5.0.0", - "semver": "7.3.2", - "tempy": "0.3.0" - }, - "dependencies": { - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", - "peer": true - }, - "fs-extra": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", - "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", - "peer": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "peer": true - }, - "tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "peer": true, - "requires": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - } - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "peer": true - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", - "peer": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "peer": true - } + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" } }, - "@expo/json-file": { - "version": "8.2.37", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", - "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", - "peer": true, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "requires": { - "@babel/code-frame": "~7.10.4", - "json5": "^2.2.2", - "write-file-atomic": "^2.3.0" + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "peer": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "peer": true, + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } } } }, - "@expo/metro-config": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.10.7.tgz", - "integrity": "sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ==", - "peer": true, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "requires": { - "@expo/config": "~8.1.0", - "@expo/env": "0.0.5", - "@expo/json-file": "~8.2.37", - "chalk": "^4.1.0", - "debug": "^4.3.2", - "find-yarn-workspace-root": "~2.0.0", - "getenv": "^1.0.0", - "jsc-safe-url": "^0.2.4", - "lightningcss": "~1.19.0", - "postcss": "~8.4.21", - "resolve-from": "^5.0.0", - "sucrase": "^3.20.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true - } + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "@expo/osascript": { - "version": "2.0.33", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", - "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", - "peer": true, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "requires": { - "@expo/spawn-async": "^1.5.0", - "exec-async": "^2.2.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@expo/package-manager": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.0.2.tgz", - "integrity": "sha512-dlUp6o8qs1mi3/+l3y7cY3oMoqQVVzvH18cUTi6+t4ob8XwTpaeP2SwOP+obwZN29dMg9YzZAv4eQz+mshAbQA==", - "peer": true, + "@ldo/cli": { + "version": "file:packages/cli", "requires": { - "@expo/json-file": "^8.2.37", - "@expo/spawn-async": "^1.5.0", - "ansi-regex": "^5.0.0", - "chalk": "^4.0.0", - "find-up": "^5.0.0", - "find-yarn-workspace-root": "~2.0.0", - "js-yaml": "^3.13.1", - "micromatch": "^4.0.2", - "npm-package-arg": "^7.0.0", - "split": "^1.0.1", - "sudo-prompt": "9.1.1" + "@ldo/schema-converter-shex": "^0.0.0", + "@shexjs/parser": "^1.0.0-alpha.24", + "@types/child-process-promise": "^2.2.2", + "@types/ejs": "^3.1.1", + "@types/fs-extra": "^9.0.13", + "@types/jest": "^27.0.3", + "@types/shexj": "2.1.4", + "child-process-promise": "^2.2.1", + "commander": "^9.3.0", + "copyfiles": "^2.4.1", + "ejs": "^3.1.8", + "fs-extra": "^10.1.0", + "jest": "^27.4.2", + "loading-cli": "^1.1.0", + "rimraf": "^3.0.2", + "ts-jest": "^27.0.7" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "peer": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "peer": true - }, - "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "peer": true, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "requires": { - "lru-cache": "^6.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "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==", - "peer": true, + "ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" } }, - "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==", - "peer": true, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "peer": true + } + } + }, + "@ldo/dataset": { + "version": "file:packages/dataset", + "requires": { + "@rdfjs/data-model": "^1.2.0", + "@rdfjs/dataset": "^1.1.0", + "@rdfjs/types": "^1.0.1", + "@types/jest": "^27.0.3", + "@types/jsonld": "^1.5.6", + "@types/n3": "^1.10.4", + "@types/rdfjs__dataset": "^1.0.4", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "jest": "^27.4.5", + "n3": "^1.10.0", + "readable-stream": "^4.2.0", + "ts-jest": "^27.1.2", + "ts-node": "^9.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", "requires": { - "yallist": "^4.0.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" } }, - "npm-package-arg": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", - "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", - "peer": true, + "ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, "requires": { - "hosted-git-info": "^3.0.2", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" } }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true - }, - "sudo-prompt": { + "ts-node": { "version": "9.1.1", - "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", - "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==", - "peer": true - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "peer": true, + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, "requires": { - "builtins": "^1.0.3" + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, "peer": true } } }, - "@expo/plist": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", - "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", - "peer": true, - "requires": { - "@xmldom/xmldom": "~0.7.7", - "base64-js": "^1.2.3", - "xmlbuilder": "^14.0.0" - } - }, - "@expo/prebuild-config": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz", - "integrity": "sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q==", - "peer": true, + "@ldo/demo-react": { + "version": "file:packages/demo-react", "requires": { - "@expo/config": "~8.1.0", - "@expo/config-plugins": "~7.2.0", - "@expo/config-types": "^49.0.0-alpha.1", - "@expo/image-utils": "0.3.22", - "@expo/json-file": "^8.2.37", - "debug": "^4.3.1", - "fs-extra": "^9.0.0", - "resolve-from": "^5.0.0", - "semver": "7.5.3", - "xml2js": "0.6.0" + "@craco/craco": "^7.1.0", + "@ldo/cli": "^0.0.0", + "@ldo/solid-react": "^0.0.0", + "@types/jsonld": "^1.5.9", + "@types/shexj": "^2.1.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-scripts": "5.0.1", + "solid-authn-react-native": "^2.0.3", + "tsconfig-paths-webpack-plugin": "^4.1.0" }, "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "peer": true, + "@craco/craco": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@craco/craco/-/craco-7.1.0.tgz", + "integrity": "sha512-oRAcPIKYrfPXp9rSzlsDNeOaVtDiKhoyqSXUoqiK24jCkHr4T8m/a2f74yXIzCbIheoUWDOIfWZyRgFgT+cpqA==", + "dev": true, "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "autoprefixer": "^10.4.12", + "cosmiconfig": "^7.0.1", + "cosmiconfig-typescript-loader": "^1.0.0", + "cross-spawn": "^7.0.3", + "lodash": "^4.17.21", + "semver": "^7.3.7", + "webpack-merge": "^5.8.0" } }, - "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==", - "peer": true, + "@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", "requires": { - "yallist": "^4.0.0" + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "peer": true + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "peer": true, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, "requires": { - "lru-cache": "^6.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "peer": true - } - } - }, - "@expo/rudder-sdk-node": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", - "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", - "peer": true, - "requires": { - "@expo/bunyan": "^4.0.0", - "@segment/loosely-validate-event": "^2.0.0", - "fetch-retry": "^4.1.1", - "md5": "^2.2.1", - "node-fetch": "^2.6.1", - "remove-trailing-slash": "^0.1.0", - "uuid": "^8.3.2" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "peer": true - } - } - }, - "@expo/sdk-runtime-versions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", - "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==", - "peer": true - }, - "@expo/spawn-async": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz", - "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==", - "peer": true, - "requires": { - "cross-spawn": "^6.0.5" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "peer": true, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "peer": true - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "peer": true + "react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "peer": true, + "react-scripts": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", + "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", "requires": { - "shebang-regex": "^1.0.0" + "@babel/core": "^7.16.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@svgr/webpack": "^5.5.0", + "babel-jest": "^27.4.2", + "babel-loader": "^8.2.3", + "babel-plugin-named-asset-import": "^0.3.8", + "babel-preset-react-app": "^10.0.1", + "bfj": "^7.0.2", + "browserslist": "^4.18.1", + "camelcase": "^6.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "css-loader": "^6.5.1", + "css-minimizer-webpack-plugin": "^3.2.0", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "eslint": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-webpack-plugin": "^3.1.1", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "fsevents": "^2.3.2", + "html-webpack-plugin": "^5.5.0", + "identity-obj-proxy": "^3.0.0", + "jest": "^27.4.3", + "jest-resolve": "^27.4.2", + "jest-watch-typeahead": "^1.0.0", + "mini-css-extract-plugin": "^2.4.5", + "postcss": "^8.4.4", + "postcss-flexbugs-fixes": "^5.0.2", + "postcss-loader": "^6.2.1", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.0.1", + "prompts": "^2.4.2", + "react-app-polyfill": "^3.0.0", + "react-dev-utils": "^12.0.1", + "react-refresh": "^0.11.0", + "resolve": "^1.20.0", + "resolve-url-loader": "^4.0.0", + "sass-loader": "^12.3.0", + "semver": "^7.3.5", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.1", + "tailwindcss": "^3.0.2", + "terser-webpack-plugin": "^5.2.5", + "webpack": "^5.64.4", + "webpack-dev-server": "^4.6.0", + "webpack-manifest-plugin": "^4.0.2", + "workbox-webpack-plugin": "^6.4.1" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "peer": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "peer": true, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "requires": { - "isexe": "^2.0.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } - } - } - }, - "@expo/vector-icons": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz", - "integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==", - "peer": true - }, - "@expo/xcpretty": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz", - "integrity": "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==", - "peer": true, - "requires": { - "@babel/code-frame": "7.10.4", - "chalk": "^4.1.0", - "find-up": "^5.0.0", - "js-yaml": "^4.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "peer": true, + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "requires": { - "@babel/highlight": "^7.10.4" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "optional": true, + "peer": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true } } }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "peer": true - }, - "@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "peer": true, - "requires": {} - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "peer": true - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "peer": true, - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "dev": true - }, - "@inrupt/oidc-client": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@inrupt/oidc-client/-/oidc-client-1.11.6.tgz", - "integrity": "sha512-1rCTk1T6pdm/7gKozutZutk7jwmYBADlnkGGoI5ypke099NOCa5KFXjkQpbjsps0PRkKZ+0EaR70XN5+xqmViA==", + "@ldo/jsonld-dataset-proxy": { + "version": "file:packages/jsonld-dataset-proxy", "requires": { - "acorn": "^7.4.1", - "base64-js": "^1.5.1", - "core-js": "^3.8.3", - "crypto-js": "^4.0.0", - "serialize-javascript": "^4.0.0" + "@ldo/dataset": "^0.0.0", + "@ldo/subscribable-dataset": "^0.0.0", + "@rdfjs/data-model": "^1.2.0", + "@rdfjs/types": "^1.0.1", + "@types/jest": "^27.0.3", + "@types/jsonld": "^1.5.6", + "@types/n3": "^1.10.4", + "@types/rdfjs__dataset": "^1.0.5", + "@types/shexj": "2.1.4", + "jest": "^27.4.5", + "jsonld2graphobject": "^0.0.4", + "shex-test": "^0.5.5", + "ts-jest": "^27.1.2", + "ts-node": "^10.4.0", + "tsc-watch": "^6.0.0" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "n3": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/n3/-/n3-0.4.5.tgz", + "integrity": "sha512-sv4bFeqVTTj9hT/OAdndpHpECxlkmpHxdnHUkhNgx3P3Tnw2WqpTUzMEeY+ELEoeW1q6Xqq9LNO0lu/zqogIZA==", + "dev": true + }, + "shex-test": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/shex-test/-/shex-test-0.5.8.tgz", + "integrity": "sha512-wfrhu/lb2zrr4MANpoGbqLbPaoL0yOoDTJp6n/Ewtk2iEeVQD8RLYXVCMLYdmo6ccue/I/yubcIqv4p2uarCbg==", + "dev": true, + "requires": { + "n3": "^0.4.5", + "xlsx": "^0.8.0" + } + }, + "ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + } + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "peer": true } } }, - "@inrupt/oidc-client-ext": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@inrupt/oidc-client-ext/-/oidc-client-ext-1.17.1.tgz", - "integrity": "sha512-uh8ecf4xALoel6Yxlg8srsGO44JhQLjE++mdM13Fniy6TwCU+odHSnMny9afpO/HBZ6abQ02mCFiLtrufczzaA==", - "requires": { - "@inrupt/oidc-client": "^1.11.6", - "@inrupt/solid-client-authn-core": "^1.17.1", - "@inrupt/universal-fetch": "^1.0.1", - "jose": "^4.10.0", - "uuid": "^9.0.0" - } - }, - "@inrupt/solid-client": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client/-/solid-client-1.30.0.tgz", - "integrity": "sha512-iRyLqM9k5W0IiRHZz+dGsa+94pu8cGqjRB5B8s+YhLlNQH/fY6Xmu21f1zl1uKWebc4PBlAJPcBcR46RVXlCJQ==", + "@ldo/ldo": { + "version": "file:packages/ldo", "requires": { - "@inrupt/universal-fetch": "^1.0.1", - "@rdfjs/dataset": "^1.1.0", - "@types/rdfjs__dataset": "^1.0.4", + "@ldo/dataset": "^0.0.0", + "@ldo/jsonld-dataset-proxy": "^0.0.0", + "@ldo/subscribable-dataset": "^0.0.0", + "@rdfjs/data-model": "^1.2.0", + "@rdfjs/types": "^1.1.0", + "@types/jest": "^27.0.3", + "@types/jsonld": "^1.5.6", + "@types/n3": "^1.10.4", + "@types/readable-stream": "^2.3.13", + "@types/shexj": "2.1.4", "buffer": "^6.0.3", - "fsevents": "^2.3.2", - "http-link-header": "^1.1.0", - "jsonld-context-parser": "^2.3.0", - "jsonld-streaming-parser": "^3.2.0", - "n3": "^1.10.0", - "uuid": "^9.0.0" - } - }, - "@inrupt/solid-client-authn-browser": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-browser/-/solid-client-authn-browser-1.12.3.tgz", - "integrity": "sha512-13w9iQPOl9bzL46AXRKt9R2A0lJbotMFJM754j4CTBNRpCphb49Gd/Q2hQqjSFB++oOVNxfl1dhpT+x13libjw==", - "requires": { - "@inrupt/oidc-client-ext": "^1.12.3", - "@inrupt/solid-client-authn-core": "^1.12.3", - "@types/lodash.clonedeep": "^4.5.6", - "@types/node": "^18.0.3", - "@types/uuid": "^8.3.0", - "events": "^3.3.0", - "jose": "^4.3.7", - "lodash.clonedeep": "^4.5.0", - "uuid": "^9.0.0" + "cross-fetch": "^3.1.5", + "jest": "^27.4.5", + "n3": "^1.16.2", + "readable-stream": "^4.3.0", + "ts-jest": "^27.1.2", + "ts-node": "^10.4.0" }, "dependencies": { - "@types/node": { - "version": "18.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.12.tgz", - "integrity": "sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ==" + "readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + }, + "ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + } + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "peer": true } } }, - "@inrupt/solid-client-authn-core": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-core/-/solid-client-authn-core-1.17.1.tgz", - "integrity": "sha512-UKTtZH0lISgWaiUYRr0zRkvFHIjYzVaWEC0IJoLUFIEfJdYogMXmPKoHyJEw7MdJ6qVYMLdPo9k2OSLfdUfYjA==", - "requires": { - "@inrupt/universal-fetch": "^1.0.1", - "events": "^3.3.0", - "jose": "^4.10.0", - "uuid": "^9.0.0" - } - }, - "@inrupt/solid-client-authn-node": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-node/-/solid-client-authn-node-1.12.3.tgz", - "integrity": "sha512-8uKsRZY6nyuCJEgvmeo28IAL6yL4E6lmpPYlxAPa/0uYm29Ubb3kl+QknbAjBW/p672nc0JEdEu8CiOZLh80Ew==", - "requires": { - "@inrupt/solid-client-authn-core": "^1.12.3", - "cross-fetch": "^3.1.5", - "jose": "^4.3.7", - "openid-client": "^5.1.0", - "uuid": "^9.0.0" - } - }, - "@inrupt/universal-fetch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inrupt/universal-fetch/-/universal-fetch-1.0.3.tgz", - "integrity": "sha512-AP/nMOuuKvR2YoQkdS77ntuuq5ZYDGStI8Uirp1MCsyPSoBLyNnRjMLjlGqIlaC+5Xp7TYZJ9z/Kl2uUEpXUFw==", - "requires": { - "node-fetch": "^2.6.7", - "undici": "^5.19.1" - } - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, + "@ldo/schema-converter-shex": { + "version": "file:packages/schema-converter-shex", "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@shexjs/parser": "^1.0.0-alpha.24", + "@types/jest": "^27.0.3", + "@types/jsonld": "^1.5.6", + "@types/shexj": "^2.1.3", + "dts-dom": "^3.6.0", + "jest": "^27.4.5", + "jsonld": "^5.2.0", + "jsonld2graphobject": "^0.0.5", + "shex-test": "^2.1.0", + "shexj-traverser": "^2.0.1", + "ts-jest": "^27.1.2" }, "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "jsonld2graphobject": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonld2graphobject/-/jsonld2graphobject-0.0.5.tgz", + "integrity": "sha512-5BqfXOq96+OBjjiJNG8gQH66pYt6hW88z2SJxdvFJo4XNoVMvqAcUz+JSm/KEWS5NLRnebApEzFrYP3HUiUmYw==", "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@rdfjs/types": "^1.0.1", + "@types/jsonld": "^1.5.6", + "jsonld-context-parser": "^2.1.5", + "uuid": "^8.3.2" } }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "ts-jest": { + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, "requires": { - "ansi-regex": "^6.0.1" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^27.0.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" } }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } + "peer": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, - "@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==", + "@ldo/solid-react": { + "version": "file:packages/solid-react", "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@babel/preset-env": "^7.22.10", + "@babel/preset-react": "^7.22.5", + "@babel/preset-typescript": "^7.22.11", + "@inrupt/solid-client": "^1.29.0", + "@ldo/cli": "^0.0.0", + "@ldo/dataset": "^0.0.0", + "@ldo/jsonld-dataset-proxy": "^0.0.0", + "@ldo/ldo": "^0.0.0", + "@ldo/subscribable-dataset": "^0.0.0", + "@rdfjs/types": "^1.1.0", + "@types/jest": "^29.0.3", + "@types/jsonld": "^1.5.8", + "@types/n3": "^1.10.4", + "@types/shexj": "2.1.4", + "cross-fetch": "^3.1.6", + "solid-authn-react-native": "^2.0.3", + "stream": "^0.0.2", + "ts-jest": "^29.0.2" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "@jest/console": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", + "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", + "dev": true, + "peer": true, "requires": { - "sprintf-js": "~1.0.2" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "slash": "^3.0.0" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "@jest/core": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", + "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", + "dev": true, + "peer": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@jest/console": "^29.6.4", + "@jest/reporters": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.6.3", + "jest-config": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-resolve-dependencies": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "jest-watcher": "^29.6.4", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "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==", + "@jest/environment": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", + "dev": true, + "peer": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.6.3" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "@jest/fake-timers": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", + "dev": true, + "peer": true, "requires": { - "p-locate": "^4.1.0" + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "@jest/globals": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", + "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", + "dev": true, + "peer": true, "requires": { - "p-try": "^2.0.0" + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/types": "^29.6.3", + "jest-mock": "^29.6.3" + } + }, + "@jest/reporters": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", + "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", + "dev": true, + "peer": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" } }, - "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==", + "@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, + "peer": true, "requires": { - "p-limit": "^2.2.0" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - } - } - }, - "@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==" - }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/create-cache-key-function": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.6.3.tgz", - "integrity": "sha512-kzSK9XAxtD1kRPJKxsmD0YKw2fyXveP+5ikeQkCYCHeacWW1EGYMTgjDIM/Di4Uhttx7lnHwrNpz2xn+0rTp8g==", - "peer": true, - "requires": { - "@jest/types": "^29.6.3" - }, - "dependencies": { - "@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "@jest/test-result": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", + "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", + "dev": true, "peer": true, "requires": { - "@jest/schemas": "^29.6.3", + "@jest/console": "^29.6.4", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "collect-v8-coverage": "^1.0.0" } }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "@jest/test-sequencer": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", + "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", + "dev": true, "peer": true, "requires": { - "@types/yargs-parser": "*" + "@jest/test-result": "^29.6.4", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.4", + "slash": "^3.0.0" } - } - } - }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - } - }, - "@jest/expect": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", - "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", - "dev": true, - "peer": true, - "requires": { - "expect": "^29.6.4", - "jest-snapshot": "^29.6.4" - }, - "dependencies": { + }, "@jest/transform": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", @@ -35896,6 +38224,15 @@ "pirates": "^4.0.4", "slash": "^3.0.0", "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "peer": true + } } }, "@jest/types": { @@ -35903,7 +38240,6 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, - "peer": true, "requires": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -35913,12 +38249,41 @@ "chalk": "^4.0.0" } }, + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "peer": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@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, + "peer": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@types/jest": { + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, "@types/yargs": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, - "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -35927,13 +38292,79 @@ "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 + }, + "babel-jest": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", + "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", + "dev": true, + "peer": true, + "requires": { + "@jest/transform": "^29.6.4", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "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, + "peer": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "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, + "peer": true, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "peer": true }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "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, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peer": true, + "requires": {} + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "peer": true }, @@ -35942,7 +38373,6 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", "dev": true, - "peer": true, "requires": { "@jest/expect-utils": "^29.6.4", "jest-get-type": "^29.6.3", @@ -35951,12 +38381,170 @@ "jest-util": "^29.6.3" } }, + "istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + } + }, + "jest": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", + "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", + "dev": true, + "peer": true, + "requires": { + "@jest/core": "^29.6.4", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.6.4" + } + }, + "jest-changed-files": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", + "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", + "dev": true, + "peer": true, + "requires": { + "execa": "^5.0.0", + "jest-util": "^29.6.3", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", + "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "p-limit": "^3.1.0", + "pretty-format": "^29.6.3", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-cli": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", + "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/core": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", + "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.6.4", + "@jest/types": "^29.6.3", + "babel-jest": "^29.6.4", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.6.4", + "jest-environment-node": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-docblock": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", + "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", + "dev": true, + "peer": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", + "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.6.3", + "pretty-format": "^29.6.3" + } + }, + "jest-environment-node": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" + } + }, "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, - "peer": true + "dev": true }, "jest-haste-map": { "version": "29.6.4", @@ -35979,44 +38567,155 @@ "walker": "^1.0.8" } }, - "jest-matcher-utils": { + "jest-leak-detector": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", + "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", + "dev": true, + "peer": true, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" + } + }, + "jest-matcher-utils": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", + "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" + } + }, + "jest-message-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.6.3" + } + }, + "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, + "peer": true + }, + "jest-resolve": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", + "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.6.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", + "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", + "dev": true, + "peer": true, + "requires": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.6.4" + } + }, + "jest-runner": { "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", - "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", + "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", "dev": true, "peer": true, "requires": { + "@jest/console": "^29.6.4", + "@jest/environment": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", - "jest-diff": "^29.6.4", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.6.3" + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.6.3", + "jest-environment-node": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-leak-detector": "^29.6.3", + "jest-message-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-util": "^29.6.3", + "jest-watcher": "^29.6.4", + "jest-worker": "^29.6.4", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" } }, - "jest-message-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", - "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", + "jest-runtime": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", + "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", "dev": true, "peer": true, "requires": { - "@babel/code-frame": "^7.12.13", + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/globals": "^29.6.4", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", + "@types/node": "*", "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.6.3", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "strip-bom": "^4.0.0" } }, - "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, - "peer": true - }, "jest-snapshot": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", @@ -36051,7 +38750,6 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dev": true, - "peer": true, "requires": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -36061,654 +38759,213 @@ "picomatch": "^2.2.3" } }, - "jest-worker": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", - "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", - "dev": true, - "peer": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.6.3", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "pretty-format": { + "jest-validate": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", - "dev": true, - "peer": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", + "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", "dev": true, "peer": true, "requires": { - "has-flag": "^4.0.0" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.6.3" } }, - "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==", + "jest-watcher": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", + "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", "dev": true, "peer": true, "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - } - } - }, - "@jest/expect-utils": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", - "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3" - }, - "dependencies": { - "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 - } - } - }, - "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - } - }, - "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - } - }, - "@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==", - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - } - }, - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@ldo/cli": { - "version": "file:packages/cli", - "requires": { - "@ldo/schema-converter-shex": "^0.0.0", - "@shexjs/parser": "^1.0.0-alpha.24", - "@types/child-process-promise": "^2.2.2", - "@types/ejs": "^3.1.1", - "@types/fs-extra": "^9.0.13", - "@types/jest": "^27.0.3", - "@types/shexj": "2.1.4", - "child-process-promise": "^2.2.1", - "commander": "^9.3.0", - "copyfiles": "^2.4.1", - "ejs": "^3.1.8", - "fs-extra": "^10.1.0", - "jest": "^27.4.2", - "loading-cli": "^1.1.0", - "rimraf": "^3.0.2", - "ts-jest": "^27.0.7" - }, - "dependencies": { - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "peer": true - } - } - }, - "@ldo/dataset": { - "version": "file:packages/dataset", - "requires": { - "@rdfjs/data-model": "^1.2.0", - "@rdfjs/dataset": "^1.1.0", - "@rdfjs/types": "^1.0.1", - "@types/jest": "^27.0.3", - "@types/jsonld": "^1.5.6", - "@types/n3": "^1.10.4", - "@types/rdfjs__dataset": "^1.0.4", - "@types/readable-stream": "^2.3.13", - "buffer": "^6.0.3", - "jest": "^27.4.5", - "n3": "^1.10.0", - "readable-stream": "^4.2.0", - "ts-jest": "^27.1.2", - "ts-node": "^9.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - }, - "ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - } - }, - "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "peer": true - } - } - }, - "@ldo/demo-react": { - "version": "file:packages/demo-react", - "requires": { - "@craco/craco": "^7.1.0", - "@ldo/cli": "^0.0.0", - "@ldo/solid-react": "^0.0.0", - "@types/jsonld": "^1.5.9", - "@types/shexj": "^2.1.4", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-scripts": "5.0.1", - "solid-authn-react-native": "^2.0.3", - "tsconfig-paths-webpack-plugin": "^4.1.0" - }, - "dependencies": { - "@craco/craco": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@craco/craco/-/craco-7.1.0.tgz", - "integrity": "sha512-oRAcPIKYrfPXp9rSzlsDNeOaVtDiKhoyqSXUoqiK24jCkHr4T8m/a2f74yXIzCbIheoUWDOIfWZyRgFgT+cpqA==", - "dev": true, - "requires": { - "autoprefixer": "^10.4.12", - "cosmiconfig": "^7.0.1", - "cosmiconfig-typescript-loader": "^1.0.0", - "cross-spawn": "^7.0.3", - "lodash": "^4.17.21", - "semver": "^7.3.7", - "webpack-merge": "^5.8.0" - } - }, - "@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", - "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", - "requires": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.6.3", + "string-length": "^4.0.1" } }, - "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "jest-worker": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dev": true, + "peer": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@types/node": "*", + "jest-util": "^29.6.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" } }, - "react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" - }, - "react-scripts": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", - "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "dev": true, "requires": { - "@babel/core": "^7.16.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", - "babel-jest": "^27.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-named-asset-import": "^0.3.8", - "babel-preset-react-app": "^10.0.1", - "bfj": "^7.0.2", - "browserslist": "^4.18.1", - "camelcase": "^6.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.2.0", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "eslint": "^8.3.0", - "eslint-config-react-app": "^7.0.1", - "eslint-webpack-plugin": "^3.1.1", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "fsevents": "^2.3.2", - "html-webpack-plugin": "^5.5.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.3", - "jest-resolve": "^27.4.2", - "jest-watch-typeahead": "^1.0.0", - "mini-css-extract-plugin": "^2.4.5", - "postcss": "^8.4.4", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^6.2.1", - "postcss-normalize": "^10.0.1", - "postcss-preset-env": "^7.0.1", - "prompts": "^2.4.2", - "react-app-polyfill": "^3.0.0", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.11.0", - "resolve": "^1.20.0", - "resolve-url-loader": "^4.0.0", - "sass-loader": "^12.3.0", - "semver": "^7.3.5", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.1", - "tailwindcss": "^3.0.2", - "terser-webpack-plugin": "^5.2.5", - "webpack": "^5.64.4", - "webpack-dev-server": "^4.6.0", - "webpack-manifest-plugin": "^4.0.2", - "workbox-webpack-plugin": "^6.4.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "resolve": { "version": "1.22.4", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "peer": true, "requires": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "optional": true, + "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, "peer": true }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - } - } - }, - "@ldo/jsonld-dataset-proxy": { - "version": "file:packages/jsonld-dataset-proxy", - "requires": { - "@ldo/dataset": "^0.0.0", - "@ldo/subscribable-dataset": "^0.0.0", - "@rdfjs/data-model": "^1.2.0", - "@rdfjs/types": "^1.0.1", - "@types/jest": "^27.0.3", - "@types/jsonld": "^1.5.6", - "@types/n3": "^1.10.4", - "@types/rdfjs__dataset": "^1.0.5", - "@types/shexj": "2.1.4", - "jest": "^27.4.5", - "jsonld2graphobject": "^0.0.4", - "shex-test": "^0.5.5", - "ts-jest": "^27.1.2", - "ts-node": "^10.4.0", - "tsc-watch": "^6.0.0" - }, - "dependencies": { - "n3": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/n3/-/n3-0.4.5.tgz", - "integrity": "sha512-sv4bFeqVTTj9hT/OAdndpHpECxlkmpHxdnHUkhNgx3P3Tnw2WqpTUzMEeY+ELEoeW1q6Xqq9LNO0lu/zqogIZA==", - "dev": true + "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, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, - "shex-test": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/shex-test/-/shex-test-0.5.8.tgz", - "integrity": "sha512-wfrhu/lb2zrr4MANpoGbqLbPaoL0yOoDTJp6n/Ewtk2iEeVQD8RLYXVCMLYdmo6ccue/I/yubcIqv4p2uarCbg==", + "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, + "peer": true, "requires": { - "n3": "^0.4.5", - "xlsx": "^0.8.0" + "has-flag": "^4.0.0" } }, "ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" } }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, - "peer": true + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + } + }, + "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, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "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, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "peer": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "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 } } }, - "@ldo/ldo": { - "version": "file:packages/ldo", + "@ldo/subscribable-dataset": { + "version": "file:packages/subscribable-dataset", "requires": { "@ldo/dataset": "^0.0.0", - "@ldo/jsonld-dataset-proxy": "^0.0.0", - "@ldo/subscribable-dataset": "^0.0.0", "@rdfjs/data-model": "^1.2.0", - "@rdfjs/types": "^1.1.0", + "@rdfjs/dataset": "^1.1.0", + "@rdfjs/types": "^1.0.1", "@types/jest": "^27.0.3", "@types/jsonld": "^1.5.6", "@types/n3": "^1.10.4", + "@types/rdfjs__dataset": "^1.0.4", "@types/readable-stream": "^2.3.13", - "@types/shexj": "2.1.4", "buffer": "^6.0.3", - "cross-fetch": "^3.1.5", "jest": "^27.4.5", - "n3": "^1.16.2", - "readable-stream": "^4.3.0", + "n3": "^1.10.0", + "readable-stream": "^4.2.0", "ts-jest": "^27.1.2", - "ts-node": "^10.4.0" + "ts-node": "^9.1.1" }, "dependencies": { "readable-stream": { @@ -36739,56 +38996,18 @@ "yargs-parser": "20.x" } }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "peer": true - } - } - }, - "@ldo/schema-converter-shex": { - "version": "file:packages/schema-converter-shex", - "requires": { - "@shexjs/parser": "^1.0.0-alpha.24", - "@types/jest": "^27.0.3", - "@types/jsonld": "^1.5.6", - "@types/shexj": "^2.1.3", - "dts-dom": "^3.6.0", - "jest": "^27.4.5", - "jsonld": "^5.2.0", - "jsonld2graphobject": "^0.0.5", - "shex-test": "^2.1.0", - "shexj-traverser": "^2.0.1", - "ts-jest": "^27.1.2" - }, - "dependencies": { - "jsonld2graphobject": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/jsonld2graphobject/-/jsonld2graphobject-0.0.5.tgz", - "integrity": "sha512-5BqfXOq96+OBjjiJNG8gQH66pYt6hW88z2SJxdvFJo4XNoVMvqAcUz+JSm/KEWS5NLRnebApEzFrYP3HUiUmYw==", - "requires": { - "@rdfjs/types": "^1.0.1", - "@types/jsonld": "^1.5.6", - "jsonld-context-parser": "^2.1.5", - "uuid": "^8.3.2" - } - }, - "ts-jest": { - "version": "27.1.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", - "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" } }, "typescript": { @@ -36797,34 +39016,16 @@ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "peer": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, - "@ldo/solid-react": { - "version": "file:packages/solid-react", + "@ldo/traverser-shexj": { + "version": "file:packages/traverser-shexj", "requires": { - "@babel/preset-env": "^7.22.10", - "@babel/preset-react": "^7.22.5", - "@babel/preset-typescript": "^7.22.11", - "@inrupt/solid-client": "^1.29.0", - "@ldo/cli": "^0.0.0", - "@ldo/dataset": "^0.0.0", - "@ldo/jsonld-dataset-proxy": "^0.0.0", - "@ldo/ldo": "^0.0.0", - "@ldo/subscribable-dataset": "^0.0.0", - "@rdfjs/types": "^1.1.0", + "@ldo/type-traverser": "^0.0.0", "@types/jest": "^29.0.3", - "@types/jsonld": "^1.5.8", - "@types/n3": "^1.10.4", - "@types/shexj": "2.1.4", - "cross-fetch": "^3.1.6", - "solid-authn-react-native": "^2.0.3", - "stream": "^0.0.2", + "@types/shexj": "^2.1.3", + "jest": "^29.0.3", "ts-jest": "^29.0.2" }, "dependencies": { @@ -36833,7 +39034,6 @@ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", "dev": true, - "peer": true, "requires": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -36848,7 +39048,6 @@ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", "dev": true, - "peer": true, "requires": { "@jest/console": "^29.6.4", "@jest/reporters": "^29.6.4", @@ -36885,7 +39084,6 @@ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", "dev": true, - "peer": true, "requires": { "@jest/fake-timers": "^29.6.4", "@jest/types": "^29.6.3", @@ -36898,7 +39096,6 @@ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", "dev": true, - "peer": true, "requires": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -36913,7 +39110,6 @@ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", "dev": true, - "peer": true, "requires": { "@jest/environment": "^29.6.4", "@jest/expect": "^29.6.4", @@ -36926,7 +39122,6 @@ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", "dev": true, - "peer": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.6.4", @@ -36959,7 +39154,6 @@ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, - "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -36971,7 +39165,6 @@ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", "dev": true, - "peer": true, "requires": { "@jest/console": "^29.6.4", "@jest/types": "^29.6.3", @@ -36984,7 +39177,6 @@ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", "dev": true, - "peer": true, "requires": { "@jest/test-result": "^29.6.4", "graceful-fs": "^4.2.9", @@ -36997,7 +39189,6 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", "dev": true, - "peer": true, "requires": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -37014,15 +39205,6 @@ "pirates": "^4.0.4", "slash": "^3.0.0", "write-file-atomic": "^4.0.2" - }, - "dependencies": { - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "peer": true - } } }, "@jest/types": { @@ -37044,7 +39226,6 @@ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, - "peer": true, "requires": { "type-detect": "4.0.8" } @@ -37054,7 +39235,6 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "peer": true, "requires": { "@sinonjs/commons": "^3.0.0" } @@ -37089,7 +39269,6 @@ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", "dev": true, - "peer": true, "requires": { "@jest/transform": "^29.6.4", "@types/babel__core": "^7.1.14", @@ -37105,7 +39284,6 @@ "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, - "peer": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -37118,7 +39296,6 @@ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "peer": true, "requires": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -37128,35 +39305,37 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "peer": true + "dev": true }, "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, - "peer": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "dedent": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, - "peer": true, "requires": {} }, "emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "peer": true + "dev": true }, "expect": { "version": "29.6.4", @@ -37176,7 +39355,6 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", "dev": true, - "peer": true, "requires": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -37190,7 +39368,6 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", "dev": true, - "peer": true, "requires": { "@jest/core": "^29.6.4", "@jest/types": "^29.6.3", @@ -37203,7 +39380,6 @@ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", "dev": true, - "peer": true, "requires": { "execa": "^5.0.0", "jest-util": "^29.6.3", @@ -37215,7 +39391,6 @@ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", "dev": true, - "peer": true, "requires": { "@jest/environment": "^29.6.4", "@jest/expect": "^29.6.4", @@ -37244,7 +39419,6 @@ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", "dev": true, - "peer": true, "requires": { "@jest/core": "^29.6.4", "@jest/test-result": "^29.6.4", @@ -37265,7 +39439,6 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", "dev": true, - "peer": true, "requires": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.6.4", @@ -37296,7 +39469,6 @@ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", "dev": true, - "peer": true, "requires": { "detect-newline": "^3.0.0" } @@ -37306,7 +39478,6 @@ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", "dev": true, - "peer": true, "requires": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -37320,7 +39491,6 @@ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", "dev": true, - "peer": true, "requires": { "@jest/environment": "^29.6.4", "@jest/fake-timers": "^29.6.4", @@ -37341,7 +39511,6 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", "dev": true, - "peer": true, "requires": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -37362,7 +39531,6 @@ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", "dev": true, - "peer": true, "requires": { "jest-get-type": "^29.6.3", "pretty-format": "^29.6.3" @@ -37402,7 +39570,6 @@ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", "dev": true, - "peer": true, "requires": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -37413,15 +39580,13 @@ "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, - "peer": true + "dev": true }, "jest-resolve": { "version": "29.6.4", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", "dev": true, - "peer": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -37439,7 +39604,6 @@ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", "dev": true, - "peer": true, "requires": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.6.4" @@ -37450,7 +39614,6 @@ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", "dev": true, - "peer": true, "requires": { "@jest/console": "^29.6.4", "@jest/environment": "^29.6.4", @@ -37480,7 +39643,6 @@ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", "dev": true, - "peer": true, "requires": { "@jest/environment": "^29.6.4", "@jest/fake-timers": "^29.6.4", @@ -37511,7 +39673,6 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", "dev": true, - "peer": true, "requires": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -37554,7 +39715,6 @@ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", "dev": true, - "peer": true, "requires": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -37569,7 +39729,6 @@ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", "dev": true, - "peer": true, "requires": { "@jest/test-result": "^29.6.4", "@jest/types": "^29.6.3", @@ -37586,7 +39745,6 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", "dev": true, - "peer": true, "requires": { "@types/node": "*", "jest-util": "^29.6.3", @@ -37616,7 +39774,6 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, - "peer": true, "requires": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -37627,15 +39784,13 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "peer": true + "dev": true }, "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, - "peer": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -37646,7 +39801,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -37672,11 +39826,18 @@ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, - "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + } } }, "wrap-ansi": { @@ -37684,7 +39845,6 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -37696,7 +39856,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -37708,7 +39867,6 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "peer": true, "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -37719,7 +39877,6 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "peer": true, "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -37738,36 +39895,30 @@ } } }, - "@ldo/subscribable-dataset": { - "version": "file:packages/subscribable-dataset", + "@ldo/type-traverser": { + "version": "file:packages/type-traverser", "requires": { - "@ldo/dataset": "^0.0.0", - "@rdfjs/data-model": "^1.2.0", - "@rdfjs/dataset": "^1.1.0", - "@rdfjs/types": "^1.0.1", - "@types/jest": "^27.0.3", - "@types/jsonld": "^1.5.6", - "@types/n3": "^1.10.4", - "@types/rdfjs__dataset": "^1.0.4", - "@types/readable-stream": "^2.3.13", - "buffer": "^6.0.3", - "jest": "^27.4.5", - "n3": "^1.10.0", - "readable-stream": "^4.2.0", + "@types/jest": "^27.4.0", + "@types/shexj": "^2.1.1", + "@types/uuid": "^8.3.4", + "jest": "^27.4.7", + "jsonld2graphobject": "^0.0.3", "ts-jest": "^27.1.2", - "ts-node": "^9.1.1" + "ts-node": "^10.4.0", + "uuid": "^8.3.2" }, "dependencies": { - "readable-stream": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "jsonld2graphobject": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/jsonld2graphobject/-/jsonld2graphobject-0.0.3.tgz", + "integrity": "sha512-Jn3Zdh5zfzsGZvDZVindwpY/W3cdFJ3l1FNB0ngBa79i1tcLGP7QxBYlUoA4zbjzBSJlK4X6/qicy2zF9cS/IA==", + "dev": true, "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "@rdfjs/types": "^1.0.1", + "@types/jsonld": "^1.5.6", + "jsonld": "^5.2.0", + "jsonld-context-parser": "^2.1.5", + "uuid": "^8.3.2" } }, "ts-jest": { @@ -37786,26 +39937,17 @@ "yargs-parser": "20.x" } }, - "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - }, "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "peer": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, @@ -52215,8 +54357,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", - "dev": true, - "peer": true + "dev": true }, "q": { "version": "1.5.1", diff --git a/package.json b/package.json index 752efaa..d1bafc0 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,7 @@ "test": "lerna run test", "build": "lerna run build", "demo-react": "lerna run start --scope @ldo/demo-react", - "lint": "lerna run lint", - "postinstall": "npm run build" + "lint": "lerna run lint" }, "devDependencies": { "@types/node": "^20.5.7", diff --git a/packages/traverser-shexj/.eslintrc b/packages/traverser-shexj/.eslintrc new file mode 100644 index 0000000..83c51a9 --- /dev/null +++ b/packages/traverser-shexj/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": ["../../.eslintrc"] +} \ No newline at end of file diff --git a/packages/traverser-shexj/README.md b/packages/traverser-shexj/README.md new file mode 100644 index 0000000..516a348 --- /dev/null +++ b/packages/traverser-shexj/README.md @@ -0,0 +1,879 @@ +# ShexJ Traverser + +Traverse a ShexJ schema with custom functionality. + +## Installation +```bash +npm i shexj-traverser +``` + +## Tutorial +This library uses `type-traverser`. To learn more about how type traverser can be used, go to the [Type Traverser Tutorial](https://github.com/o-development/type-traverser/blob/master/README.md#using-a-traverser). + +## Usage +There are two ways you can use the ShexJ-Traverser: + - A `visitor` + - A `transformer` + +### Visitor +This visitor shows all the possible visitor functions you can use. Note that you do not need to define every visitor function, only the ones you care about. + +Run `npm run start` to see this code in action. + +```typescript +const shexJVisitor = shexJTraverser.createVisitor({ + Schema: { + visitor: async (_item, _context) => { + console.log("Schema"); + }, + properties: { + startActs: async (_item, _context) => { + console.log("Schema.startActs"); + }, + start: async (_item, _context) => { + console.log("Schema.start"); + }, + imports: async (_item, _context) => { + console.log("Schema.imports"); + }, + shapes: async (_item, _context) => { + console.log("Schema.shape"); + }, + }, + }, + shapeExpr: async (_item, _context) => { + console.log("shapeExpr"); + }, + ShapeOr: { + visitor: async (_item, _context) => { + console.log("ShapeOr"); + }, + properties: { + id: async (_item, _context) => { + console.log("ShapeOr.id"); + }, + shapeExprs: async (_item, _context) => { + console.log("ShapeOr.shapeExprs"); + }, + }, + }, + ShapeAnd: { + visitor: async (_item, _context) => { + console.log("ShapeAnd"); + }, + properties: { + id: async (_item, _context) => { + console.log("ShapeAnd.id"); + }, + shapeExprs: async (_item, _context) => { + console.log("ShapeAnd.shapeExprs"); + }, + }, + }, + ShapeNot: { + visitor: async (_item, _context) => { + console.log("ShapeNot"); + }, + properties: { + id: async (_item, _context) => { + console.log("ShapeNot.id"); + }, + shapeExpr: async (_item, _context) => { + console.log("ShapeNot.shapeExpr"); + }, + }, + }, + ShapeExternal: { + visitor: async (_item, _context) => { + console.log("ShapeExternal"); + }, + properties: { + id: async (_item, _context) => { + console.log("ShapeExternal.id"); + }, + }, + }, + shapeExprRef: async (_item, _context) => { + console.log("shapeExprRef"); + }, + NodeConstraint: { + visitor: async (_item, _context) => { + console.log("NodeConstraint"); + }, + properties: { + id: async (_item, _context) => { + console.log("NodeConstraint.id"); + }, + datatype: async (_item, _context) => { + console.log("NodeConstraint.datatype"); + }, + values: async (_item, _context) => { + console.log("NodeConstraint.values"); + }, + length: async (_item, _context) => { + console.log("NodeConstraint.length"); + }, + minlength: async (_item, _context) => { + console.log("NodeConstraint.minlength"); + }, + maxlength: async (_item, _context) => { + console.log("NodeConstraint.maxlength"); + }, + pattern: async (_item, _context) => { + console.log("NodeConstraint.pattern"); + }, + flags: async (_item, _context) => { + console.log("NodeConstraint.flags"); + }, + mininclusive: async (_item, _context) => { + console.log("NodeConstraint.mininclusive"); + }, + minexclusive: async (_item, _context) => { + console.log("NodeConstraint.minexclusive"); + }, + maxinclusive: async (_item, _context) => { + console.log("NodeConstraint.maxinclusive"); + }, + maxexclusive: async (_item, _context) => { + console.log("NodeConstraint.maxexclusive"); + }, + totaldigits: async (_item, _context) => { + console.log("NodeConstraint.totaldigits"); + }, + fractiondigits: async (_item, _context) => { + console.log("NodeConstraints.fractiondigits"); + }, + }, + }, + numericLiteral: async (_item, _context) => { + console.log("numericLiteral"); + }, + valueSetValue: async (_item, _context) => { + console.log("valueSetValue"); + }, + objectValue: async (_item, _context) => { + console.log("objectValue"); + }, + ObjectLiteral: { + visitor: async (_item, _context) => { + console.log("ObjectLiteral"); + }, + properties: { + value: async (_item, _context) => { + console.log("ObjectLiteral.value"); + }, + language: async (_item, _context) => { + console.log("ObjectLiteral.language"); + }, + type: async (_item, _context) => { + console.log("ObjectLiteral.type"); + }, + }, + }, + IriStem: { + visitor: async (_item, _context) => { + console.log("IriStem"); + }, + properties: { + stem: async (_item, _context) => { + console.log("IriStem.stem"); + }, + }, + }, + IriStemRange: { + visitor: async (_item, _context) => { + console.log("IriStemRange"); + }, + properties: { + stem: async (_item, _context) => { + console.log("IriStemRange.stem"); + }, + exclusions: async (_item, _context) => { + console.log("IriStemRange.exclusions"); + }, + }, + }, + IriStemRangeStem: async (_item, _context) => { + console.log("IriStemRangeStem"); + }, + IriStemRangeExclusions: async (_item, _context) => { + console.log("IriStemRangeExclusions"); + }, + LiteralStem: { + visitor: async (_item, _context) => { + console.log("LiteralStem"); + }, + properties: { + stem: async (_item, _context) => { + console.log("LiteralStem.stem"); + }, + }, + }, + LiteralStemRange: { + visitor: async (_item, _context) => { + console.log("LiteralStemRange"); + }, + properties: { + stem: async (_item, _context) => { + console.log("LiteralStemRange.stem"); + }, + exclusions: async (_item, _context) => { + console.log("LiteralStemRange.exclusions"); + }, + }, + }, + LiteralStemRangeStem: async (_item, _context) => { + console.log("LiteralStemRangeStem"); + }, + LiteralStemRangeExclusions: async (_item, _context) => { + console.log("LiteralStemRangeExclusions"); + }, + Language: { + visitor: async (_item, _context) => { + console.log("Language"); + }, + properties: { + languageTag: async (_item, _context) => { + console.log("Language.languageTag"); + }, + }, + }, + LanguageStem: { + visitor: async (_item, _context) => { + console.log("LanguageStem"); + }, + properties: { + stem: async (_item, _context) => { + console.log("LanguageStem.stem"); + }, + }, + }, + LanguageStemRange: { + visitor: async (_item, _context) => { + console.log("LanguageStemRange"); + }, + properties: { + stem: async (_item, _context) => { + console.log("LanguageStemRange.stem"); + }, + exclusions: async (_item, _context) => { + console.log("LanguageStemRange.exclusions"); + }, + }, + }, + LanguageStemRangeStem: async (_item, _context) => { + console.log("LanguageStemRangeStem"); + }, + LanguageStemRangeExclusions: async (_item, _context) => { + console.log("LanguageStemRangeExclusions"); + }, + Wildcard: { + visitor: async (_item, _context) => { + console.log("Wildcard"); + }, + }, + Shape: { + visitor: async (_item, _context) => { + console.log("Shape"); + }, + properties: { + id: async (_item, _context) => { + console.log("Shape.id"); + }, + closed: async (_item, _context) => { + console.log("Shape.closed"); + }, + extra: async (_item, _context) => { + console.log("Shape.extra"); + }, + expression: async (_item, _context) => { + console.log("Shape.expression"); + }, + semActs: async (_item, _context) => { + console.log("Shape.semActs"); + }, + annotations: async (_item, _context) => { + console.log("Shape.annotations"); + }, + }, + }, + tripleExpr: async (_item, _context) => { + console.log("tripleExpr"); + }, + EachOf: { + visitor: async (_item, _context) => { + console.log("EachOf"); + }, + properties: { + expressions: async (_item, _context) => { + console.log("EachOf.expressions"); + }, + id: async (_item, _context) => { + console.log("EachOf.id"); + }, + min: async (_item, _context) => { + console.log("EachOf.min"); + }, + max: async (_item, _context) => { + console.log("EachOf.max"); + }, + semActs: async (_item, _context) => { + console.log("EachOf.semActs"); + }, + annotations: async (_item, _context) => { + console.log("EachOf.annotations"); + }, + }, + }, + OneOf: { + visitor: async (_item, _context) => { + console.log("OneOf"); + }, + properties: { + expressions: async (_item, _context) => { + console.log("OneOf.expressions"); + }, + id: async (_item, _context) => { + console.log("OneOf.id"); + }, + min: async (_item, _context) => { + console.log("OneOf.min"); + }, + max: async (_item, _context) => { + console.log("OneOf.max"); + }, + semActs: async (_item, _context) => { + console.log("OneOf.semActs"); + }, + annotations: async (_item, _context) => { + console.log("OneOf.annotations"); + }, + }, + }, + TripleConstraint: { + visitor: async (_item, _context) => { + console.log("TripleConstraint"); + }, + properties: { + inverse: async (_item, _context) => { + console.log("TripleConstraint.inverse"); + }, + predicate: async (_item, _context) => { + console.log("TripleConstraint.predicate"); + }, + valueExpr: async (_item, _context) => { + console.log("TripleConstraint.valueExpr"); + }, + id: async (_item, _context) => { + console.log("TripleConstraint.id"); + }, + min: async (_item, _context) => { + console.log("TripleConstraint.min"); + }, + max: async (_item, _context) => { + console.log("TripleConstraint.max"); + }, + semActs: async (_item, _context) => { + console.log("TripleConstraint.semActs"); + }, + annotations: async (_item, _context) => { + console.log("TripleConstraint.annotations"); + }, + }, + }, + tripleExprRef: async (_item, _context) => { + console.log("tripleExprRef"); + }, + SemAct: { + visitor: async (_item, _context) => { + console.log("SemAct"); + }, + properties: { + name: async (_item, _context) => { + console.log("SemAct.name"); + }, + code: async (_item, _context) => { + console.log("SemAct.code"); + }, + }, + }, + Annotation: { + visitor: async (_item, _context) => { + console.log("Annotation"); + }, + properties: { + predicate: async (_item, _context) => { + console.log("Annotation.predicate"); + }, + object: async (_item, _context) => { + console.log("Annotation.object"); + }, + }, + }, + IRIREF: async (_item, _context) => { + console.log("IRIREF"); + }, + STRING: async (_item, _context) => { + console.log("STRING"); + }, + LANGTAG: async (_item, _context) => { + console.log("LANGTAG"); + }, + INTEGER: async (_item, _context) => { + console.log("INTEGER"); + }, + BOOL: async (_item, _context) => { + console.log("BOOL"); + }, + IRI: async (_item, _context) => { + console.log("IRI"); + }, +}); + +/** + * Sample Data + */ +const simpleSchema: Schema = { + type: "Schema", + shapes: [ + { + type: "Shape", + id: "http://shex.io/webapps/shex.js/doc/EmployeeShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/givenName", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 1, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/familyName", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/phone", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/mbox", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + }, + ], + }, + }, + ], + "@context": "http://www.w3.org/ns/shex.jsonld", +}; + +await shexJVisitor.visit(simpleSchema, "Schema", undefined); +// Logs: +// Schema +// Schema.startActs +// Schema.start +// Schema.imports +// Schema.shape +// shapeExpr +// Shape +// Shape.id +// shapeExprRef +// Shape.closed +// Shape.extra +// Shape.expression +// tripleExpr +// EachOf +// EachOf.expressions +// tripleExpr +// TripleConstraint +// TripleConstraint.inverse +// TripleConstraint.predicate +// IRIREF +// TripleConstraint.valueExpr +// shapeExpr +// NodeConstraint +// NodeConstraint.id +// NodeConstraint.datatype +// IRIREF +// NodeConstraint.values +// NodeConstraint.length +// NodeConstraint.minlength +// NodeConstraint.maxlength +// NodeConstraint.pattern +// NodeConstraint.flags +// NodeConstraint.mininclusive +// NodeConstraint.minexclusive +// NodeConstraint.maxinclusive +// NodeConstraint.maxexclusive +// NodeConstraint.totaldigits +// NodeConstraints.fractiondigits +// TripleConstraint.id +// TripleConstraint.min +// INTEGER +// TripleConstraint.max +// INTEGER +// TripleConstraint.semActs +// TripleConstraint.annotations +// tripleExpr +// TripleConstraint +// TripleConstraint.inverse +// TripleConstraint.predicate +// IRIREF +// TripleConstraint.valueExpr +// shapeExpr +// NodeConstraint +// NodeConstraint.id +// NodeConstraint.datatype +// NodeConstraint.values +// NodeConstraint.length +// NodeConstraint.minlength +// NodeConstraint.maxlength +// NodeConstraint.pattern +// NodeConstraint.flags +// NodeConstraint.mininclusive +// NodeConstraint.minexclusive +// NodeConstraint.maxinclusive +// NodeConstraint.maxexclusive +// NodeConstraint.totaldigits +// NodeConstraints.fractiondigits +// TripleConstraint.id +// TripleConstraint.min +// TripleConstraint.max +// TripleConstraint.semActs +// TripleConstraint.annotations +// tripleExpr +// TripleConstraint +// TripleConstraint.inverse +// TripleConstraint.predicate +// IRIREF +// TripleConstraint.valueExpr +// shapeExpr +// NodeConstraint +// NodeConstraint.id +// NodeConstraint.datatype +// NodeConstraint.values +// NodeConstraint.length +// NodeConstraint.minlength +// NodeConstraint.maxlength +// NodeConstraint.pattern +// NodeConstraint.flags +// NodeConstraint.mininclusive +// NodeConstraint.minexclusive +// NodeConstraint.maxinclusive +// NodeConstraint.maxexclusive +// NodeConstraint.totaldigits +// NodeConstraints.fractiondigits +// TripleConstraint.id +// TripleConstraint.min +// INTEGER +// TripleConstraint.max +// TripleConstraint.semActs +// TripleConstraint.annotations +// tripleExpr +// TripleConstraint +// TripleConstraint.inverse +// TripleConstraint.predicate +// IRIREF +// TripleConstraint.valueExpr +// shapeExpr +// NodeConstraint +// NodeConstraint.id +// NodeConstraint.datatype +// NodeConstraint.values +// NodeConstraint.length +// NodeConstraint.minlength +// NodeConstraint.maxlength +// NodeConstraint.pattern +// NodeConstraint.flags +// NodeConstraint.mininclusive +// NodeConstraint.minexclusive +// NodeConstraint.maxinclusive +// NodeConstraint.maxexclusive +// NodeConstraint.totaldigits +// NodeConstraints.fractiondigits +// TripleConstraint.id +// TripleConstraint.min +// TripleConstraint.max +// TripleConstraint.semActs +// TripleConstraint.annotations +// EachOf.id +// EachOf.min +// EachOf.max +// EachOf.semActs +// EachOf.annotations +// Shape.semActs +// Shape.annotations +``` + +### Transformer +This transformer shows all the possible return types. Note that you do not need to define every return type yourself. This library will automatically deduce return types. + +```typescript +const shexJTransformer = shexJTraverser.createTransformer< + { + Schema: { + return: string; + properties: { + startActs: string; + start: string; + imports: string; + shapes: string; + }; + }; + shapeExpr: { + return: string; + }; + ShapeOr: { + return: string; + properties: { + id: string; + shapeExprs: string; + }; + }; + ShapeAnd: { + return: string; + properties: { + id: string; + shapeExprs: string; + }; + }; + ShapeNot: { + return: string; + properties: { + id: string; + shapeExpr: string; + }; + }; + ShapeExternal: { + return: string; + properties: { + id: string; + }; + }; + shapeExprRef: { + return: string; + }; + NodeConstraint: { + return: string; + properties: { + id: string; + datatype: string; + values: string; + length: string; + minlength: string; + maxlength: string; + pattern: string; + flags: string; + mininclusive: string; + minexclusive: string; + maxinclusive: string; + maxexclusive: string; + totaldigits: string; + fractiondigits: string; + }; + }; + numericLiteral: { + return: string; + }; + valueSetValue: { + return: string; + }; + objectValue: { + return: string; + }; + ObjectLiteral: { + return: string; + properties: { + value: string; + language: string; + type: string; + }; + }; + IriStem: { + return: string; + properties: { + stem: string; + }; + }; + IriStemRange: { + return: string; + properties: { + stem: string; + exclusions: string; + }; + }; + IriStemRangeStem: { + return: string; + }; + IriStemRangeExclusions: { + return: string; + }; + LiteralStem: { + return: string; + properties: { + stem: string; + }; + }; + LiteralStemRange: { + return: string; + properties: { + stem: string; + exclusions: string; + }; + }; + LiteralStemRangeStem: { + return: string; + }; + LiteralStemRangeExclusions: { + return: string; + }; + Language: { + return: string; + properties: { + languageTag: string; + }; + }; + LanguageStem: { + return: string; + properties: { + stem: string; + }; + }; + LanguageStemRangeStem: { + return: string; + }; + LanguageStemRangeExclusions: { + return: string; + }; + Wildcard: { + return: string; + }; + Shape: { + return: string; + properties: { + id: string; + closed: string; + extra: string; + expression: string; + semActs: string; + annotations: string; + }; + }; + tripleExpr: { + return: string; + }; + EachOf: { + return: string; + properties: { + expressions: string; + id: string; + min: string; + max: string; + semActs: string; + annotations: string; + }; + }; + OneOf: { + return: string; + properties: { + expressions: string; + id: string; + min: string; + max: string; + semActs: string; + annotations: string; + }; + }; + TripleConstraint: { + return: string; + properties: { + inverse: string; + predicate: string; + valueExpr: string; + id: string; + min: string; + max: string; + semActs: string; + annotations: string; + }; + }; + tripleExprRef: { + return: string; + }; + SemAct: { + return: string; + properties: { + name: string; + code: string; + }; + }; + Annotation: { + return: string; + properties: { + predicate: string; + object: string; + }; + }; + IRIREF: { + return: string; + }; + STRING: { + return: string; + }; + LANGTAG: { + return: string; + }; + INTEGER: { + return: string; + }; + BOOL: { + return: string; + }; + IRI: { + return: string; + }; + }, + undefined +>({ + Schema: { + transformer: async ( + item, + getTransformedChildren, + _setReturnPointer, + _context + ) => { + const children: { + startActs: string; + start: string; + imports: string; + shapes: string; + } = await getTransformedChildren(); + return `Transformer(startActs:${children.startActs},start:${children.start},imports:${children.imports},shapes:${children.shapes})`; + }, + }, + // ... +}); +``` + + + +## Liscense +MIT \ No newline at end of file diff --git a/packages/traverser-shexj/jest.config.js b/packages/traverser-shexj/jest.config.js new file mode 100644 index 0000000..bad5f64 --- /dev/null +++ b/packages/traverser-shexj/jest.config.js @@ -0,0 +1,6 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const sharedConfig = require("../../jest.config.js"); +module.exports = { + ...sharedConfig, + rootDir: "./", +}; diff --git a/packages/traverser-shexj/package.json b/packages/traverser-shexj/package.json new file mode 100644 index 0000000..48d0278 --- /dev/null +++ b/packages/traverser-shexj/package.json @@ -0,0 +1,34 @@ +{ + "name": "@ldo/traverser-shexj", + "version": "0.0.0", + "description": "A type-traverser for ShexJ", + "main": "dist/index.js", + "scripts": { + "build": "tsc --project tsconfig.build.json", + "test": "jest --coverage", + "prepublishOnly": "npm run test && npm run build", + "lint": "eslint src/** --fix --no-error-on-unmatched-pattern" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/o-development/json-ld-shex-mapper.git" + }, + "author": "", + "license": "MIT", + "bugs": { + "url": "https://github.com/o-development/json-ld-shex-mapper/issues" + }, + "homepage": "https://github.com/o-development/json-ld-shex-mapper#readme", + "devDependencies": { + "@types/shexj": "^2.1.3", + "@types/jest": "^29.0.3", + "jest": "^29.0.3", + "ts-jest": "^29.0.2" + }, + "files": [ + "dist" + ], + "dependencies": { + "@ldo/type-traverser": "^0.0.0" + } +} diff --git a/packages/traverser-shexj/src/ShexJTraverser.ts b/packages/traverser-shexj/src/ShexJTraverser.ts new file mode 100644 index 0000000..199e908 --- /dev/null +++ b/packages/traverser-shexj/src/ShexJTraverser.ts @@ -0,0 +1,7 @@ +import { ShexJTraverserDefinition } from "./ShexJTraverserDefinition"; +import type { ShexJTraverserTypes } from "./ShexJTraverserTypes"; +import { Traverser } from "@ldo/type-traverser"; + +export const ShexJTraverser = new Traverser( + ShexJTraverserDefinition, +); diff --git a/packages/traverser-shexj/src/ShexJTraverserDefinition.ts b/packages/traverser-shexj/src/ShexJTraverserDefinition.ts new file mode 100644 index 0000000..9f56c45 --- /dev/null +++ b/packages/traverser-shexj/src/ShexJTraverserDefinition.ts @@ -0,0 +1,303 @@ +import type { ShexJTraverserTypes } from "."; +import type { TraverserDefinition } from "@ldo/type-traverser"; +import type { shapeExpr, valueSetValue } from "shexj"; + +export const ShexJTraverserDefinition: TraverserDefinition = + { + Schema: { + kind: "interface", + properties: { + startActs: "SemAct", + start: "shapeExprOrRef", + imports: "IRIREF", + shapes: "ShapeDecl", + }, + }, + ShapeDecl: { + kind: "interface", + properties: { + id: "shapeDeclLabel", + abstract: "BOOL", + restricts: "shapeExprOrRef", + shapeExpr: "shapeExpr", + }, + }, + shapeExpr: { + kind: "union", + selector: (item: shapeExpr) => item.type, + }, + shapeExprOrRef: { + kind: "union", + selector: (item) => + typeof item === "string" ? "shapeDeclRef" : "shapeExpr", + }, + ShapeOr: { + kind: "interface", + properties: { + shapeExprs: "shapeExprOrRef", + }, + }, + ShapeAnd: { + kind: "interface", + properties: { + shapeExprs: "shapeExprOrRef", + }, + }, + ShapeNot: { + kind: "interface", + properties: { + shapeExpr: "shapeExprOrRef", + }, + }, + ShapeExternal: { + kind: "interface", + properties: {}, + }, + shapeDeclRef: { + kind: "union", + selector: () => "shapeDeclLabel", + }, + shapeDeclLabel: { + kind: "union", + selector: () => "IRIREF", + }, + NodeConstraint: { + kind: "interface", + properties: { + datatype: "IRIREF", + values: "valueSetValue", + length: "INTEGER", + minlength: "INTEGER", + maxlength: "INTEGER", + pattern: "STRING", + flags: "STRING", + mininclusive: "numericLiteral", + minexclusive: "numericLiteral", + totaldigits: "INTEGER", + fractiondigits: "INTEGER", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + numericLiteral: { + kind: "union", + selector: () => "DOUBLE", + }, + valueSetValue: { + kind: "union", + selector: (item: valueSetValue) => { + if (typeof item === "string") { + return "objectValue"; + } else if ( + item.type && + [ + "IriStem", + "IriStemRange", + "LiteralStem", + "LiteralStemRange", + "Language", + "LanguageStem", + "LanguageStemRange", + ].includes(item.type) + ) { + return item.type as + | "IriStem" + | "IriStemRange" + | "LiteralStem" + | "LiteralStemRange" + | "Language" + | "LanguageStem" + | "LanguageStemRange"; + } else { + return "objectValue"; + } + }, + }, + objectValue: { + kind: "union", + selector: (item) => + typeof item === "string" ? "IRIREF" : "ObjectLiteral", + }, + ObjectLiteral: { + kind: "interface", + properties: { + value: "STRING", + language: "STRING", + type: "STRING", + }, + }, + IriStem: { + kind: "interface", + properties: { + stem: "IRIREF", + }, + }, + IriStemRange: { + kind: "interface", + properties: { + stem: "IRIREF", + exclusions: "IriStemRangeExclusions", + }, + }, + IriStemRangeExclusions: { + kind: "union", + selector: (item) => (typeof item === "string" ? "IRIREF" : "IriStem"), + }, + LiteralStem: { + kind: "interface", + properties: { + stem: "STRING", + }, + }, + LiteralStemRange: { + kind: "interface", + properties: { + stem: "LiteralStemRangeStem", + exclusions: "LiteralStemRangeExclusions", + }, + }, + LiteralStemRangeStem: { + kind: "union", + selector: (item) => (typeof item === "string" ? "STRING" : "Wildcard"), + }, + LiteralStemRangeExclusions: { + kind: "union", + selector: (item) => (typeof item === "string" ? "STRING" : "LiteralStem"), + }, + Language: { + kind: "interface", + properties: { + languageTag: "LANGTAG", + }, + }, + LanguageStem: { + kind: "interface", + properties: { + stem: "LANGTAG", + }, + }, + LanguageStemRange: { + kind: "interface", + properties: { + stem: "LanguageStemRangeStem", + exclusions: "LanguageStemRangeExclusions", + }, + }, + LanguageStemRangeStem: { + kind: "union", + selector: (item) => (typeof item === "string" ? "LANGTAG" : "Wildcard"), + }, + LanguageStemRangeExclusions: { + kind: "union", + selector: (item) => + typeof item === "string" ? "LANGTAG" : "LanguageStem", + }, + Wildcard: { + kind: "interface", + properties: {}, + }, + Shape: { + kind: "interface", + properties: { + closed: "BOOL", + extra: "IRIREF", + extends: "shapeExprOrRef", + expression: "tripleExprOrRef", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + tripleExpr: { + kind: "union", + selector: (item) => item.type, + }, + tripleExprOrRef: { + kind: "union", + selector: (item) => + typeof item === "string" ? "tripleExprRef" : "tripleExpr", + }, + EachOf: { + kind: "interface", + properties: { + id: "tripleExprLabel", + min: "INTEGER", + max: "INTEGER", + expressions: "tripleExprOrRef", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + OneOf: { + kind: "interface", + properties: { + id: "tripleExprLabel", + min: "INTEGER", + max: "INTEGER", + expressions: "tripleExprOrRef", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + TripleConstraint: { + kind: "interface", + properties: { + id: "tripleExprLabel", + min: "INTEGER", + max: "INTEGER", + inverse: "BOOL", + predicate: "IRIREF", + valueExpr: "shapeExprOrRef", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + tripleExprRef: { + kind: "union", + selector: () => "tripleExprLabel", + }, + tripleExprLabel: { + kind: "union", + selector: () => "IRIREF", + }, + SemAct: { + kind: "interface", + properties: { + name: "IRIREF", + code: "STRING", + }, + }, + Annotation: { + kind: "interface", + properties: { + predicate: "IRI", + object: "objectValue", + }, + }, + IRIREF: { + kind: "primitive", + }, + BNODE: { + kind: "primitive", + }, + INTEGER: { + kind: "primitive", + }, + STRING: { + kind: "primitive", + }, + DECIMAL: { + kind: "primitive", + }, + DOUBLE: { + kind: "primitive", + }, + LANGTAG: { + kind: "primitive", + }, + BOOL: { + kind: "primitive", + }, + IRI: { + kind: "primitive", + }, + }; diff --git a/packages/traverser-shexj/src/ShexJTraverserTypes.ts b/packages/traverser-shexj/src/ShexJTraverserTypes.ts new file mode 100644 index 0000000..e8df313 --- /dev/null +++ b/packages/traverser-shexj/src/ShexJTraverserTypes.ts @@ -0,0 +1,375 @@ +import type { + Annotation, + BNODE, + BOOL, + DECIMAL, + DOUBLE, + EachOf, + INTEGER, + IRI, + IRIREF, + IriStem, + IriStemRange, + LANGTAG, + Language, + LanguageStem, + LanguageStemRange, + LiteralStem, + LiteralStemRange, + NodeConstraint, + numericLiteral, + ObjectLiteral, + objectValue, + OneOf, + Schema, + SemAct, + Shape, + ShapeAnd, + ShapeDecl, + shapeDeclLabel, + shapeDeclRef, + shapeExpr, + shapeExprOrRef, + ShapeExternal, + ShapeNot, + ShapeOr, + STRING, + TripleConstraint, + tripleExpr, + tripleExprLabel, + tripleExprOrRef, + tripleExprRef, + valueSetValue, + Wildcard, +} from "shexj"; +import type { ValidateTraverserTypes } from "@ldo/type-traverser"; + +export type ShexJTraverserTypes = ValidateTraverserTypes<{ + Schema: { + kind: "interface"; + type: Schema; + properties: { + startActs: "SemAct"; + start: "shapeExprOrRef"; + imports: "IRIREF"; + shapes: "ShapeDecl"; + }; + }; + ShapeDecl: { + kind: "interface"; + type: ShapeDecl; + properties: { + id: "shapeDeclLabel"; + abstract: "BOOL"; + restricts: "shapeExprOrRef"; + shapeExpr: "shapeExpr"; + }; + }; + shapeExpr: { + kind: "union"; + type: shapeExpr; + typeNames: + | "ShapeOr" + | "ShapeAnd" + | "ShapeNot" + | "NodeConstraint" + | "Shape" + | "ShapeExternal"; + }; + shapeExprOrRef: { + kind: "union"; + type: shapeExprOrRef; + typeNames: "shapeExpr" | "shapeDeclRef"; + }; + ShapeOr: { + kind: "interface"; + type: ShapeOr; + properties: { + shapeExprs: "shapeExprOrRef"; + }; + }; + ShapeAnd: { + kind: "interface"; + type: ShapeAnd; + properties: { + shapeExprs: "shapeExprOrRef"; + }; + }; + ShapeNot: { + kind: "interface"; + type: ShapeNot; + properties: { + shapeExpr: "shapeExprOrRef"; + }; + }; + ShapeExternal: { + kind: "interface"; + type: ShapeExternal; + properties: Record; + }; + shapeDeclRef: { + kind: "union"; + type: shapeDeclRef; + typeNames: "shapeDeclLabel"; + }; + shapeDeclLabel: { + kind: "union"; + type: shapeDeclLabel; + typeNames: "IRIREF" | "BNODE"; + }; + NodeConstraint: { + kind: "interface"; + type: NodeConstraint; + properties: { + datatype: "IRIREF"; + values: "valueSetValue"; + length: "INTEGER"; + minlength: "INTEGER"; + maxlength: "INTEGER"; + pattern: "STRING"; + flags: "STRING"; + mininclusive: "numericLiteral"; + minexclusive: "numericLiteral"; + totaldigits: "INTEGER"; + fractiondigits: "INTEGER"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + numericLiteral: { + kind: "union"; + type: numericLiteral; + typeNames: "INTEGER" | "DECIMAL" | "DOUBLE"; + }; + valueSetValue: { + kind: "union"; + type: valueSetValue; + typeNames: + | "objectValue" + | "IriStem" + | "IriStemRange" + | "LiteralStem" + | "LiteralStemRange" + | "Language" + | "LanguageStem" + | "LanguageStemRange"; + }; + objectValue: { + kind: "union"; + type: objectValue; + typeNames: "IRIREF" | "ObjectLiteral"; + }; + ObjectLiteral: { + kind: "interface"; + type: ObjectLiteral; + properties: { + value: "STRING"; + language: "STRING"; + type: "STRING"; + }; + }; + IriStem: { + kind: "interface"; + type: IriStem; + properties: { + stem: "IRIREF"; + }; + }; + IriStemRange: { + kind: "interface"; + type: IriStemRange; + properties: { + stem: "IRIREF"; + exclusions: "IriStemRangeExclusions"; + }; + }; + IriStemRangeExclusions: { + kind: "union"; + type: IRIREF | IriStem; + typeNames: "IRIREF" | "IriStem"; + }; + LiteralStem: { + kind: "interface"; + type: LiteralStem; + properties: { + stem: "STRING"; + }; + }; + LiteralStemRange: { + kind: "interface"; + type: LiteralStemRange; + properties: { + stem: "LiteralStemRangeStem"; + exclusions: "LiteralStemRangeExclusions"; + }; + }; + LiteralStemRangeStem: { + kind: "union"; + type: STRING | Wildcard; + typeNames: "STRING" | "Wildcard"; + }; + LiteralStemRangeExclusions: { + kind: "union"; + type: STRING | LiteralStem; + typeNames: "STRING" | "LiteralStem"; + }; + Language: { + kind: "interface"; + type: Language; + properties: { + languageTag: "LANGTAG"; + }; + }; + LanguageStem: { + kind: "interface"; + type: LanguageStem; + properties: { + stem: "LANGTAG"; + }; + }; + LanguageStemRange: { + kind: "interface"; + type: LanguageStemRange; + properties: { + stem: "LanguageStemRangeStem"; + exclusions: "LanguageStemRangeExclusions"; + }; + }; + LanguageStemRangeStem: { + kind: "union"; + type: LANGTAG | Wildcard; + typeNames: "LANGTAG" | "Wildcard"; + }; + LanguageStemRangeExclusions: { + kind: "union"; + type: LANGTAG | LanguageStem; + typeNames: "LANGTAG" | "LanguageStem"; + }; + Wildcard: { + kind: "interface"; + type: Wildcard; + properties: Record; + }; + Shape: { + kind: "interface"; + type: Shape; + properties: { + closed: "BOOL"; + extra: "IRIREF"; + extends: "shapeExprOrRef"; + expression: "tripleExprOrRef"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + tripleExpr: { + kind: "union"; + type: tripleExpr; + typeNames: "EachOf" | "OneOf" | "TripleConstraint"; + }; + tripleExprOrRef: { + kind: "union"; + type: tripleExprOrRef; + typeNames: "tripleExpr" | "tripleExprRef"; + }; + EachOf: { + kind: "interface"; + type: EachOf; + properties: { + id: "tripleExprLabel"; + min: "INTEGER"; + max: "INTEGER"; + expressions: "tripleExprOrRef"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + OneOf: { + kind: "interface"; + type: OneOf; + properties: { + id: "tripleExprLabel"; + min: "INTEGER"; + max: "INTEGER"; + expressions: "tripleExprOrRef"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + TripleConstraint: { + kind: "interface"; + type: TripleConstraint; + properties: { + id: "tripleExprLabel"; + min: "INTEGER"; + max: "INTEGER"; + inverse: "BOOL"; + predicate: "IRIREF"; + valueExpr: "shapeExprOrRef"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + tripleExprRef: { + kind: "union"; + type: tripleExprRef; + typeNames: "tripleExprLabel"; + }; + tripleExprLabel: { + kind: "union"; + type: tripleExprLabel; + typeNames: "IRIREF" | "BNODE"; + }; + SemAct: { + kind: "interface"; + type: SemAct; + properties: { + name: "IRIREF"; + code: "STRING"; + }; + }; + Annotation: { + kind: "interface"; + type: Annotation; + properties: { + predicate: "IRI"; + object: "objectValue"; + }; + }; + IRIREF: { + kind: "primitive"; + type: IRIREF; + }; + BNODE: { + kind: "primitive"; + type: BNODE; + }; + INTEGER: { + kind: "primitive"; + type: INTEGER; + }; + STRING: { + kind: "primitive"; + type: STRING; + }; + DECIMAL: { + kind: "primitive"; + type: DECIMAL; + }; + DOUBLE: { + kind: "primitive"; + type: DOUBLE; + }; + LANGTAG: { + kind: "primitive"; + type: LANGTAG; + }; + BOOL: { + kind: "primitive"; + type: BOOL; + }; + IRI: { + kind: "primitive"; + type: IRI; + }; +}>; diff --git a/packages/traverser-shexj/src/index.ts b/packages/traverser-shexj/src/index.ts new file mode 100644 index 0000000..2a74ee4 --- /dev/null +++ b/packages/traverser-shexj/src/index.ts @@ -0,0 +1,5 @@ +import { ShexJTraverser } from "./ShexJTraverser"; + +export * from "./ShexJTraverserDefinition"; +export * from "./ShexJTraverserTypes"; +export default ShexJTraverser; diff --git a/packages/traverser-shexj/test/traverseSchema.test.ts b/packages/traverser-shexj/test/traverseSchema.test.ts new file mode 100644 index 0000000..d3f1dcd --- /dev/null +++ b/packages/traverser-shexj/test/traverseSchema.test.ts @@ -0,0 +1,5 @@ +describe("traverseSchema", () => { + it("trivial", () => { + expect(true).toBe(true); + }); +}); diff --git a/packages/traverser-shexj/tsconfig.build.json b/packages/traverser-shexj/tsconfig.build.json new file mode 100644 index 0000000..ce7be9c --- /dev/null +++ b/packages/traverser-shexj/tsconfig.build.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["./src"] +} \ No newline at end of file diff --git a/packages/type-traverser/.eslintrc b/packages/type-traverser/.eslintrc new file mode 100644 index 0000000..83c51a9 --- /dev/null +++ b/packages/type-traverser/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": ["../../.eslintrc"] +} \ No newline at end of file diff --git a/packages/type-traverser/README.md b/packages/type-traverser/README.md new file mode 100644 index 0000000..9280b23 --- /dev/null +++ b/packages/type-traverser/README.md @@ -0,0 +1,674 @@ +# Type Traverser + +An organized way to traverse objects using typescript. + +## Installation +``` +npm i type-traverser +``` + +## Why use this library? +Have you ever needed to traverse large, complex objects? Chances are you built traversers to recognize when something is an array or a certain kind of record. + +Building traversers is an arduous process that involves a lot of repeated concepts and repeated code. Type-Traverser minimizes the repetition. + +## Tutorial + +This tutorial walks you through how to set up a traverser. You can see the full runnable example at [`example/example.ts`](./example/example.ts), or you can run the example by running `npm run start`. + +### Defining the type + +The first step is defining what your type looks like. Let's say, for example, the following typescript typings represent what you need to traverse. These types represent characters from Avatar: The Last Airbender where there are special people called "Benders" who can manipulate the elements. + +```typescript +type Element = "Water" | "Earth" | "Fire" | "Air"; +interface Bender { + name: string; + element: Element; + friends: Person[]; +} +interface NonBender { + name: string; + friends: Person[]; +} +type Person = Bender | NonBender; +``` + +Some sample data that follows this type looks like this: + +```typescript +const aang: Bender = { + name: "Aang", + element: "Air", + friends: [], +}; +const sokka: NonBender = { + name: "Sokka", + friends: [], +}; +const katara: Bender = { + name: "Katara", + element: "Water", + friends: [], +}; +aang.friends.push(sokka, katara); +sokka.friends.push(aang, katara); +katara.friends.push(aang, sokka); +``` + +### Defining Traverser Types + +Next, we need to define a traverser. A traverser has data that defines what your object looks like. + +To define a traverser, you first need to set up a `TraverserTypes` type. You can validate the `TraverserTypes` type by using the `ValidateTraverserTypes` type and passing in your `TraverserTypes` as a generic. + +```typescript +type AvatarTraverserTypes = ValidateTraverserTypes<{ + Element: { + kind: "primitive"; + type: Element; + }; + Bender: { + kind: "interface"; + type: Bender; + properties: { + element: "Element"; + friends: "Person"; + }; + }; + NonBender: { + kind: "interface"; + type: Bender; + properties: { + friends: "Person"; + }; + }; + Person: { + kind: "union"; + type: Person; + typeNames: "Bender" | "NonBender"; + }; +}>; +``` + +Let's break down what's happening here. We're telling typescript the kinds of "Sub-Traversers" each type uses. + +Each sub-traverser has a name called a "TypeName". In this example we have four TypeNames: `Element`, `Bender`, `NonBender`, and `Person`. TypeNames can be any name you want, but it's best practice to match your TypeNames to the name of it's corresponding type. For example, the type `Element` is associated with the TypeName `Element`. Some sub-traversers will also require you to provide TypeNames as strings. + +`ValidateTraverserTypes` is convenient way to check if you have made a valid `TraverserTypes`. If you make a mistake - for example, you provide an invalid TypeName as seen below - the resulting type will be `never`; + +![ValidateTraverserTypesExample](/tutorialImages/ValidateTraverserTypesExample.png) + +At the moment, there are three sub-traverser types: + +#### Union +You should use a union sub-traverser for typescript union types - types that usually follow the form `a | b | c` where any element from the list is valid. + +In the example, `Person` is a "Union" sub-traverser because a `Person` is a union of `Bender` and `NonBender` (`Bender | NonBender`). + +```typescript +Person: { + kind: "union"; + type: Person; + typeNames: "Bender" | "NonBender"; +}; +``` + +There are three fields for the union sub-traverser: + - `kind`: Must be `"union"` to denote that this defines a union sub-traverser. + - `type`: The typescript type corresponding to this union. + - `typeNames`: Defines a list of TypeNames that correspond to the actual type. + +#### Interface +You should use a interface sub-traverser for interface or object types - any type that maps discrete keys to values. + +In the example, `Bender` is an "Interface" sub-traverser because a `Bender` type is a map of discrete keys (like `element` and `friends`) to type values (like `Element` and `Person[]`). + +```typescript +Bender: { + kind: "interface"; + type: Bender; + properties: { + element: "Element"; + friends: "Person"; + }; +}; +``` + +There are three fields for the interface sub-traverser: + - `kind`: Must be `"interface"` to denote that this defines a interface sub-traverser. + - `type`: The typescript type corresponding to this inteface or object type. + - `properties`: Defines the properties that should be traversed by mapping the property name to its corresponding TypeName. Not all interface properties need to be listed here, only the ones that should be traversed. If no properties from this interface need to be traversed, you either provide `properties: Record` or use a "Primitive" sub-traverser. + +#### Primitive +You should use a primitive sub-traverser for "leaf-types" - types that do not have any children. + +In the example, `Element` is a "Primitive" sub-traverser because an `Element` type is just a collection of strings (`"Water" | "Earth" | "Fire" | "Air"`). + +```typescript +Element: { + kind: "primitive"; + type: Element; +}; +``` + +Note: while it is common to use a primitive sub traverser for primitive types like `string`, `boolean`, `number`, etc. you may also use it for more complex types like interfaces and arrays if you do not care about traversing the children of those types. + +There are two fields for the primitive sub-traverser: + - `kind`: Must be `"primitive"` to denote that this defines a primitive sub-traverser. + - `type`: The typescript type corresponding to this primitive. + +### Creating a traverser definition +Typescript typings aren't available at runtime, so the next step is to translate the `TraverserTypes` that we made into a standard JSON object called a "TraverserDefinition". But, don't worry! This will be easy. If you define a variable as a `TraverserDefinition`, your IDE's IntelliSense will be able to direct you through exactly what to fill out, as seen below. + +![Traverse Definition IntelliSense](/tutorialImages/TraveserDefinitionIntellisense.png) + +In our example, the TraverserDefinition looks like: + +```typescript +const avatarTraverserDefinition: TraverserDefinition = { + Element: { + kind: "primitive", + }, + Bender: { + kind: "interface", + properties: { + element: "Element", + friends: "Person", + }, + }, + NonBender: { + kind: "interface", + properties: { + friends: "Person", + }, + }, + Person: { + kind: "union", + selector: (item) => { + return (item as Bender).element ? "Bender" : "NonBender"; + }, + }, +}; +``` + +#### Defining a Union Selector +The only part of the TraverserDefinition that isn't just blindly following IntelliSense is the `selector` on a Union sub-traverser. A `selector` is given the item and should return the TypeName corresponding to the item. + +In the above example, `"Bender"` is returned if the given item has a `"element"` property because a `"NonBender"` does not include an `"element"` property. + +### Instantiating a Traverser +Now that we've defined the traverser types, we're ready to instantiate the traverser itself. A `Traverser` is a class that lets you traverse the object you defined. + +In our example, this is how we instantiate the traverser + +```typescript +const avatarTraverser = new Traverser( + avatarTraverserDefinition +); +``` + +### Using a Traverser +At this point I'd like to welcome everyone who was linked to this section from another library. If this is you, someone else has already defined a traverser for you. You don't need to know how to create a traverser, but if you want to know, you can read the proceeding sections in this document. + +From now on, we will detail how to use an already defined traverser using sample data about the fictional universe of "Avatar: The Last Airbender." If you came here from another library, your traverser will be different, but the concepts are the same. So far we have the following: + +```typescript +type Element = "Water" | "Earth" | "Fire" | "Air"; +interface Bender { + name: string; + element: Element; + friends: Person[]; +} +interface NonBender { + name: string; + friends: Person[]; +} +type Person = Bender | NonBender; +``` + +Some sample data that follows this type looks like this: + +```typescript +/** + * The Type Definitions + */ +type Element = "Water" | "Earth" | "Fire" | "Air"; +interface Bender { + name: string; + element: Element; + friends: Person[]; +} +interface NonBender { + name: string; + friends: Person[]; +} +type Person = Bender | NonBender; + +/** + * Some Raw Sample Data that follows our Types + */ +const aang: Bender = { + name: "Aang", + element: "Air", + friends: [], +}; +const sokka: NonBender = { + name: "Sokka", + friends: [], +}; +const katara: Bender = { + name: "Katara", + element: "Water", + friends: [], +}; +aang.friends.push(sokka, katara); +sokka.friends.push(aang, katara); +katara.friends.push(aang, sokka); + +/** + * A Traverser to Traverse these type definitions + */ +avatarTraverser +``` + +### Using a Visitor +The simplest way to traverse your object is using a `Visitor`. A visitor will trigger a given function when it finds an object that matches the corresponding TypeName. + +In our Avatar example, our visitor could look like: + +```typescript +const avatarVisitor = avatarTraverser.createVisitor({ + Element: async (item) => { + console.log(`Element: ${item}`); + }, + Bender: { + visitor: async (item) => { + console.log(`Bender: ${item.name}`); + }, + properties: { + element: async (item) => { + console.log(`Bender.element: ${item}`); + }, + }, + }, + NonBender: { + visitor: async (item) => { + console.log(`NonBender: ${item.name}`); + }, + }, + Person: async (item) => { + console.log(`Person: ${item.name}`); + }, +}); + +await avatarVisitor.visit(aang, "Bender", undefined); +``` + +Running this code will result in this log: +```bash +Bender: Aang +Bender.element: Air +Element: Air +Person: Sokka +NonBender: Sokka +Person: Aang +Person: Katara +Bender: Katara +Bender.element: Water +Element: Water +``` + +Let's break down what's happening here. + +"Primitive" and "Union" sub-traverser types (Like `Element` and `Person` respectively) require only a function. That function is crafted for the specific item. For example: + + - Element's visitor function: `(item: Element, context: undefined) => Promise`; + - Person's visitor function: `(item: Person, context: undefined) => Promise`; + +"Interface" sub-traversers allow you to define a visitor function for the whole object AND each of its properties. Each of these, including the visitor function for the whole object is optional. For example, an interface visitor for "Bender" follows the following typing: + +```typescript +{ + visitor?: (item: Bender, context: undefined) => Promise; + properties?: { + element?: (item: Element, context: undefined) => Promise; + friends?: (item: Person[], context: undefined) => Promise; + } +} +``` + +When we want to run the visitor we use the `visit` method. + +```typescript +await avatarVisitor.visit(aang, "Bender", undefined); +``` + +The `visit` method takes in three arguments: + - The data that should be traversed. In this example the "aang" object. + - The TypeName of the data. In this example `"Bender"` because the "aang" object is a `Bender`. `"Person"` would have also been acceptable. + - The context (described in the next section) + +Note: You DO NOT need to define a visitor function for every TypeName, only the ones you care about. + +Note: Notice that we see the same person's name appear in two logs. For example we see both "Person: Sokka" and "NonBender: Sokka". That's because we visit the same object as a `Person` type and as a `NonBender` type. + +### Using Context +Sometimes you want to pass a shared object that's accessible from all traversers. That's where "context" comes in. Here's an example that uses context with our AvatarTraverser: + +```typescript +interface AvatarCountingVisitorContext { + numberOfBenders: number; +} +const avatarCountingVisitor = + avatarTraverser.createVisitor({ + Bender: { + visitor: async (item, context) => { + context.numberOfBenders++; + }, + }, + }); +const countContext: AvatarCountingVisitorContext = { numberOfBenders: 0 }; +await avatarCountingVisitor.visit(aang, "Bender", countContext); +console.log(countContext.numberOfBenders); // Logs 2 +``` + +In this example, we want to count the number of "Benders" we encounter while traversing our object. + +`traverser.createVisitor` accepts one generic defining the type of the context. + +### Using a Transformer +Sometimes you don't want to just visit an object, you want to transform it into something else. A Transformer is the best way to do that. + +In the following example, we want to transform our data into a graph of `ActionablePerson` as defined by this interface: + +```typescript +interface ActionablePerson { + doAction(): void; + friends: ActionablePerson[]; +} +``` + +We still want to maintain the friendship connections, but the transformed object is completely different. + +Let's first look at the full code, then we'll break it down into sections: + +```typescript +const avatarTransformer = avatarTraverser.createTransformer< + { + Element: { + return: string; + }; + Bender: { + return: ActionablePerson; + properties: { + element: string; + }; + }; + NonBender: { + return: ActionablePerson; + }; + }, + undefined +>({ + Element: async (item) => { + return item.toUpperCase(); + }, + Bender: { + transformer: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can bend ${transformedChildren.element}`); + }, + friends: transformedChildren.friends, + }; + }, + properties: { + element: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return `the element of ${transformedChildren}`; + }, + }, + }, + NonBender: { + transformer: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can't bend.`); + }, + friends: transformedChildren.friends, + }; + }, + }, + Person: async ( + item, + getTransformedChildren, + setReturnPointer, + _context + ) => { + const personToReturn: ActionablePerson = {} as ActionablePerson; + setReturnPointer(personToReturn); + const transformedChildren = await getTransformedChildren(); + personToReturn.doAction = transformedChildren.doAction; + personToReturn.friends = transformedChildren.friends; + return personToReturn; + }, +}); + +const result = await avatarTransformer.transform(aang, "Bender", undefined); +result.doAction(); +result.friends[0].doAction(); +result.friends[1].doAction(); +// Logs: +// I can bend the element of AIR +// I can't bend. +// I can bend the element of WATER +``` + +#### Defining Transformer Return Types +The first step to working with transformers is defining the return types for each transformer. This is done by providing a generic to the `createTransformer` function: + +```typescript +const avatarTransformer = avatarTraverser.createTransformer< + { + Element: { + return: string; + }; + Bender: { + return: ActionablePerson; + properties: { + element: string; + }; + }; + NonBender: { + return: ActionablePerson; + }; + }, + undefined +>({ + // ... +}); +``` + +For each TypeName you wish to transform, you can provide return type. In this example, the `Element` transformer must return a `string`, and the `NonBender` transformer must return an `Actionable Person`. + +Interface types may also provide the return types for their individual properties, as seen in the `Bender` type. Though, this is not required. + +Note: You don't need to define the return type for every TypeName and property. This library's typings will recursively search for the correct return type based on the input you have given and display that in the tooltip. In the example below, the "Bender" translator knows that the `friends` property is an `ActionablePerson[]` not because the `friends` property was defined in the return types, but because it has deduced that the `friends` field is linked the the `Person` type which itself is made up of the `Bender` and `NonBender` types, and both those types have a return type of `ActionablePerson`. + +![Return Type Tooltip](/tutorialImages/ReturnTypeTooltip.png) + +Note: the `undefined` at the end defines the context and is not associated with the return types. To learn how to use context see the "Using Context" section. + +#### Primitive Transformer +A primitive transformer is the simplest of the transformers. In this example `Element` is a primitive: + +```typescript +const avatarTransformer = avatarTraverser.createTransformer< + // ... +>({ + Element: async (item: Element, context: undefined): Promise => { + return item.toUpperCase(); + }, + // ... +}); +``` + +A primitive transformer receives an "item" corresponding to its type and a context and must return its defined return type. + +#### Interface Transformer +An interface transformer allows you to transform not only the base interface object, but the properties of that object as well. In this example, `Bender` is an interface: + +```typescript +const avatarTransformer = avatarTraverser.createTransformer< + // ... +>({ + // ... + Bender: { + transformer: async ( + item: Bender, + getTransformedChildren: GetTransformedChildrenFunction, + setReturnPointer: SetReturnPointerFunction, + context: undefined + ): Promise => { + const transformedChildren: { + element: string; + friends: ActionablePerson[]; + } = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can bend ${transformedChildren.element}`); + }, + friends: transformedChildren.friends, + }; + }, + properties: { + element: async (item, getTransformedChildren, setReturnProperty, context) => { + const transformedChildren: string = await getTransformedChildren(); + return `the element of ${transformedChildren}`; + }, + }, + }, + // ... +}); +``` + +The base transformer (located at the `transformer` field) and the property transformers are functions with four arguments: + + - item: The original item. In this example, the base transformer would receive a `Bender` and the "element" transformer would receive an `Element`. + - getTransformedChildren: runs the transformers corresponding to the children of this object and returns their result. In this example, the base transformer's `getTransformedChildren` function returns `{ element: string; friends: ActionablePerson[] }` because the element property transformer returns a `string` and the transformers that eventually feed into the friend field (`Person`, `Bender`, and `NonBender`) return ActionablePerson. In the elements transformer, the `getTransformedChildren` function returns string because the `Elements` transformer returns string. + - setReturnProperty: A function used to prevent infinite recursion for circular data. See the "Preventing Circular Recursion" section for more. + - context: The context variable. See the "Using Context" section for more. + + A transformer must return its defined return type. For example, the base transformer must return `ActionablePerson` because it was defined that way when creating the return types. + +#### Union Transformer +A union transformer lets you transform a Union type. In this example "Person" is a union type. + +```typescript +const avatarTransformer = avatarTraverser.createTransformer< + // ... +>({ + // ... + Person: async ( + item: Person, + getTransformedChildren: GetTransformedChildrenFunction, + setReturnPointer: SetReturnPointerFunction, + context: undefined + ) => { + const personToReturn: ActionablePerson = {} as ActionablePerson; + const transformedChildren: ActionablePerson = await getTransformedChildren(); + personToReturn.doAction = transformedChildren.doAction; + personToReturn.friends = transformedChildren.friends; + return personToReturn; + }, +}); +``` + +The transformer function has four arguments: + + - item: The original item. In this example, the transformer would receive a `Person`. + - getTransformedChildren: runs the transformers corresponding to the indivual elements that make up the union and returns their result. In this example, the transformer's `getTransformedChildren` function returns `ActionablePerson` because this union is made up of `Bender` and `NonBender` and both are set to return an `ActionablePerson`. + - setReturnProperty: A function used to prevent infinite recursion for circular data. See the "Preventing Circular Recursion" section for more. + - context: The context variable. See the "Using Context" section for more. + +A transformer must return its defined return type. For example, the transformer must return `ActionablePerson` because it was defined that way when creating the return types. + +Note: The above example transformer is actually not needed as it simply returns a duplicate of the value provided by `getTransformedChildren`. If a transformer is not provided, by default, this library will pass on the values from `getTransformedChildren`. + +#### Preventing Circular Recursion +Our example data is circular - it loops back on itself. If I were to call `aang.friends[0].friends[0]`, I would once again be at the aang object. This is very useful when visiting the objects, but it poses a problem when we want to transform them. The aang transformer needs to wait for the sokka and katara objects to be transformed in order for it to transform itself. But the sokka object needs to wait for the aang and katara object to be transformed. The same is true for the katara object. So, if this is the case where do you begin? + +Recall the way we defined this data in the first place: + +```typescript +const aang: Bender = { + name: "Aang", + element: "Air", + friends: [], +}; +const sokka: NonBender = { + name: "Sokka", + friends: [], +}; +const katara: Bender = { + name: "Katara", + element: "Water", + friends: [], +}; +aang.friends.push(sokka, katara); +sokka.friends.push(aang, katara); +katara.friends.push(aang, sokka); +``` + +Note that we first defined an incomplete object, then once all of our objects were defined, we modified it to link them all together. + +You can do the same thing using the `setRetunPointer` function: + +```typescript +const avatarTransformer = avatarTraverser.createTransformer< + // ... +>({ + // ... + Person: async ( + item: Person, + getTransformedChildren: GetTransformedChildrenFunction, + setReturnProinter: SetReturnPointerFunction, + context: undefined + ) => { + const personToReturn: ActionablePerson = {} as ActionablePerson; + setReturnPointer(personToReturn); // <------ HERE + const transformedChildren: ActionablePerson = await getTransformedChildren(); + personToReturn.doAction = transformedChildren.doAction; + personToReturn.friends = transformedChildren.friends; + return personToReturn; + }, +}); +``` + +In this example we call `setReturnPointer` and pass in an incomplete object. After that, we can safely call `getTransformedChildren` without worrying about hitting an infinite loop. Once we have the transformedChildren, we can attach them to the original object we passed to `setReturnPointer`; + +`setReturnPointer` should be called by at least one of the transformers involved in a potential loop. + +#### Running the Transform Function +Once you have defined all of your transformers, you can run the transform function: + +```typescript +const result = await avatarTransformer.transform(aang, "Bender", undefined); +result.doAction(); +result.friends[0].doAction(); +result.friends[1].doAction(); +// Logs: +// I can bend the element of AIR +// I can't bend. +// I can bend the element of WATER +``` + +The `transform` function takes in three arguments: + - The data that should be traversed. In this example the aang object. + - The TypeName of the data. In this example `"Bender"` because the aang object is a `Bender`. `"Person"` would have also been acceptable. + - The context (see the "Using Context" section for more) + +The transform method returns the return type corresponding to the TypeName. In this case, it returns `ActionablePerson` because that is the return type for `Bender`. diff --git a/packages/type-traverser/example/example.ts b/packages/type-traverser/example/example.ts new file mode 100644 index 0000000..6463294 --- /dev/null +++ b/packages/type-traverser/example/example.ts @@ -0,0 +1,246 @@ +import { Traverser, TraverserDefinition, ValidateTraverserTypes } from "../src"; + +async function run() { + /** + * Original Type Definition + */ + type Element = "Water" | "Earth" | "Fire" | "Air"; + interface Bender { + name: string; + element: Element; + friends: Person[]; + } + interface NonBender { + name: string; + friends: Person[]; + } + type Person = Bender | NonBender; + + /** + * Raw Data to Traverse + */ + const aang: Bender = { + name: "Aang", + element: "Air", + friends: [], + }; + const sokka: NonBender = { + name: "Sokka", + friends: [], + }; + const katara: Bender = { + name: "Katara", + element: "Water", + friends: [], + }; + aang.friends.push(sokka, katara); + sokka.friends.push(aang, katara); + katara.friends.push(aang, sokka); + + /** + * Traverser Types + */ + type AvatarTraverserTypes = ValidateTraverserTypes<{ + Element: { + kind: "primitive"; + type: Element; + }; + Bender: { + kind: "interface"; + type: Bender; + properties: { + element: "Element"; + friends: "Person"; + }; + }; + NonBender: { + kind: "interface"; + type: Bender; + properties: { + friends: "Person"; + }; + }; + Person: { + kind: "union"; + type: Person; + typeNames: "Bender" | "NonBender"; + }; + }>; + + /** + * Create the traverser definition + */ + const avatarTraverserDefinition: TraverserDefinition = { + Element: { + kind: "primitive", + }, + Bender: { + kind: "interface", + properties: { + element: "Element", + friends: "Person", + }, + }, + NonBender: { + kind: "interface", + properties: { + friends: "Person", + }, + }, + Person: { + kind: "union", + selector: (item) => { + return (item as Bender).element ? "Bender" : "NonBender"; + }, + }, + }; + + /** + * Instantiate the Traverser + */ + const avatarTraverser = new Traverser( + avatarTraverserDefinition + ); + + /** + * Create a visitor + */ + const avatarVisitor = avatarTraverser.createVisitor({ + Element: async (item) => { + console.log(`Element: ${item}`); + }, + Bender: { + visitor: async (item) => { + console.log(`Bender: ${item.name}`); + }, + properties: { + element: async (item) => { + console.log(`Bender.element: ${item}`); + }, + }, + }, + NonBender: { + visitor: async (item) => { + console.log(`NonBender: ${item.name}`); + }, + }, + Person: async (item) => { + console.log(`Person: ${item.name}`); + }, + }); + + /** + * Run the visitor on data + */ + console.log( + "############################## Visitor Logs ##############################" + ); + await avatarVisitor.visit(aang, "Bender", undefined); + + /** + * Create a visitor that uses context + */ + interface AvatarCountingVisitorContext { + numberOfBenders: number; + } + const avatarCountingVisitor = + avatarTraverser.createVisitor({ + Bender: { + visitor: async (item, context) => { + context.numberOfBenders++; + }, + }, + }); + + /** + * Run the counting visitor + */ + console.log( + "############################## Found Number of Benders Using Visitor ##############################" + ); + const countContext: AvatarCountingVisitorContext = { numberOfBenders: 0 }; + await avatarCountingVisitor.visit(aang, "Bender", countContext); + console.log(countContext.numberOfBenders); + + /** + * Set up a transformer + */ + interface ActionablePerson { + doAction(): void; + friends: ActionablePerson[]; + } + const avatarTransformer = avatarTraverser.createTransformer< + { + Element: { + return: string; + }; + Bender: { + return: ActionablePerson; + properties: { + element: string; + }; + }; + NonBender: { + return: ActionablePerson; + }; + }, + undefined + >({ + Element: async (item) => { + return item.toUpperCase(); + }, + Bender: { + transformer: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can bend ${transformedChildren.element}`); + }, + friends: transformedChildren.friends, + }; + }, + properties: { + element: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return `the element of ${transformedChildren}`; + }, + }, + }, + NonBender: { + transformer: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can't bend.`); + }, + friends: transformedChildren.friends, + }; + }, + }, + Person: async ( + item, + getTransformedChildren, + setReturnPointer, + _context + ) => { + const personToReturn: ActionablePerson = {} as ActionablePerson; + setReturnPointer(personToReturn); + const transformedChildren = await getTransformedChildren(); + personToReturn.doAction = transformedChildren.doAction; + personToReturn.friends = transformedChildren.friends; + return personToReturn; + }, + }); + + /** + * Run the Transformer + */ + console.log( + "############################## AvatarTraverser DoAction ##############################" + ); + const result = await avatarTransformer.transform(aang, "Bender", undefined); + result.doAction(); + result.friends[0].doAction(); + result.friends[1].doAction(); +} +run(); diff --git a/packages/type-traverser/jest.config.js b/packages/type-traverser/jest.config.js new file mode 100644 index 0000000..bad5f64 --- /dev/null +++ b/packages/type-traverser/jest.config.js @@ -0,0 +1,6 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const sharedConfig = require("../../jest.config.js"); +module.exports = { + ...sharedConfig, + rootDir: "./", +}; diff --git a/packages/type-traverser/package.json b/packages/type-traverser/package.json new file mode 100644 index 0000000..2cf732c --- /dev/null +++ b/packages/type-traverser/package.json @@ -0,0 +1,35 @@ +{ + "name": "@ldo/type-traverser", + "version": "0.0.0", + "description": "An organized way to traverse over objects using typescript", + "main": "dist/index.js", + "scripts": { + "build": "tsc --project tsconfig.build.json", + "test": "jest --coverage", + "start": "ts-node ./example/example", + "prepublishOnly": "npm run test && npm run build", + "lint": "eslint src/** --fix --no-error-on-unmatched-pattern" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/o-development/type-traverser.git" + }, + "author": "Jackson Morgan", + "license": "MIT", + "bugs": { + "url": "https://github.com/o-development/type-traverser/issues" + }, + "homepage": "https://github.com/o-development/type-traverser#readme", + "devDependencies": { + "@types/jest": "^27.4.0", + "@types/shexj": "^2.1.1", + "@types/uuid": "^8.3.4", + "jest": "^27.4.7", + "jsonld2graphobject": "^0.0.3", + "ts-jest": "^27.1.2", + "ts-node": "^10.4.0" + }, + "dependencies": { + "uuid": "^8.3.2" + } +} diff --git a/packages/type-traverser/src/Transformer.ts b/packages/type-traverser/src/Transformer.ts new file mode 100644 index 0000000..0d62555 --- /dev/null +++ b/packages/type-traverser/src/Transformer.ts @@ -0,0 +1,243 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + ApplyTransformerReturnTypesDefaults, + InterfaceReturnType, + InterfaceTraverserDefinition, + InterfaceType, + KeyTypes, + PrimitiveReturnType, + PrimitiveType, + TransformerInputReturnTypes, + TraverserDefinition, + TraverserTypes, + UnionReturnType, + UnionType, +} from "."; +import { transformerParentSubTraverser } from "./transformerSubTraversers/TransformerParentSubTraverser"; +import { CircularDepenedencyAwaiter } from "./transformerSubTraversers/util/CircularDependencyAwaiter"; +import { MultiMap } from "./transformerSubTraversers/util/MultiMap"; +import { SuperPromise } from "./transformerSubTraversers/util/SuperPromise"; +import type { + GetTransformedChildrenFunction, + InterfaceTransformerDefinition, + InterfaceTransformerInputDefinition, + PrimitiveTransformerDefinition, + PrimitiveTransformerInputDefinition, + Transformers, + TransformersInput, + UnionTransformerDefinition, + UnionTransformerInputDefinition, +} from "./Transformers"; + +// TODO: Lots of "any" in this file. I'm just done with fancy typescript, +// but if I ever feel so inclined, I should fix this in the future. + +export class Transformer< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + Context = undefined, +> { + private traverserDefinition: TraverserDefinition; + private transformers: Transformers< + Types, + ApplyTransformerReturnTypesDefaults, + Context + >; + + constructor( + traverserDefinition: TraverserDefinition, + transformers: TransformersInput, + ) { + this.traverserDefinition = traverserDefinition; + this.transformers = this.applyDefaultTransformers(transformers); + } + + private applyDefaultInterfaceTransformerProperties< + Type extends InterfaceType, + ReturnType extends InterfaceReturnType, + >( + typeName: keyof Types, + typePropertiesInput: InterfaceTransformerInputDefinition< + Types, + Type, + ApplyTransformerReturnTypesDefaults, + ReturnType, + Context + >["properties"], + ): InterfaceTransformerDefinition< + Types, + Type, + ApplyTransformerReturnTypesDefaults, + ReturnType, + Context + >["properties"] { + return Object.keys( + (this.traverserDefinition[typeName] as InterfaceTraverserDefinition) + .properties, + ).reduce>((agg, key: keyof Type["properties"]) => { + if (typePropertiesInput && typePropertiesInput[key]) { + agg[key] = typePropertiesInput[key]; + } else { + agg[key] = ( + originalData: any, + getTransformedChildren: GetTransformedChildrenFunction, + ) => { + return getTransformedChildren(); + }; + } + return agg; + }, {}) as InterfaceTransformerDefinition< + Types, + Type, + ApplyTransformerReturnTypesDefaults, + ReturnType, + Context + >["properties"]; + } + + private applyDefaultInterfaceTransformer< + Type extends InterfaceType, + ReturnType extends InterfaceReturnType, + >( + typeName: keyof Types, + typeInput?: InterfaceTransformerInputDefinition< + Types, + Type, + ApplyTransformerReturnTypesDefaults, + ReturnType, + Context + >, + ): InterfaceTransformerDefinition< + Types, + Type, + ApplyTransformerReturnTypesDefaults, + ReturnType, + Context + > { + if (!typeInput) { + return { + transformer: async ( + originalData, + getTransformedChildren: GetTransformedChildrenFunction, + ) => { + return getTransformedChildren(); + }, + properties: this.applyDefaultInterfaceTransformerProperties( + typeName, + {}, + ), + }; + } + return { + transformer: typeInput.transformer, + properties: this.applyDefaultInterfaceTransformerProperties( + typeName, + typeInput.properties, + ), + }; + } + + private applyDefaultUnionTransformer< + Type extends UnionType, + ReturnType extends UnionReturnType, + >( + typeInput?: UnionTransformerInputDefinition< + Types, + Type, + ApplyTransformerReturnTypesDefaults, + ReturnType, + Context + >, + ): UnionTransformerDefinition< + Types, + Type, + ApplyTransformerReturnTypesDefaults, + ReturnType, + Context + > { + if (!typeInput) { + return async ( + originalData, + getTransformedChildren: GetTransformedChildrenFunction, + ) => { + return getTransformedChildren(); + }; + } + return typeInput; + } + + private applyDefaultPrimitiveTransformer< + Type extends PrimitiveType, + ReturnType extends PrimitiveReturnType, + >( + typeInput?: PrimitiveTransformerInputDefinition, + ): PrimitiveTransformerDefinition { + if (!typeInput) { + return async (originalData) => { + return originalData; + }; + } + return typeInput; + } + + private applyDefaultTransformers( + inputTransformers: TransformersInput, + ): Transformers< + Types, + ApplyTransformerReturnTypesDefaults, + Context + > { + const finalTansformers: Partial< + Transformers< + Types, + ApplyTransformerReturnTypesDefaults, + Context + > + > = {}; + Object.keys(this.traverserDefinition).forEach((typeName: keyof Types) => { + if (this.traverserDefinition[typeName].kind === "interface") { + finalTansformers[typeName] = this.applyDefaultInterfaceTransformer( + typeName, + inputTransformers[typeName] as any, + ) as any; + } else if (this.traverserDefinition[typeName].kind === "union") { + finalTansformers[typeName] = this.applyDefaultUnionTransformer( + inputTransformers[typeName] as any, + ) as any; + } else if (this.traverserDefinition[typeName].kind === "primitive") { + finalTansformers[typeName] = this.applyDefaultPrimitiveTransformer( + inputTransformers[typeName] as any, + ) as any; + } + }); + return finalTansformers as Transformers< + Types, + ApplyTransformerReturnTypesDefaults, + Context + >; + } + + public async transform( + item: Types[TypeName]["type"], + itemTypeName: TypeName, + context: Context, + ): Promise< + ApplyTransformerReturnTypesDefaults< + Types, + InputReturnTypes + >[TypeName]["return"] + > { + const superPromise = new SuperPromise(); + const toReturn = await transformerParentSubTraverser(item, itemTypeName, { + traverserDefinition: this.traverserDefinition, + transformers: this.transformers, + executingPromises: new MultiMap(), + circularDependencyAwaiter: new CircularDepenedencyAwaiter(), + superPromise, + context, + }); + await superPromise.wait(); + return toReturn; + } +} diff --git a/packages/type-traverser/src/TransformerReturnTypes.ts b/packages/type-traverser/src/TransformerReturnTypes.ts new file mode 100644 index 0000000..86785fc --- /dev/null +++ b/packages/type-traverser/src/TransformerReturnTypes.ts @@ -0,0 +1,75 @@ +import type { + InterfaceType, + PrimitiveType, + TraverserTypes, + UnionType, +} from "."; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +export type InterfaceReturnType> = { + return: any; + properties: { + [PropertyName in keyof Type["properties"]]: any; + }; +}; + +export type UnionReturnType = { + return: any; +}; + +export type PrimitiveReturnType = { + return: any; +}; + +export type BaseReturnType< + Types extends TraverserTypes, + TypeName extends keyof Types, +> = Types[TypeName] extends InterfaceType + ? InterfaceReturnType + : Types[TypeName] extends UnionType + ? UnionReturnType + : Types[TypeName] extends PrimitiveType + ? PrimitiveReturnType + : never; + +export type TransformerReturnTypes> = { + [TypeName in keyof Types]: BaseReturnType; +}; + +/** + * Input + */ +export type InterfacePropertiesInputReturnType< + Type extends InterfaceType, +> = Partial<{ + [PropertyName in keyof Type["properties"]]: any; +}>; + +export type InterfaceInputReturnType> = { + return: any; + properties?: InterfacePropertiesInputReturnType; +}; + +export type UnionInputReturnType = { + return: any; +}; + +export type PrimitiveInputReturnType = { + return: any; +}; + +export type BaseInputReturnType< + Types extends TraverserTypes, + TypeName extends keyof Types, +> = Types[TypeName] extends InterfaceType + ? InterfaceInputReturnType + : Types[TypeName] extends UnionType + ? UnionInputReturnType + : Types[TypeName] extends PrimitiveType + ? PrimitiveInputReturnType + : never; + +export type TransformerInputReturnTypes> = + Partial<{ + [TypeName in keyof Types]: BaseInputReturnType; + }>; diff --git a/packages/type-traverser/src/TransformerReturnTypesDefaults.ts b/packages/type-traverser/src/TransformerReturnTypesDefaults.ts new file mode 100644 index 0000000..75f9322 --- /dev/null +++ b/packages/type-traverser/src/TransformerReturnTypesDefaults.ts @@ -0,0 +1,215 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + BaseInputReturnType, + InterfaceInputReturnType, + InterfacePropertiesInputReturnType, + InterfaceType, + PrimitiveReturnType, + PrimitiveType, + TransformerInputReturnTypes, + TraverserTypes, + UnionInputReturnType, + UnionType, +} from "."; + +export type RecursivelyFindReturnType< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + TypeNameToFind extends keyof Types, + VisitedTypeNames extends keyof Types, +> = TypeNameToFind extends VisitedTypeNames + ? Types[TypeNameToFind]["type"] + : InputReturnTypes[TypeNameToFind] extends BaseInputReturnType< + Types, + Types[TypeNameToFind] + > + ? InputReturnTypes[TypeNameToFind]["return"] + : ApplyTransformerReturnTypeDefault< + Types, + InputReturnTypes, + TypeNameToFind, + VisitedTypeNames | TypeNameToFind + >["return"]; + +export type ApplyUndefined = + undefined extends OriginalType ? ReturnType | undefined : ReturnType; + +export type ApplyArrayAndUndefined = ApplyUndefined< + OriginalType, + NonNullable extends Array ? Array : ReturnType +>; + +export type HackilyApplyConditionalPropertyDefaults< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + VisitedTypeNames extends keyof Types, + Type extends InterfaceType, + PropertiesInputRetunType extends InterfacePropertiesInputReturnType, + PropertyName extends keyof Type["type"], + FallbackKey extends keyof Types, +> = unknown extends PropertiesInputRetunType[PropertyName] + ? ApplyArrayAndUndefined< + Type["type"][PropertyName], + RecursivelyFindReturnType< + Types, + InputReturnTypes, + FallbackKey, + VisitedTypeNames + > + > + : ApplyUndefined< + Type["type"][PropertyName], + PropertiesInputRetunType[PropertyName] + >; + +export type HackilyApplyConditionalPropertiesDefaults< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + VisitedTypeNames extends keyof Types, + Type extends InterfaceType, + InputReturnType extends InterfaceInputReturnType, + PropertyName extends keyof Type["type"], + FallbackKey extends keyof Types, +> = InputReturnType["properties"] extends InterfacePropertiesInputReturnType + ? HackilyApplyConditionalPropertyDefaults< + Types, + InputReturnTypes, + VisitedTypeNames, + Type, + InputReturnType["properties"], + PropertyName, + FallbackKey + > + : ApplyArrayAndUndefined< + Type["type"][PropertyName], + RecursivelyFindReturnType< + Types, + InputReturnTypes, + FallbackKey, + VisitedTypeNames + > + >; + +export type ApplyTransformerInterfacePropertiesReturnTypeDefault< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + TypeName extends keyof Types, + VisitedTypeNames extends keyof Types, +> = Types[TypeName] extends InterfaceType + ? { + [PropertyName in keyof Types[TypeName]["properties"]]: InputReturnTypes[TypeName] extends InterfaceInputReturnType< + Types[TypeName] + > + ? HackilyApplyConditionalPropertiesDefaults< + Types, + InputReturnTypes, + VisitedTypeNames, + Types[TypeName], + InputReturnTypes[TypeName], + PropertyName, + Types[TypeName]["properties"][PropertyName] + > + : ApplyArrayAndUndefined< + Types[TypeName]["type"][PropertyName], + RecursivelyFindReturnType< + Types, + InputReturnTypes, + Types[TypeName]["properties"][PropertyName], + VisitedTypeNames + > + >; + } + : never; + +export type ApplyTransformerInterfaceReturnTypeDefault< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + TypeName extends keyof Types, + Type extends InterfaceType, + VisitedTypeNames extends keyof Types, +> = { + return: InputReturnTypes[TypeName] extends InterfaceInputReturnType + ? InputReturnTypes[TypeName]["return"] + : ApplyTransformerInterfacePropertiesReturnTypeDefault< + Types, + InputReturnTypes, + TypeName, + VisitedTypeNames + >; + properties: ApplyTransformerInterfacePropertiesReturnTypeDefault< + Types, + InputReturnTypes, + TypeName, + VisitedTypeNames + >; +}; + +export type ApplyTransformerUnionReturnTypeDefault< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + TypeName extends keyof Types, + Type extends UnionType, + VisitedTypeNames extends keyof Types, +> = { + return: InputReturnTypes[TypeName] extends UnionInputReturnType + ? InputReturnTypes[TypeName]["return"] + : RecursivelyFindReturnType< + Types, + InputReturnTypes, + Type["typeNames"], + VisitedTypeNames + >; +}; + +export type ApplyTransformerPrimitiveReturnTypeDefault< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + TypeName extends keyof Types, + Type extends PrimitiveType, +> = { + return: InputReturnTypes[TypeName] extends PrimitiveReturnType + ? InputReturnTypes[TypeName]["return"] + : Type["type"]; +}; + +export type ApplyTransformerReturnTypeDefault< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + TypeName extends keyof Types, + VisitedTypeNames extends keyof Types, +> = Types[TypeName] extends InterfaceType + ? ApplyTransformerInterfaceReturnTypeDefault< + Types, + InputReturnTypes, + TypeName, + Types[TypeName], + VisitedTypeNames + > + : Types[TypeName] extends UnionType + ? ApplyTransformerUnionReturnTypeDefault< + Types, + InputReturnTypes, + TypeName, + Types[TypeName], + VisitedTypeNames + > + : Types[TypeName] extends PrimitiveType + ? ApplyTransformerPrimitiveReturnTypeDefault< + Types, + InputReturnTypes, + TypeName, + Types[TypeName] + > + : never; + +export type ApplyTransformerReturnTypesDefaults< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, +> = { + [TypeName in keyof Types]: ApplyTransformerReturnTypeDefault< + Types, + InputReturnTypes, + TypeName, + never + >; +}; diff --git a/packages/type-traverser/src/Transformers.ts b/packages/type-traverser/src/Transformers.ts new file mode 100644 index 0000000..a649fa4 --- /dev/null +++ b/packages/type-traverser/src/Transformers.ts @@ -0,0 +1,244 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + ApplyTransformerReturnTypesDefaults, + InterfaceReturnType, + InterfaceType, + PrimitiveReturnType, + PrimitiveType, + TransformerInputReturnTypes, + TransformerReturnTypes, + TraverserTypes, + UnionReturnType, + UnionType, +} from "."; + +export type GetTransformedChildrenFunction = + () => Promise; + +export type SetReturnPointerFunction = ( + returnPointer: ReturnType, +) => void; + +export type InterfaceTransformerFunction< + Types extends TraverserTypes, + Type extends InterfaceType, + ReturnType extends InterfaceReturnType, + Context, +> = ( + originalData: Type["type"], + getTransformedChildren: GetTransformedChildrenFunction<{ + [PropertyName in keyof ReturnType["properties"]]: ReturnType["properties"][PropertyName]; + }>, + setReturnPointer: SetReturnPointerFunction, + context: Context, +) => Promise; + +export type InterfaceTransformerPropertyFunction< + Types extends TraverserTypes, + Type extends InterfaceType, + ReturnTypes extends TransformerReturnTypes, + ReturnType extends InterfaceReturnType, + PropertyName extends keyof Type["properties"], + Context, +> = ( + originalData: Types[Type["properties"][PropertyName]]["type"], + getTransfromedChildren: GetTransformedChildrenFunction< + ReturnTypes[Type["properties"][PropertyName]]["return"] + >, + context: Context, +) => Promise; + +export type InterfaceTransformerDefinition< + Types extends TraverserTypes, + Type extends InterfaceType, + ReturnTypes extends TransformerReturnTypes, + ReturnType extends InterfaceReturnType, + Context, +> = { + transformer: InterfaceTransformerFunction; + properties: { + [PropertyName in keyof Type["properties"]]: InterfaceTransformerPropertyFunction< + Types, + Type, + ReturnTypes, + ReturnType, + PropertyName, + Context + >; + }; +}; + +export type UnionTransformerFunction< + Types extends TraverserTypes, + Type extends UnionType, + ReturnTypes extends TransformerReturnTypes, + ReturnType extends UnionReturnType, + Context, +> = ( + originalData: Type["type"], + getTransformedChildren: GetTransformedChildrenFunction< + ReturnTypes[Type["typeNames"]]["return"] + >, + setReturnPointer: SetReturnPointerFunction, + context: Context, +) => Promise; + +export type UnionTransformerDefinition< + Types extends TraverserTypes, + Type extends UnionType, + ReturnTypes extends TransformerReturnTypes, + ReturnType extends UnionReturnType, + Context, +> = UnionTransformerFunction; + +export type PrimitiveTransformerFunction< + Type extends PrimitiveType, + ReturnType extends PrimitiveReturnType, + Context, +> = ( + originalData: Type["type"], + context: Context, +) => Promise; + +export type PrimitiveTransformerDefinition< + Type extends PrimitiveType, + ReturnType extends PrimitiveReturnType, + Context, +> = PrimitiveTransformerFunction; + +export type TransformerDefinition< + Types extends TraverserTypes, + ReturnTypes extends TransformerReturnTypes, + TypeName extends keyof Types, + Context, +> = Types[TypeName] extends InterfaceType + ? ReturnTypes[TypeName] extends InterfaceReturnType + ? InterfaceTransformerDefinition< + Types, + Types[TypeName], + ReturnTypes, + ReturnTypes[TypeName], + Context + > + : never + : Types[TypeName] extends UnionType + ? ReturnTypes[TypeName] extends UnionReturnType + ? UnionTransformerDefinition< + Types, + Types[TypeName], + ReturnTypes, + ReturnTypes[TypeName], + Context + > + : never + : Types[TypeName] extends PrimitiveType + ? ReturnTypes[TypeName] extends PrimitiveReturnType + ? PrimitiveTransformerDefinition< + Types[TypeName], + ReturnTypes[TypeName], + Context + > + : never + : never; + +export type Transformers< + Types extends TraverserTypes, + ReturnTypes extends TransformerReturnTypes, + Context, +> = { + [TypeName in keyof ReturnTypes]: TransformerDefinition< + Types, + ReturnTypes, + TypeName, + Context + >; +}; + +/** + * Input + */ +export type InterfaceTransformerInputDefinition< + Types extends TraverserTypes, + Type extends InterfaceType, + ReturnTypes extends TransformerReturnTypes, + ReturnType extends InterfaceReturnType, + Context, +> = { + transformer: InterfaceTransformerFunction; + properties?: Partial<{ + [PropertyName in keyof Type["properties"]]: InterfaceTransformerPropertyFunction< + Types, + Type, + ReturnTypes, + ReturnType, + PropertyName, + Context + >; + }>; +}; + +export type UnionTransformerInputDefinition< + Types extends TraverserTypes, + Type extends UnionType, + ReturnTypes extends TransformerReturnTypes, + ReturnType extends UnionReturnType, + Context, +> = UnionTransformerFunction; + +export type PrimitiveTransformerInputDefinition< + Type extends PrimitiveType, + ReturnType extends PrimitiveReturnType, + Context, +> = PrimitiveTransformerFunction; + +export type TransformerInputDefinition< + Types extends TraverserTypes, + ReturnTypes extends TransformerReturnTypes, + TypeName extends keyof Types, + Context, +> = Types[TypeName] extends InterfaceType + ? ReturnTypes[TypeName] extends InterfaceReturnType + ? InterfaceTransformerInputDefinition< + Types, + Types[TypeName], + ReturnTypes, + ReturnTypes[TypeName], + Context + > + : never + : Types[TypeName] extends UnionType + ? ReturnTypes[TypeName] extends UnionReturnType + ? UnionTransformerInputDefinition< + Types, + Types[TypeName], + ReturnTypes, + ReturnTypes[TypeName], + Context + > + : never + : Types[TypeName] extends PrimitiveType + ? ReturnTypes[TypeName] extends PrimitiveReturnType + ? PrimitiveTransformerInputDefinition< + Types[TypeName], + ReturnTypes[TypeName], + Context + > + : never + : never; + +export type TransformersInput< + Types extends TraverserTypes, + InputReturnTypes extends TransformerInputReturnTypes, + Context, + ReturnTypes extends + TransformerReturnTypes = ApplyTransformerReturnTypesDefaults< + Types, + InputReturnTypes + >, +> = Partial<{ + [TypeName in keyof ReturnTypes]: undefined extends InputReturnTypes[TypeName] + ? + | TransformerInputDefinition + | undefined + : TransformerInputDefinition; +}>; diff --git a/packages/type-traverser/src/Traverser.ts b/packages/type-traverser/src/Traverser.ts new file mode 100644 index 0000000..09a046f --- /dev/null +++ b/packages/type-traverser/src/Traverser.ts @@ -0,0 +1,36 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + TransformerInputReturnTypes, + TraverserDefinition, + TraverserTypes, + VisitorsInput, +} from "."; +import { Transformer, Visitor } from "."; +import type { TransformersInput } from "./Transformers"; + +export class Traverser< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + Types extends TraverserTypes, +> { + private traverserDefinition: TraverserDefinition; + + constructor(traverserDefinition: TraverserDefinition) { + this.traverserDefinition = traverserDefinition; + } + + public createTransformer< + ReturnTypes extends TransformerInputReturnTypes, + Context = undefined, + >(transformers: TransformersInput) { + return new Transformer( + this.traverserDefinition, + transformers, + ); + } + + public createVisitor( + visitors: VisitorsInput, + ) { + return new Visitor(this.traverserDefinition, visitors); + } +} diff --git a/packages/type-traverser/src/TraverserDefinition.ts b/packages/type-traverser/src/TraverserDefinition.ts new file mode 100644 index 0000000..0630e14 --- /dev/null +++ b/packages/type-traverser/src/TraverserDefinition.ts @@ -0,0 +1,35 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + InterfaceType, + TraverserTypes, + UnionType, + PrimitiveType, +} from "."; + +export type InterfaceTraverserDefinition> = { + kind: "interface"; + properties: { + [PropertyField in keyof Type["properties"]]: Type["properties"][PropertyField]; + }; +}; + +export type UnionTraverserDefinition> = { + kind: "union"; + selector: (item: Type["type"]) => Type["typeNames"]; +}; + +export type PrimitiveTraverserDefinition = { + kind: "primitive"; +}; + +export type TraverserDefinition> = { + [TypeField in keyof Types]: Types[TypeField] extends InterfaceType< + keyof Types + > + ? InterfaceTraverserDefinition + : Types[TypeField] extends UnionType + ? UnionTraverserDefinition + : Types[TypeField] extends PrimitiveType + ? PrimitiveTraverserDefinition + : never; +}; diff --git a/packages/type-traverser/src/TraverserTypes.ts b/packages/type-traverser/src/TraverserTypes.ts new file mode 100644 index 0000000..1830aa2 --- /dev/null +++ b/packages/type-traverser/src/TraverserTypes.ts @@ -0,0 +1,33 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { AssertExtends, KeyTypes } from "./UtilTypes"; + +export interface InterfaceType { + kind: "interface"; + type: any; + properties: { + [key: string]: TypeNames; + }; +} + +export interface UnionType { + kind: "union"; + type: any; + typeNames: TypeNames; +} + +export interface PrimitiveType { + kind: "primitive"; + type: any; +} + +export type BaseTraverserTypes = + | InterfaceType + | UnionType + | PrimitiveType; + +export type TraverserTypes = { + [Property in TypeNames]: BaseTraverserTypes; +}; + +export type ValidateTraverserTypes> = + AssertExtends, Types>; diff --git a/packages/type-traverser/src/UtilTypes.ts b/packages/type-traverser/src/UtilTypes.ts new file mode 100644 index 0000000..74e302d --- /dev/null +++ b/packages/type-traverser/src/UtilTypes.ts @@ -0,0 +1,6 @@ +export type KeyTypes = string | number | symbol; + +export type AssertExtends< + Extended, + Extends extends Extended, +> = Extends extends Extended ? Extends : never; diff --git a/packages/type-traverser/src/Visitor.ts b/packages/type-traverser/src/Visitor.ts new file mode 100644 index 0000000..de74556 --- /dev/null +++ b/packages/type-traverser/src/Visitor.ts @@ -0,0 +1,145 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + InterfaceTraverserDefinition, + InterfaceType, + InterfaceVisitorDefinition, + InterfaceVisitorInputDefinition, + KeyTypes, + PrimitiveType, + PrimitiveVisitorDefinition, + PrimitiveVisitorInputDefinition, + TraverserDefinition, + TraverserTypes, + UnionType, + UnionVisitorDefinition, + UnionVisitorInputDefinition, + Visitors, + VisitorsInput, +} from "."; +import { MultiSet } from "./transformerSubTraversers/util/MultiSet"; +import { visitorParentSubTraverser } from "./visitorSubTraversers/VisitorParentSubTraverser"; + +// TODO: Lots of "any" in this file. I'm just done with fancy typescript, +// but if I ever feel so inclined, I should fix this in the future. + +export class Visitor< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + Types extends TraverserTypes, + Context = undefined, +> { + private traverserDefinition: TraverserDefinition; + private visitors: Visitors; + + constructor( + traverserDefinition: TraverserDefinition, + visitors: VisitorsInput, + ) { + this.traverserDefinition = traverserDefinition; + this.visitors = this.applyDefaultVisitors(visitors); + } + + private applyDefaultInterfaceVisitorProperties< + Type extends InterfaceType, + >( + typeName: keyof Types, + typePropertiesInput: InterfaceVisitorInputDefinition< + Types, + Type, + Context + >["properties"], + ): InterfaceVisitorDefinition["properties"] { + return Object.keys( + (this.traverserDefinition[typeName] as InterfaceTraverserDefinition) + .properties, + ).reduce>((agg, key: keyof Type["properties"]) => { + if (typePropertiesInput && typePropertiesInput[key]) { + agg[key] = typePropertiesInput[key]; + } else { + agg[key] = () => { + return; + }; + } + return agg; + }, {}) as InterfaceVisitorDefinition["properties"]; + } + + private applyDefaultInterfaceVisitor>( + typeName: keyof Types, + typeInput?: InterfaceVisitorInputDefinition, + ): InterfaceVisitorDefinition { + if (!typeInput) { + return { + visitor: async () => { + return; + }, + properties: this.applyDefaultInterfaceVisitorProperties(typeName, {}), + }; + } + return { + visitor: typeInput.visitor, + properties: this.applyDefaultInterfaceVisitorProperties( + typeName, + typeInput.properties, + ), + }; + } + + private applyDefaultUnionVisitor>( + typeInput?: UnionVisitorInputDefinition, + ): UnionVisitorDefinition { + if (!typeInput) { + return async () => { + return; + }; + } + return typeInput; + } + + private applyDefaultPrimitiveVisitor( + typeInput?: PrimitiveVisitorInputDefinition, + ): PrimitiveVisitorDefinition { + if (!typeInput) { + return async () => { + return; + }; + } + return typeInput; + } + + private applyDefaultVisitors( + inputVisitors: VisitorsInput, + ): Visitors { + const finalVisitors: Partial> = {}; + Object.keys(this.traverserDefinition).forEach((typeName: keyof Types) => { + if (this.traverserDefinition[typeName].kind === "interface") { + finalVisitors[typeName] = this.applyDefaultInterfaceVisitor( + typeName, + inputVisitors[typeName] as any, + ) as any; + } else if (this.traverserDefinition[typeName].kind === "union") { + finalVisitors[typeName] = this.applyDefaultUnionVisitor( + inputVisitors[typeName] as any, + ) as any; + } else if (this.traverserDefinition[typeName].kind === "primitive") { + finalVisitors[typeName] = this.applyDefaultPrimitiveVisitor( + inputVisitors[typeName] as any, + ) as any; + } + }); + return finalVisitors as Visitors; + } + + public async visit( + item: Types[TypeName]["type"], + itemTypeName: TypeName, + context: Context, + ): Promise { + const toReturn = await visitorParentSubTraverser(item, itemTypeName, { + traverserDefinition: this.traverserDefinition, + visitors: this.visitors, + visitedObjects: new MultiSet(), + context, + }); + return toReturn; + } +} diff --git a/packages/type-traverser/src/Visitors.ts b/packages/type-traverser/src/Visitors.ts new file mode 100644 index 0000000..086d903 --- /dev/null +++ b/packages/type-traverser/src/Visitors.ts @@ -0,0 +1,126 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + InterfaceType, + PrimitiveType, + TraverserTypes, + UnionType, +} from "."; + +export type InterfaceVisitorFunction< + Types extends TraverserTypes, + Type extends InterfaceType, + Context, +> = (originalData: Type["type"], context: Context) => Promise; + +export type InterfaceVisitorPropertyFunction< + Types extends TraverserTypes, + Type extends InterfaceType, + PropertyName extends keyof Type["properties"], + Context, +> = ( + originalData: Types[Type["properties"][PropertyName]]["type"], + context: Context, +) => Promise; + +export type InterfaceVisitorDefinition< + Types extends TraverserTypes, + Type extends InterfaceType, + Context, +> = { + visitor: InterfaceVisitorFunction; + properties: { + [PropertyName in keyof Type["properties"]]: InterfaceVisitorPropertyFunction< + Types, + Type, + PropertyName, + Context + >; + }; +}; + +export type UnionVisitorFunction< + Types extends TraverserTypes, + Type extends UnionType, + Context, +> = (originalData: Type["type"], context: Context) => Promise; + +export type UnionVisitorDefinition< + Types extends TraverserTypes, + Type extends UnionType, + Context, +> = UnionVisitorFunction; + +export type PrimitiveVisitorFunction = ( + originalData: Type["type"], + context: Context, +) => Promise; + +export type PrimitiveVisitorDefinition< + Type extends PrimitiveType, + Context, +> = PrimitiveVisitorFunction; + +export type VisitorDefinition< + Types extends TraverserTypes, + TypeName extends keyof Types, + Context, +> = Types[TypeName] extends InterfaceType + ? InterfaceVisitorDefinition + : Types[TypeName] extends UnionType + ? UnionVisitorDefinition + : Types[TypeName] extends PrimitiveType + ? PrimitiveVisitorDefinition + : never; + +export type Visitors, Context> = { + [TypeName in keyof Types]: VisitorDefinition; +}; + +/** + * Input + */ +export type InterfaceVisitorInputDefinition< + Types extends TraverserTypes, + Type extends InterfaceType, + Context, +> = { + visitor: InterfaceVisitorFunction; + properties?: Partial<{ + [PropertyName in keyof Type["properties"]]: InterfaceVisitorPropertyFunction< + Types, + Type, + PropertyName, + Context + >; + }>; +}; + +export type UnionVisitorInputDefinition< + Types extends TraverserTypes, + Type extends UnionType, + Context, +> = UnionVisitorFunction; + +export type PrimitiveVisitorInputDefinition< + Type extends PrimitiveType, + Context, +> = PrimitiveVisitorFunction; + +export type VisitorInputDefinition< + Types extends TraverserTypes, + TypeName extends keyof Types, + Context, +> = Types[TypeName] extends InterfaceType + ? InterfaceVisitorInputDefinition + : Types[TypeName] extends UnionType + ? UnionVisitorInputDefinition + : Types[TypeName] extends PrimitiveType + ? PrimitiveVisitorInputDefinition + : never; + +export type VisitorsInput< + Types extends TraverserTypes, + Context, +> = Partial<{ + [TypeName in keyof Types]: VisitorInputDefinition; +}>; diff --git a/packages/type-traverser/src/index.ts b/packages/type-traverser/src/index.ts new file mode 100644 index 0000000..1a33e26 --- /dev/null +++ b/packages/type-traverser/src/index.ts @@ -0,0 +1,9 @@ +export * from "./TraverserTypes"; +export * from "./UtilTypes"; +export * from "./TraverserDefinition"; +export * from "./TransformerReturnTypes"; +export * from "./TransformerReturnTypesDefaults"; +export * from "./Traverser"; +export * from "./Transformer"; +export * from "./Visitor"; +export * from "./Visitors"; diff --git a/packages/type-traverser/src/transformerSubTraversers/TransformerInterfaceSubTraverser.ts b/packages/type-traverser/src/transformerSubTraversers/TransformerInterfaceSubTraverser.ts new file mode 100644 index 0000000..9d0b227 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/TransformerInterfaceSubTraverser.ts @@ -0,0 +1,123 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { TraverserTypes } from ".."; +import type { + InterfaceReturnType, + TransformerReturnTypes, +} from "../TransformerReturnTypes"; +import type { InterfaceTransformerDefinition } from "../Transformers"; +import type { InterfaceTraverserDefinition } from "../TraverserDefinition"; +import type { InterfaceType } from "../TraverserTypes"; +import { transformerParentSubTraverser } from "./TransformerParentSubTraverser"; +import type { TransformerSubTraverserGlobals } from "./util/transformerSubTraverserTypes"; + +export async function transformerInterfaceSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + ReturnTypes extends TransformerReturnTypes, + Type extends InterfaceType, + ReturnType extends InterfaceReturnType, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: TransformerSubTraverserGlobals, +): Promise { + const { + traverserDefinition, + transformers, + circularDependencyAwaiter, + executingPromises, + superPromise, + } = globals; + const resolveSuperPromise = superPromise.add(); + return new Promise(async (resolve, reject) => { + try { + // Get the returns for properties + const definition = traverserDefinition[ + itemTypeName + ] as InterfaceTraverserDefinition; + const transformer = transformers[ + itemTypeName + ] as unknown as InterfaceTransformerDefinition< + Types, + Type, + ReturnTypes, + ReturnType, + Context + >; + const transformedObject = await transformer.transformer( + item, + async () => { + const propertiesReturn: ReturnType["properties"] = Object.fromEntries( + await Promise.all( + Object.entries(definition.properties).map( + async ([propertyName]) => { + const originalObject = item[propertyName]; + const originalPropertyDefinition = + definition.properties[propertyName]; + const transformedProperty = await transformer.properties[ + propertyName + ]( + originalObject, + async () => { + if (originalObject === undefined) { + return undefined; + } else if (Array.isArray(originalObject)) { + return Promise.all( + originalObject.map(async (subObject) => { + const onResolve = circularDependencyAwaiter.add( + item, + itemTypeName, + subObject, + originalPropertyDefinition, + executingPromises, + ); + const toReturn = + await transformerParentSubTraverser( + subObject, + originalPropertyDefinition, + globals as any, + ); + onResolve(); + return toReturn; + }), + ); + } else { + const onResolve = circularDependencyAwaiter.add( + item, + itemTypeName, + originalObject, + originalPropertyDefinition, + executingPromises, + ); + const toReturn = await transformerParentSubTraverser( + originalObject, + originalPropertyDefinition, + globals as any, + ); + onResolve(); + return toReturn; + } + }, + globals.context, + ); + return [propertyName, transformedProperty]; + }, + ), + ), + ); + return propertiesReturn; + }, + (input) => { + resolve(input); + }, + globals.context, + ); + resolve(transformedObject); + resolveSuperPromise(); + } catch (err) { + reject(err); + resolveSuperPromise(err); + } + }); +} diff --git a/packages/type-traverser/src/transformerSubTraversers/TransformerParentSubTraverser.ts b/packages/type-traverser/src/transformerSubTraversers/TransformerParentSubTraverser.ts new file mode 100644 index 0000000..6267e71 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/TransformerParentSubTraverser.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { BaseReturnType, BaseTraverserTypes, TraverserTypes } from ".."; +import type { TransformerReturnTypes } from "../TransformerReturnTypes"; +import { transformerInterfaceSubTraverser } from "./TransformerInterfaceSubTraverser"; +import { transformerPrimitiveSubTraverser } from "./TransformerPrimitiveSubTraverser"; +import { transformerUnionSubTraverser } from "./TransformerUnionSubTraverser"; +import type { + TransformerSubTraverser, + TransformerSubTraverserGlobals, +} from "./util/transformerSubTraverserTypes"; +import { timeout } from "./util/timeout"; + +const subTraversers: Record< + string, + TransformerSubTraverser +> = { + interface: transformerInterfaceSubTraverser, + union: transformerUnionSubTraverser, + primitive: transformerPrimitiveSubTraverser, +}; + +export async function transformerParentSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + ReturnTypes extends TransformerReturnTypes, + Type extends BaseTraverserTypes, + ReturnType extends BaseReturnType, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: TransformerSubTraverserGlobals, +): Promise { + const { traverserDefinition, executingPromises } = globals; + if (executingPromises.has(item, itemTypeName)) { + return executingPromises.get(item, itemTypeName)?.promise; + } + const subTraverser: TransformerSubTraverser< + Types, + TypeName, + ReturnTypes, + Type, + ReturnType, + Context + > = subTraversers[traverserDefinition[itemTypeName].kind]; + const executingPromise = { + promise: (async () => { + // This timeout exists to ensure that this promise is recorded + // in executing promises before we continue traversing. + await timeout(0); + return subTraverser(item, itemTypeName, globals); + })(), + isResolved: false, + }; + executingPromises.set(item, itemTypeName, executingPromise); + const toReturn = await executingPromise.promise; + executingPromise.isResolved = true; + return toReturn; +} diff --git a/packages/type-traverser/src/transformerSubTraversers/TransformerPrimitiveSubTraverser.ts b/packages/type-traverser/src/transformerSubTraversers/TransformerPrimitiveSubTraverser.ts new file mode 100644 index 0000000..8b49bfc --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/TransformerPrimitiveSubTraverser.ts @@ -0,0 +1,28 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { TraverserTypes } from ".."; +import type { + PrimitiveReturnType, + TransformerReturnTypes, +} from "../TransformerReturnTypes"; +import type { PrimitiveTransformerDefinition } from "../Transformers"; +import type { PrimitiveType } from "../TraverserTypes"; +import type { TransformerSubTraverserGlobals } from "./util/transformerSubTraverserTypes"; + +export async function transformerPrimitiveSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + ReturnTypes extends TransformerReturnTypes, + Type extends PrimitiveType, + ReturnType extends PrimitiveReturnType, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: TransformerSubTraverserGlobals, +): Promise { + const { transformers } = globals; + const transformer = transformers[ + itemTypeName + ] as unknown as PrimitiveTransformerDefinition; + return transformer(item, globals.context); +} diff --git a/packages/type-traverser/src/transformerSubTraversers/TransformerUnionSubTraverser.ts b/packages/type-traverser/src/transformerSubTraversers/TransformerUnionSubTraverser.ts new file mode 100644 index 0000000..fd977b2 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/TransformerUnionSubTraverser.ts @@ -0,0 +1,78 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { TraverserTypes } from ".."; +import type { + TransformerReturnTypes, + UnionReturnType, +} from "../TransformerReturnTypes"; +import type { UnionTransformerDefinition } from "../Transformers"; +import type { UnionTraverserDefinition } from "../TraverserDefinition"; +import type { UnionType } from "../TraverserTypes"; +import { transformerParentSubTraverser } from "./TransformerParentSubTraverser"; +import type { TransformerSubTraverserGlobals } from "./util/transformerSubTraverserTypes"; + +export async function transformerUnionSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + ReturnTypes extends TransformerReturnTypes, + Type extends UnionType, + ReturnType extends UnionReturnType, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: TransformerSubTraverserGlobals, +): Promise { + const { + traverserDefinition, + transformers, + circularDependencyAwaiter, + executingPromises, + superPromise, + } = globals; + const resolveSuperPromise = superPromise.add(); + return new Promise(async (resolve, reject) => { + try { + const definition = traverserDefinition[ + itemTypeName + ] as UnionTraverserDefinition; + const transformer = transformers[ + itemTypeName + ] as unknown as UnionTransformerDefinition< + Types, + Type, + ReturnTypes, + ReturnType, + Context + >; + const transformedObject = await transformer( + item, + async () => { + const itemSpecificTypeName = definition.selector(item); + const onResolve = circularDependencyAwaiter.add( + item, + itemTypeName, + item, + itemSpecificTypeName, + executingPromises, + ); + const toReturn = await transformerParentSubTraverser( + item, + itemSpecificTypeName, + globals, + ); + onResolve(); + return toReturn; + }, + (input) => { + resolve(input); + }, + globals.context, + ); + resolve(transformedObject); + resolveSuperPromise(); + } catch (err) { + reject(err); + resolveSuperPromise(err); + } + }); +} diff --git a/packages/type-traverser/src/transformerSubTraversers/util/CircularDependencyAwaiter.ts b/packages/type-traverser/src/transformerSubTraversers/util/CircularDependencyAwaiter.ts new file mode 100644 index 0000000..6a0c5e5 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/util/CircularDependencyAwaiter.ts @@ -0,0 +1,71 @@ +import type { KeyTypes } from "../.."; +import { MultiMap } from "./MultiMap"; +import { MultiSet } from "./MultiSet"; +import type { TransformerSubTraverserExecutingPromises } from "./transformerSubTraverserTypes"; + +export class CircularDepenedencyAwaiter { + private graphNodes: MultiMap> = + new MultiMap(); + + add( + subjectItem: object, + subjectItemName: KeyTypes, + awaitedItem: object, + awaitedItemName: KeyTypes, + executingPromises: TransformerSubTraverserExecutingPromises, + ): () => void { + // If the promise has already resolved, do not add + if (executingPromises.get(awaitedItem, awaitedItemName)?.isResolved) { + return () => { + /* Do Nothing */ + }; + } + // If it hasn't then add to the graph + if (!this.graphNodes.has(subjectItem, subjectItemName)) { + this.graphNodes.set(subjectItem, subjectItemName, new MultiSet()); + } + this.graphNodes + .get(subjectItem, subjectItemName) + ?.add(awaitedItem, awaitedItemName); + this.checkForCircuit( + awaitedItem, + awaitedItemName, + subjectItem, + subjectItemName, + ); + return () => { + const awaitedSet = this.graphNodes.get(subjectItem, subjectItemName); + awaitedSet?.delete(awaitedItem, awaitedItemName); + if (awaitedSet?.size === 0) { + this.graphNodes.delete(subjectItem, subjectItemName); + } + }; + } + + private checkForCircuit( + curItem: object, + curItemName: KeyTypes, + subjectItem: object, + subjectItemName: KeyTypes, + ): void { + const nextNodes = this.graphNodes.get(curItem, curItemName); + if (!nextNodes) { + return; + } + nextNodes.forEach((nextItem, nextItemName) => { + if (subjectItem === nextItem && subjectItemName === nextItemName) { + throw new Error( + `Circular dependency found. Use the 'setReturnPointer' function. The loop includes the '${ + subjectItemName as string + }' type`, + ); + } + this.checkForCircuit( + nextItem, + nextItemName, + subjectItem, + subjectItemName, + ); + }); + } +} diff --git a/packages/type-traverser/src/transformerSubTraversers/util/MultiMap.ts b/packages/type-traverser/src/transformerSubTraversers/util/MultiMap.ts new file mode 100644 index 0000000..e6790ae --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/util/MultiMap.ts @@ -0,0 +1,63 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +export class MultiMap { + private map: Map> = new Map(); + // eslint-disable-next-line @typescript-eslint/no-inferrable-types + private internalSize: number = 0; + + get(key1: Key1, key2: Key2): Value | undefined { + const firstValue = this.map.get(key1); + if (!firstValue) { + return undefined; + } + return firstValue.get(key2); + } + set(key1: Key1, key2: Key2, value: Value): void { + let nestedMap = this.map.get(key1); + if (!nestedMap) { + nestedMap = new Map(); + this.map.set(key1, nestedMap); + } + if (!nestedMap.has(key2)) { + this.internalSize++; + } + nestedMap.set(key2, value); + } + delete(key1: Key1, key2: Key2): void { + const nestedMap = this.map.get(key1); + if (!nestedMap) { + return; + } + if (nestedMap.has(key2)) { + this.internalSize--; + } + nestedMap.delete(key2); + if (nestedMap.size === 0) { + this.map.delete(key1); + } + } + has(key1: Key1, key2: Key2): boolean { + const firstValue = this.map.get(key1); + if (!firstValue) { + return false; + } + return firstValue.has(key2); + } + toString( + key1Transformer: (key: Key1) => any = (key) => key, + key2Transformer: (key: Key2) => any = (key) => key, + valueTransformer: (value: Value) => any = (value) => value, + ): string { + let str = ""; + Array.from(this.map.entries()).forEach(([key1, value1]) => { + Array.from(value1.entries()).forEach(([key2, value2]) => { + str += ` [${key1Transformer(key1)}, ${key2Transformer( + key2, + )}] => ${valueTransformer(value2)}\n`; + }); + }); + return str; + } + get size() { + return this.internalSize; + } +} diff --git a/packages/type-traverser/src/transformerSubTraversers/util/MultiSet.ts b/packages/type-traverser/src/transformerSubTraversers/util/MultiSet.ts new file mode 100644 index 0000000..6205f02 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/util/MultiSet.ts @@ -0,0 +1,68 @@ +export class MultiSet { + private map: Map> = new Map(); + // eslint-disable-next-line @typescript-eslint/no-inferrable-types + private internalSize: number = 0; + + add(key1: Key1, key2: Key2): void { + let nestedSet = this.map.get(key1); + if (!nestedSet) { + nestedSet = new Set(); + this.map.set(key1, nestedSet); + } + if (!nestedSet.has(key2)) { + this.internalSize++; + } + nestedSet.add(key2); + } + has(key1: Key1, key2: Key2): boolean { + const firstValue = this.map.get(key1); + if (!firstValue) { + return false; + } + return firstValue.has(key2); + } + delete(key1: Key1, key2: Key2): void { + const nestedSet = this.map.get(key1); + if (!nestedSet) { + return; + } + if (nestedSet.has(key2)) { + this.internalSize--; + } + nestedSet.delete(key2); + if (nestedSet.size === 0) { + this.map.delete(key1); + } + } + get size() { + return this.internalSize; + } + clone(): MultiSet { + const newMultiSet = new MultiSet(); + this.map.forEach((key2Set, key1) => { + key2Set.forEach((key2) => { + newMultiSet.add(key1, key2); + }); + }); + return newMultiSet; + } + toString( + key1Transformer: (key: Key1) => any = (key) => key, + key2Transformer: (key: Key2) => any = (key) => key, + ) { + const multiSetValues: string[] = []; + this.forEach((item1, item2) => { + multiSetValues.push( + `(${key1Transformer(item1)},${key2Transformer(item2)})`, + ); + }); + return `${multiSetValues.join(",")}`; + } + forEach(callback: (key1: Key1, key2: Key2) => void) { + this.map.forEach((key2Set, key1) => { + key2Set.forEach((key2) => { + callback(key1, key2); + }); + }); + } +} diff --git a/packages/type-traverser/src/transformerSubTraversers/util/SuperPromise.ts b/packages/type-traverser/src/transformerSubTraversers/util/SuperPromise.ts new file mode 100644 index 0000000..b4352f6 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/util/SuperPromise.ts @@ -0,0 +1,31 @@ +import { v4 } from "uuid"; + +export class SuperPromise { + private unfulfilled: Set = new Set(); + private waitResolve: (() => void) | undefined = undefined; + private waitReject: ((err: unknown) => void) | undefined = undefined; + + add(): (error?: unknown) => void { + const id = v4(); + this.unfulfilled.add(id); + return (error?: unknown) => { + if (error && this.waitReject) { + this.waitReject(error); + } + this.unfulfilled.delete(id); + if (this.unfulfilled.size === 0 && this.waitResolve) { + this.waitResolve(); + } + }; + } + + async wait(): Promise { + if (this.unfulfilled.size === 0) { + return; + } + return new Promise((resolve, reject) => { + this.waitResolve = resolve; + this.waitReject = reject; + }); + } +} diff --git a/packages/type-traverser/src/transformerSubTraversers/util/timeout.ts b/packages/type-traverser/src/transformerSubTraversers/util/timeout.ts new file mode 100644 index 0000000..da11d19 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/util/timeout.ts @@ -0,0 +1,3 @@ +export function timeout(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/packages/type-traverser/src/transformerSubTraversers/util/transformerSubTraverserTypes.ts b/packages/type-traverser/src/transformerSubTraversers/util/transformerSubTraverserTypes.ts new file mode 100644 index 0000000..ac0dda2 --- /dev/null +++ b/packages/type-traverser/src/transformerSubTraversers/util/transformerSubTraverserTypes.ts @@ -0,0 +1,43 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + BaseReturnType, + BaseTraverserTypes, + KeyTypes, + TransformerReturnTypes, + TraverserDefinition, + TraverserTypes, +} from "../.."; +import type { Transformers } from "../../Transformers"; +import type { CircularDepenedencyAwaiter } from "./CircularDependencyAwaiter"; +import type { MultiMap } from "./MultiMap"; +import type { SuperPromise } from "./SuperPromise"; + +export type TransformerSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + ReturnTypes extends TransformerReturnTypes, + Type extends BaseTraverserTypes, + ReturnType extends BaseReturnType, + Context, +> = ( + item: Type["type"], + itemTypeName: TypeName, + globals: TransformerSubTraverserGlobals, +) => Promise; + +export interface TransformerSubTraverserGlobals< + Types extends TraverserTypes, + ReturnTypes extends TransformerReturnTypes, + Context, +> { + traverserDefinition: TraverserDefinition; + transformers: Transformers; + executingPromises: TransformerSubTraverserExecutingPromises; + circularDependencyAwaiter: CircularDepenedencyAwaiter; + superPromise: SuperPromise; + context: Context; +} + +export type TransformerSubTraverserExecutingPromises< + Keys extends KeyTypes = KeyTypes, +> = MultiMap; isResolved: boolean }>; diff --git a/packages/type-traverser/src/visitorSubTraversers/VisitorInterfaceSubTraverser.ts b/packages/type-traverser/src/visitorSubTraversers/VisitorInterfaceSubTraverser.ts new file mode 100644 index 0000000..0b8a3a6 --- /dev/null +++ b/packages/type-traverser/src/visitorSubTraversers/VisitorInterfaceSubTraverser.ts @@ -0,0 +1,61 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { InterfaceVisitorDefinition, TraverserTypes } from ".."; +import type { InterfaceTraverserDefinition } from "../TraverserDefinition"; +import type { InterfaceType } from "../TraverserTypes"; +import type { VisitorSubTraverserGlobals } from "./util/visitorSubTraverserTypes"; +import { visitorParentSubTraverser } from "./VisitorParentSubTraverser"; + +export async function visitorInterfaceSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + Type extends InterfaceType, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: VisitorSubTraverserGlobals, +): Promise { + const { traverserDefinition, visitors } = globals; + // Get the returns for properties + const definition = traverserDefinition[ + itemTypeName + ] as InterfaceTraverserDefinition; + const visitor = visitors[ + itemTypeName + ] as unknown as InterfaceVisitorDefinition; + + await Promise.all([ + visitor.visitor(item, globals.context), + Promise.all( + Object.entries(definition.properties).map(async ([propertyName]) => { + const originalObject = item[propertyName]; + const originalPropertyDefinition = definition.properties[propertyName]; + const propertyVisitorPromise = visitor.properties[propertyName]( + originalObject, + globals.context, + ); + let propertyTraverserPromise: Promise; + if (originalObject === undefined) { + propertyTraverserPromise = Promise.resolve(); + } else if (Array.isArray(originalObject)) { + propertyTraverserPromise = Promise.all( + originalObject.map(async (subObject) => { + await visitorParentSubTraverser( + subObject, + originalPropertyDefinition, + globals as any, + ); + }), + ); + } else { + propertyTraverserPromise = visitorParentSubTraverser( + originalObject, + originalPropertyDefinition, + globals as any, + ); + } + return Promise.all([propertyVisitorPromise, propertyTraverserPromise]); + }), + ), + ]); +} diff --git a/packages/type-traverser/src/visitorSubTraversers/VisitorParentSubTraverser.ts b/packages/type-traverser/src/visitorSubTraversers/VisitorParentSubTraverser.ts new file mode 100644 index 0000000..56553eb --- /dev/null +++ b/packages/type-traverser/src/visitorSubTraversers/VisitorParentSubTraverser.ts @@ -0,0 +1,35 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { BaseTraverserTypes, TraverserTypes } from ".."; +import type { + VisitorSubTraverser, + VisitorSubTraverserGlobals, +} from "./util/visitorSubTraverserTypes"; +import { visitorInterfaceSubTraverser } from "./VisitorInterfaceSubTraverser"; +import { visitorUnionSubTraverser } from "./VisitorUnionSubTraverser"; +import { visitorPrimitiveSubTraverser } from "./VisitorPrimitiveSubTraverser"; + +const subTraversers: Record> = { + interface: visitorInterfaceSubTraverser, + union: visitorUnionSubTraverser, + primitive: visitorPrimitiveSubTraverser, +}; + +export async function visitorParentSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + Type extends BaseTraverserTypes, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: VisitorSubTraverserGlobals, +): Promise { + const { traverserDefinition, visitedObjects } = globals; + if (visitedObjects.has(item, itemTypeName)) { + return; + } + visitedObjects.add(item, itemTypeName); + const subTraverser: VisitorSubTraverser = + subTraversers[traverserDefinition[itemTypeName].kind]; + return subTraverser(item, itemTypeName, globals); +} diff --git a/packages/type-traverser/src/visitorSubTraversers/VisitorPrimitiveSubTraverser.ts b/packages/type-traverser/src/visitorSubTraversers/VisitorPrimitiveSubTraverser.ts new file mode 100644 index 0000000..0d79638 --- /dev/null +++ b/packages/type-traverser/src/visitorSubTraversers/VisitorPrimitiveSubTraverser.ts @@ -0,0 +1,21 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { PrimitiveVisitorDefinition, TraverserTypes } from ".."; +import type { PrimitiveType } from "../TraverserTypes"; +import type { VisitorSubTraverserGlobals } from "./util/visitorSubTraverserTypes"; + +export async function visitorPrimitiveSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + Type extends PrimitiveType, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: VisitorSubTraverserGlobals, +): Promise { + const { visitors } = globals; + const visitor = visitors[ + itemTypeName + ] as unknown as PrimitiveVisitorDefinition; + return visitor(item, globals.context); +} diff --git a/packages/type-traverser/src/visitorSubTraversers/VisitorUnionSubTraverser.ts b/packages/type-traverser/src/visitorSubTraversers/VisitorUnionSubTraverser.ts new file mode 100644 index 0000000..f9b2932 --- /dev/null +++ b/packages/type-traverser/src/visitorSubTraversers/VisitorUnionSubTraverser.ts @@ -0,0 +1,32 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { TraverserTypes, UnionVisitorDefinition } from ".."; +import type { UnionTraverserDefinition } from "../TraverserDefinition"; +import type { UnionType } from "../TraverserTypes"; +import type { VisitorSubTraverserGlobals } from "./util/visitorSubTraverserTypes"; +import { visitorParentSubTraverser } from "./VisitorParentSubTraverser"; + +export async function visitorUnionSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + Type extends UnionType, + Context, +>( + item: Type["type"], + itemTypeName: TypeName, + globals: VisitorSubTraverserGlobals, +): Promise { + const { traverserDefinition, visitors } = globals; + const definition = traverserDefinition[ + itemTypeName + ] as UnionTraverserDefinition; + const visitor = visitors[itemTypeName] as unknown as UnionVisitorDefinition< + Types, + Type, + Context + >; + const itemSpecificTypeName = definition.selector(item); + await Promise.all([ + visitor(item, globals.context), + visitorParentSubTraverser(item, itemSpecificTypeName, globals), + ]); +} diff --git a/packages/type-traverser/src/visitorSubTraversers/util/visitorSubTraverserTypes.ts b/packages/type-traverser/src/visitorSubTraversers/util/visitorSubTraverserTypes.ts new file mode 100644 index 0000000..fcc62f6 --- /dev/null +++ b/packages/type-traverser/src/visitorSubTraversers/util/visitorSubTraverserTypes.ts @@ -0,0 +1,29 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import type { + BaseTraverserTypes, + TraverserDefinition, + TraverserTypes, + Visitors, +} from "../.."; +import type { MultiSet } from "../../transformerSubTraversers/util/MultiSet"; + +export type VisitorSubTraverser< + Types extends TraverserTypes, + TypeName extends keyof Types, + Type extends BaseTraverserTypes, + Context, +> = ( + item: Type["type"], + itemTypeName: TypeName, + globals: VisitorSubTraverserGlobals, +) => Promise; + +export interface VisitorSubTraverserGlobals< + Types extends TraverserTypes, + Context, +> { + traverserDefinition: TraverserDefinition; + visitors: Visitors; + visitedObjects: MultiSet; + context: Context; +} diff --git a/packages/type-traverser/test/integration/avatar/AvatarBrokenTransformer.ts b/packages/type-traverser/test/integration/avatar/AvatarBrokenTransformer.ts new file mode 100644 index 0000000..ba80d6c --- /dev/null +++ b/packages/type-traverser/test/integration/avatar/AvatarBrokenTransformer.ts @@ -0,0 +1,69 @@ +import { Traverser } from "../../../lib"; +import { avatarTraverserDefinition } from "./AvatarTraverserDefinition"; +import { AvatarTraverserTypes } from "./AvatarTraverserTypes"; + +const avatarTraverser = new Traverser( + avatarTraverserDefinition +); + +interface ActionablePerson { + doAction(): void; + friends: ActionablePerson[]; +} + +export const BrokenAvatarTransformer = avatarTraverser.createTransformer< + { + Element: { + return: string; + }; + Bender: { + return: ActionablePerson; + properties: { + element: string; + }; + }; + NonBender: { + return: ActionablePerson; + }; + }, + undefined +>({ + Element: async (item) => { + return item.toUpperCase(); + }, + Bender: { + transformer: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can bend ${transformedChildren.element}`); + }, + friends: transformedChildren.friends, + }; + }, + properties: { + element: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return `the element of ${transformedChildren}`; + }, + }, + }, + NonBender: { + transformer: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can't bend.`); + }, + friends: transformedChildren.friends, + }; + }, + }, + Person: async (item, getTransformedChildren, _setReturnPointer, _context) => { + const personToReturn: ActionablePerson = {} as ActionablePerson; + const transformedChildren = await getTransformedChildren(); + personToReturn.doAction = transformedChildren.doAction; + personToReturn.friends = transformedChildren.friends; + return personToReturn; + }, +}); diff --git a/packages/type-traverser/test/integration/avatar/AvatarErroringTransformer.ts b/packages/type-traverser/test/integration/avatar/AvatarErroringTransformer.ts new file mode 100644 index 0000000..746d118 --- /dev/null +++ b/packages/type-traverser/test/integration/avatar/AvatarErroringTransformer.ts @@ -0,0 +1,64 @@ +import { Traverser } from "../../../lib"; +import { avatarTraverserDefinition } from "./AvatarTraverserDefinition"; +import { AvatarTraverserTypes } from "./AvatarTraverserTypes"; + +const avatarTraverser = new Traverser( + avatarTraverserDefinition +); + +interface ActionablePerson { + doAction(): void; + friends: ActionablePerson[]; +} + +export const AvatarErroringTransformer = avatarTraverser.createTransformer< + { + Element: { + return: string; + }; + Bender: { + return: ActionablePerson; + properties: { + element: string; + }; + }; + NonBender: { + return: ActionablePerson; + }; + }, + undefined +>({ + Element: async (item) => { + return item.toUpperCase(); + }, + Bender: { + transformer: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return { + doAction: () => { + console.log(`I can bend ${transformedChildren.element}`); + }, + friends: transformedChildren.friends, + }; + }, + properties: { + element: async (item, getTransformedChildren) => { + const transformedChildren = await getTransformedChildren(); + return `the element of ${transformedChildren}`; + }, + }, + }, + NonBender: { + transformer: async (_item, _getTransformedChildren) => { + throw new Error("No Non Benders Allowed"); + }, + }, + Person: async (item, getTransformedChildren, setReturnPointer, _context) => { + const personToReturn: ActionablePerson = {} as ActionablePerson; + setReturnPointer(personToReturn); + const transformedChildren = await getTransformedChildren(); + personToReturn.doAction = transformedChildren.doAction; + personToReturn.friends = transformedChildren.friends; + return personToReturn; + }, +}); diff --git a/packages/type-traverser/test/integration/avatar/AvatarTraverserDefinition.ts b/packages/type-traverser/test/integration/avatar/AvatarTraverserDefinition.ts new file mode 100644 index 0000000..ae6692e --- /dev/null +++ b/packages/type-traverser/test/integration/avatar/AvatarTraverserDefinition.ts @@ -0,0 +1,28 @@ +import { TraverserDefinition } from "../../../lib"; +import { AvatarTraverserTypes, Bender } from "./AvatarTraverserTypes"; + +export const avatarTraverserDefinition: TraverserDefinition = + { + Element: { + kind: "primitive", + }, + Bender: { + kind: "interface", + properties: { + element: "Element", + friends: "Person", + }, + }, + NonBender: { + kind: "interface", + properties: { + friends: "Person", + }, + }, + Person: { + kind: "union", + selector: (item) => { + return (item as Bender).element ? "Bender" : "NonBender"; + }, + }, + }; diff --git a/packages/type-traverser/test/integration/avatar/AvatarTraverserTypes.ts b/packages/type-traverser/test/integration/avatar/AvatarTraverserTypes.ts new file mode 100644 index 0000000..1590637 --- /dev/null +++ b/packages/type-traverser/test/integration/avatar/AvatarTraverserTypes.ts @@ -0,0 +1,46 @@ +import { ValidateTraverserTypes } from "../../../lib"; + +/** + * Original Type Definition + */ +export type Element = "Water" | "Earth" | "Fire" | "Air"; +export interface Bender { + name: string; + element: Element; + friends: Person[]; +} +export interface NonBender { + name: string; + friends: Person[]; +} +export type Person = Bender | NonBender; + +/** + * Traverser Types + */ +export type AvatarTraverserTypes = ValidateTraverserTypes<{ + Element: { + kind: "primitive"; + type: Element; + }; + Bender: { + kind: "interface"; + type: Bender; + properties: { + element: "Element"; + friends: "Person"; + }; + }; + NonBender: { + kind: "interface"; + type: Bender; + properties: { + friends: "Person"; + }; + }; + Person: { + kind: "union"; + type: Person; + typeNames: "Bender" | "NonBender"; + }; +}>; diff --git a/packages/type-traverser/test/integration/avatar/avatar.test.ts b/packages/type-traverser/test/integration/avatar/avatar.test.ts new file mode 100644 index 0000000..5a35766 --- /dev/null +++ b/packages/type-traverser/test/integration/avatar/avatar.test.ts @@ -0,0 +1,19 @@ +import { BrokenAvatarTransformer } from "./AvatarBrokenTransformer"; +import { AvatarErroringTransformer } from "./AvatarErroringTransformer"; +import { aang } from "./sampleData"; + +describe("Avatar", () => { + it("Throws an error before entering an infinite loop", async () => { + await expect( + BrokenAvatarTransformer.transform(aang, "Bender", undefined) + ).rejects.toThrow( + `Circular dependency found. Use the 'setReturnPointer' function. The loop includes the 'Bender' type` + ); + }); + + it("Bubbles errors", async () => { + await expect( + AvatarErroringTransformer.transform(aang, "Bender", undefined) + ).rejects.toThrow("No Non Benders Allowed"); + }); +}); diff --git a/packages/type-traverser/test/integration/avatar/sampleData.ts b/packages/type-traverser/test/integration/avatar/sampleData.ts new file mode 100644 index 0000000..e74b543 --- /dev/null +++ b/packages/type-traverser/test/integration/avatar/sampleData.ts @@ -0,0 +1,21 @@ +import { Bender, NonBender } from "./AvatarTraverserTypes"; +/** + * Raw Data to Traverse + */ +export const aang: Bender = { + name: "Aang", + element: "Air", + friends: [], +}; +export const sokka: NonBender = { + name: "Sokka", + friends: [], +}; +export const katara: Bender = { + name: "Katara", + element: "Water", + friends: [], +}; +aang.friends.push(sokka, katara); +sokka.friends.push(aang, katara); +katara.friends.push(aang, sokka); diff --git a/packages/type-traverser/test/integration/shexj/ShexJSimplifier.ts b/packages/type-traverser/test/integration/shexj/ShexJSimplifier.ts new file mode 100644 index 0000000..5f7e2d9 --- /dev/null +++ b/packages/type-traverser/test/integration/shexj/ShexJSimplifier.ts @@ -0,0 +1,39 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { ShexJTraverser } from "./ShexJTraverser"; + +interface ShapeReturn { + id: any; + closed: any; + extra: any[]; + expression: any; + semActs: any[]; + annotations: any[]; +} + +export const ShexJStringTransformer = ShexJTraverser.createTransformer({ + Shape: { + transformer: async ( + shape, + getTransformedChildren, + setReturnPointer + ): Promise => { + const toReturn: Partial<{ + id: any; + closed: any; + extra: any[]; + expression: any; + semActs: any[]; + annotations: any[]; + }> = {}; + setReturnPointer(toReturn as ShapeReturn); + const transformedChildren = await getTransformedChildren(); + toReturn.id = transformedChildren.id; + toReturn.annotations = transformedChildren.annotations; + toReturn.extra = transformedChildren.extra; + toReturn.expression = transformedChildren.expression; + toReturn.semActs = transformedChildren.semActs; + toReturn.annotations = transformedChildren.annotations; + return toReturn as ShapeReturn; + }, + }, +}); diff --git a/packages/type-traverser/test/integration/shexj/ShexJTraverser.ts b/packages/type-traverser/test/integration/shexj/ShexJTraverser.ts new file mode 100644 index 0000000..e460990 --- /dev/null +++ b/packages/type-traverser/test/integration/shexj/ShexJTraverser.ts @@ -0,0 +1,7 @@ +import { ShexJTraverserDefinition } from "./ShexJTraverserDefinition"; +import { ShexJTraverserTypes } from "./ShexJTraverserTypes"; +import { Traverser } from "../../../lib/Traverser"; + +export const ShexJTraverser = new Traverser( + ShexJTraverserDefinition +); diff --git a/packages/type-traverser/test/integration/shexj/ShexJTraverserDefinition.ts b/packages/type-traverser/test/integration/shexj/ShexJTraverserDefinition.ts new file mode 100644 index 0000000..7fcdf01 --- /dev/null +++ b/packages/type-traverser/test/integration/shexj/ShexJTraverserDefinition.ts @@ -0,0 +1,296 @@ +import { shapeExpr, valueSetValue } from "shexj"; +import { ShexJTraverserTypes } from "./ShexJTraverserTypes"; +import { TraverserDefinition } from "../../../lib"; + +export const ShexJTraverserDefinition: TraverserDefinition = + { + Schema: { + kind: "interface", + properties: { + startActs: "SemAct", + start: "shapeExpr", + imports: "IRIREF", + shapes: "shapeExpr", + }, + }, + shapeExpr: { + kind: "union", + selector: (item: shapeExpr) => { + if (typeof item === "string") { + return "shapeExprRef"; + } + return item.type; + }, + }, + ShapeOr: { + kind: "interface", + properties: { + id: "shapeExprRef", + shapeExprs: "shapeExpr", + }, + }, + ShapeAnd: { + kind: "interface", + properties: { + id: "shapeExprRef", + shapeExprs: "shapeExpr", + }, + }, + ShapeNot: { + kind: "interface", + properties: { + id: "shapeExprRef", + shapeExpr: "shapeExpr", + }, + }, + ShapeExternal: { + kind: "interface", + properties: { + id: "shapeExprRef", + }, + }, + shapeExprRef: { + kind: "primitive", + }, + NodeConstraint: { + kind: "interface", + properties: { + id: "shapeExprRef", + datatype: "IRIREF", + values: "valueSetValue", + length: "INTEGER", + minlength: "INTEGER", + maxlength: "INTEGER", + pattern: "STRING", + flags: "STRING", + mininclusive: "numericLiteral", + minexclusive: "numericLiteral", + maxinclusive: "numericLiteral", + maxexclusive: "numericLiteral", + totaldigits: "INTEGER", + fractiondigits: "INTEGER", + }, + }, + numericLiteral: { + kind: "primitive", + }, + valueSetValue: { + kind: "union", + selector: (item: valueSetValue) => { + if (typeof item === "string") { + return "objectValue"; + } else if ( + item.type && + [ + "IriStem", + "IriStemRange", + "LiteralStem", + "LiteralStemRange", + "Language", + "LanguageStem", + "LanguageStemRange", + ].includes(item.type) + ) { + return item.type as + | "IriStem" + | "IriStemRange" + | "LiteralStem" + | "LiteralStemRange" + | "Language" + | "LanguageStem" + | "LanguageStemRange"; + } else { + return "objectValue"; + } + }, + }, + objectValue: { + kind: "union", + selector: (item) => { + return typeof item === "string" ? "IRIREF" : "ObjectLiteral"; + }, + }, + ObjectLiteral: { + kind: "interface", + properties: { + value: "STRING", + language: "STRING", + type: "STRING", + }, + }, + IriStem: { + kind: "interface", + properties: { + stem: "IRIREF", + }, + }, + IriStemRange: { + kind: "interface", + properties: { + stem: "IriStemRangeStem", + exclusions: "IriStemRangeExclusions", + }, + }, + IriStemRangeStem: { + kind: "union", + selector: (item) => { + return typeof item === "string" ? "IRIREF" : "Wildcard"; + }, + }, + IriStemRangeExclusions: { + kind: "union", + selector: (item) => { + return typeof item === "string" ? "IRIREF" : "IriStem"; + }, + }, + LiteralStem: { + kind: "interface", + properties: { + stem: "STRING", + }, + }, + LiteralStemRange: { + kind: "interface", + properties: { + stem: "LiteralStemRangeStem", + exclusions: "LiteralStemRangeExclusions", + }, + }, + LiteralStemRangeStem: { + kind: "union", + selector: (item) => { + return typeof item === "string" ? "STRING" : "Wildcard"; + }, + }, + LiteralStemRangeExclusions: { + kind: "union", + selector: (item) => { + return typeof item === "string" ? "STRING" : "LiteralStem"; + }, + }, + Language: { + kind: "interface", + properties: { + languageTag: "LANGTAG", + }, + }, + LanguageStem: { + kind: "interface", + properties: { + stem: "LANGTAG", + }, + }, + LanguageStemRange: { + kind: "interface", + properties: { + stem: "LanguageStemRangeStem", + exclusions: "LanguageStemRangeExclusions", + }, + }, + LanguageStemRangeStem: { + kind: "union", + selector: (item) => { + return typeof item === "string" ? "LANGTAG" : "Wildcard"; + }, + }, + LanguageStemRangeExclusions: { + kind: "union", + selector: (item) => { + return typeof item === "string" ? "LANGTAG" : "LanguageStem"; + }, + }, + Wildcard: { + kind: "interface", + properties: {}, + }, + Shape: { + kind: "interface", + properties: { + id: "shapeExprRef", + closed: "BOOL", + extra: "IRIREF", + expression: "tripleExpr", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + tripleExpr: { + kind: "union", + selector: (item) => { + if (typeof item === "string") { + return "tripleExprRef"; + } + return item.type; + }, + }, + EachOf: { + kind: "interface", + properties: { + expressions: "tripleExpr", + id: "shapeExprRef", + min: "INTEGER", + max: "INTEGER", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + OneOf: { + kind: "interface", + properties: { + expressions: "tripleExpr", + id: "shapeExprRef", + min: "INTEGER", + max: "INTEGER", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + TripleConstraint: { + kind: "interface", + properties: { + inverse: "BOOL", + predicate: "IRIREF", + valueExpr: "shapeExpr", + id: "shapeExprRef", + min: "INTEGER", + max: "INTEGER", + semActs: "SemAct", + annotations: "Annotation", + }, + }, + tripleExprRef: { + kind: "primitive", + }, + SemAct: { + kind: "interface", + properties: { + name: "IRIREF", + code: "STRING", + }, + }, + Annotation: { + kind: "interface", + properties: { + predicate: "IRI", + object: "objectValue", + }, + }, + IRIREF: { + kind: "primitive", + }, + STRING: { + kind: "primitive", + }, + LANGTAG: { + kind: "primitive", + }, + INTEGER: { + kind: "primitive", + }, + BOOL: { + kind: "primitive", + }, + IRI: { + kind: "primitive", + }, + }; diff --git a/packages/type-traverser/test/integration/shexj/ShexJTraverserTypes.ts b/packages/type-traverser/test/integration/shexj/ShexJTraverserTypes.ts new file mode 100644 index 0000000..9309a92 --- /dev/null +++ b/packages/type-traverser/test/integration/shexj/ShexJTraverserTypes.ts @@ -0,0 +1,333 @@ +import { + Annotation, + EachOf, + IriStem, + Language, + LanguageStem, + LanguageStemRange, + LiteralStem, + LiteralStemRange, + NodeConstraint, + ObjectLiteral, + OneOf, + Schema, + SemAct, + Shape, + ShapeAnd, + ShapeExternal, + ShapeNot, + ShapeOr, + Wildcard, + shapeExpr, + valueSetValue, + tripleExpr, + TripleConstraint, + shapeExprRef, + IRIREF, + STRING, + LANGTAG, + INTEGER, + numericLiteral, + BOOL, + tripleExprRef, + IRI, + objectValue, +} from "shexj"; +import { ValidateTraverserTypes } from "../../../lib"; + +export type ShexJTraverserTypes = ValidateTraverserTypes<{ + Schema: { + kind: "interface"; + type: Schema; + properties: { + startActs: "SemAct"; + start: "shapeExpr"; + imports: "IRIREF"; + shapes: "shapeExpr"; + }; + }; + shapeExpr: { + kind: "union"; + type: shapeExpr; + typeNames: + | "ShapeOr" + | "ShapeAnd" + | "ShapeNot" + | "NodeConstraint" + | "Shape" + | "ShapeExternal" + | "shapeExprRef"; + }; + ShapeOr: { + kind: "interface"; + type: ShapeOr; + properties: { + id: "shapeExprRef"; + shapeExprs: "shapeExpr"; + }; + }; + ShapeAnd: { + kind: "interface"; + type: ShapeAnd; + properties: { + id: "shapeExprRef"; + shapeExprs: "shapeExpr"; + }; + }; + ShapeNot: { + kind: "interface"; + type: ShapeNot; + properties: { + id: "shapeExprRef"; + shapeExpr: "shapeExpr"; + }; + }; + ShapeExternal: { + kind: "interface"; + type: ShapeExternal; + properties: { + id: "shapeExprRef"; + }; + }; + shapeExprRef: { + kind: "primitive"; + type: shapeExprRef; + }; + NodeConstraint: { + kind: "interface"; + type: NodeConstraint; + properties: { + id: "shapeExprRef"; + datatype: "IRIREF"; + values: "valueSetValue"; + length: "INTEGER"; + minlength: "INTEGER"; + maxlength: "INTEGER"; + pattern: "STRING"; + flags: "STRING"; + mininclusive: "numericLiteral"; + minexclusive: "numericLiteral"; + maxinclusive: "numericLiteral"; + maxexclusive: "numericLiteral"; + totaldigits: "INTEGER"; + fractiondigits: "INTEGER"; + }; + }; + numericLiteral: { + kind: "primitive"; + type: numericLiteral; + }; + valueSetValue: { + kind: "union"; + type: valueSetValue; + typeNames: + | "objectValue" + | "IriStem" + | "IriStemRange" + | "LiteralStem" + | "LiteralStemRange" + | "Language" + | "LanguageStem" + | "LanguageStemRange"; + }; + objectValue: { + kind: "union"; + type: objectValue; + typeNames: "IRIREF" | "ObjectLiteral"; + }; + ObjectLiteral: { + kind: "interface"; + type: ObjectLiteral; + properties: { + value: "STRING"; + language: "STRING"; + type: "STRING"; + }; + }; + IriStem: { + kind: "interface"; + type: IriStem; + properties: { + stem: "IRIREF"; + }; + }; + IriStemRange: { + kind: "interface"; + type: IriStem; + properties: { + stem: "IriStemRangeStem"; + exclusions: "IriStemRangeExclusions"; + }; + }; + IriStemRangeStem: { + kind: "union"; + type: IRIREF | Wildcard; + typeNames: "IRIREF" | "Wildcard"; + }; + IriStemRangeExclusions: { + kind: "union"; + type: IRIREF | IriStem; + typeNames: "IRIREF" | "IriStem"; + }; + LiteralStem: { + kind: "interface"; + type: LiteralStem; + properties: { + stem: "STRING"; + }; + }; + LiteralStemRange: { + kind: "interface"; + type: LiteralStemRange; + properties: { + stem: "LiteralStemRangeStem"; + exclusions: "LiteralStemRangeExclusions"; + }; + }; + LiteralStemRangeStem: { + kind: "union"; + type: STRING | Wildcard; + typeNames: "STRING" | "Wildcard"; + }; + LiteralStemRangeExclusions: { + kind: "union"; + type: STRING | LiteralStem; + typeNames: "STRING" | "LiteralStem"; + }; + Language: { + kind: "interface"; + type: Language; + properties: { + languageTag: "LANGTAG"; + }; + }; + LanguageStem: { + kind: "interface"; + type: LanguageStem; + properties: { + stem: "LANGTAG"; + }; + }; + LanguageStemRange: { + kind: "interface"; + type: LanguageStemRange; + properties: { + stem: "LanguageStemRangeStem"; + exclusions: "LanguageStemRangeExclusions"; + }; + }; + LanguageStemRangeStem: { + kind: "union"; + type: LANGTAG | Wildcard; + typeNames: "LANGTAG" | "Wildcard"; + }; + LanguageStemRangeExclusions: { + kind: "union"; + type: LANGTAG | LanguageStem; + typeNames: "LANGTAG" | "LanguageStem"; + }; + Wildcard: { + kind: "interface"; + type: Wildcard; + properties: Record; + }; + Shape: { + kind: "interface"; + type: Shape; + properties: { + id: "shapeExprRef"; + closed: "BOOL"; + extra: "IRIREF"; + expression: "tripleExpr"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + tripleExpr: { + kind: "union"; + type: tripleExpr; + typeNames: "tripleExprRef" | "EachOf" | "OneOf" | "TripleConstraint"; + }; + EachOf: { + kind: "interface"; + type: EachOf; + properties: { + expressions: "tripleExpr"; + id: "shapeExprRef"; + min: "INTEGER"; + max: "INTEGER"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + OneOf: { + kind: "interface"; + type: OneOf; + properties: { + expressions: "tripleExpr"; + id: "shapeExprRef"; + min: "INTEGER"; + max: "INTEGER"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + TripleConstraint: { + kind: "interface"; + type: TripleConstraint; + properties: { + inverse: "BOOL"; + predicate: "IRIREF"; + valueExpr: "shapeExpr"; + id: "shapeExprRef"; + min: "INTEGER"; + max: "INTEGER"; + semActs: "SemAct"; + annotations: "Annotation"; + }; + }; + tripleExprRef: { + kind: "primitive"; + type: tripleExprRef; + }; + SemAct: { + kind: "interface"; + type: SemAct; + properties: { + name: "IRIREF"; + code: "STRING"; + }; + }; + Annotation: { + kind: "interface"; + type: Annotation; + properties: { + predicate: "IRI"; + object: "objectValue"; + }; + }; + IRIREF: { + kind: "primitive"; + type: IRIREF; + }; + STRING: { + kind: "primitive"; + type: STRING; + }; + LANGTAG: { + kind: "primitive"; + type: LANGTAG; + }; + INTEGER: { + kind: "primitive"; + type: INTEGER; + }; + BOOL: { + kind: "primitive"; + type: BOOL; + }; + IRI: { + kind: "primitive"; + type: IRI; + }; +}>; diff --git a/packages/type-traverser/test/integration/shexj/shexj.test.ts b/packages/type-traverser/test/integration/shexj/shexj.test.ts new file mode 100644 index 0000000..6701adf --- /dev/null +++ b/packages/type-traverser/test/integration/shexj/shexj.test.ts @@ -0,0 +1,48 @@ +import { ShexJStringTransformer } from "./ShexJSimplifier"; +import { jsonld2graphobject } from "jsonld2graphobject"; +import { activityPub, circular, profile, simple } from "./testShapes"; + +// Wow, these a crappy tests +describe("ShexJ Integration", () => { + it("works with a simple use case", async () => { + const result = await ShexJStringTransformer.transform( + await jsonld2graphobject({ "@id": "SCHEMA", ...simple }, "SCHEMA"), + "Schema", + undefined + ); + expect(JSON.stringify(result)).toBe( + '{"shapes":[{"id":"http://shex.io/webapps/shex.js/doc/EmployeeShape","expression":{"expressions":[{"predicate":"http://xmlns.com/foaf/0.1/givenName","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":1,"max":-1},{"predicate":"http://xmlns.com/foaf/0.1/familyName","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"}},{"predicate":"http://xmlns.com/foaf/0.1/phone","valueExpr":{},"min":0,"max":-1},{"predicate":"http://xmlns.com/foaf/0.1/mbox","valueExpr":{}}]}}]}' + ); + }); + + it("works with a circular use case", async () => { + await ShexJStringTransformer.transform( + await jsonld2graphobject({ "@id": "SCHEMA", ...circular }, "SCHEMA"), + "Schema", + undefined + ); + // Expect not to error + expect(true).toBe(true); + }); + + it("works with a Solid Proifle", async () => { + const result = await ShexJStringTransformer.transform( + await jsonld2graphobject({ "@id": "SCHEMA", ...profile }, "SCHEMA"), + "Schema", + undefined + ); + expect(JSON.stringify(result)).toBe( + '{"shapes":[{"id":"https://shaperepo.com/schemas/solidProfile#AddressShape","expression":{"expressions":[{"predicate":"http://www.w3.org/2006/vcard/ns#country-name","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the user\'s country of residence"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#locality","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the user\'s locality (City, Town etc.) of residence"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#postal-code","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The user\'s postal code"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#region","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the user\'s region (State, Province etc.) of residence"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#street-address","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The user\'s street address"}}]}]}},{"id":"https://shaperepo.com/schemas/solidProfile#EmailShape","extra":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","expression":{"expressions":[{"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","valueExpr":{"values":["http://www.w3.org/2006/vcard/ns#Dom","http://www.w3.org/2006/vcard/ns#Home","http://www.w3.org/2006/vcard/ns#ISDN","http://www.w3.org/2006/vcard/ns#Internet","http://www.w3.org/2006/vcard/ns#Intl","http://www.w3.org/2006/vcard/ns#Label","http://www.w3.org/2006/vcard/ns#Parcel","http://www.w3.org/2006/vcard/ns#Postal","http://www.w3.org/2006/vcard/ns#Pref","http://www.w3.org/2006/vcard/ns#Work","http://www.w3.org/2006/vcard/ns#X400"]},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The type of email."}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#value","valueExpr":{},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The value of an email as a mailto link (Example )"}}]}]}},{"id":"https://shaperepo.com/schemas/solidProfile#PhoneNumberShape","extra":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","expression":{"expressions":[{"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","valueExpr":{"values":["http://www.w3.org/2006/vcard/ns#Dom","http://www.w3.org/2006/vcard/ns#Home","http://www.w3.org/2006/vcard/ns#ISDN","http://www.w3.org/2006/vcard/ns#Internet","http://www.w3.org/2006/vcard/ns#Intl","http://www.w3.org/2006/vcard/ns#Label","http://www.w3.org/2006/vcard/ns#Parcel","http://www.w3.org/2006/vcard/ns#Postal","http://www.w3.org/2006/vcard/ns#Pref","http://www.w3.org/2006/vcard/ns#Work","http://www.w3.org/2006/vcard/ns#X400"]},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"They type of Phone Number"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#value","valueExpr":{},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The value of a phone number as a tel link (Example )"}}]}]}},{"id":"https://shaperepo.com/schemas/solidProfile#RSAPublicKeyShape","expression":{"expressions":[{"predicate":"http://www.w3.org/ns/auth/cert#modulus","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"RSA Modulus"}}]},{"predicate":"http://www.w3.org/ns/auth/cert#exponent","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#integer"},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"RSA Exponent"}}]}]}},{"id":"https://shaperepo.com/schemas/solidProfile#SolidProfileShape","extra":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","expression":{"expressions":[{"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","valueExpr":{"values":["http://schema.org/Person"]},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"Defines the node as a Person (from Schema.org)"}}]},{"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","valueExpr":{"values":["http://xmlns.com/foaf/0.1/Person"]},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"Defines the node as a Person (from foaf)"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#fn","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The formatted name of a person. Example: John Smith"}}]},{"predicate":"http://xmlns.com/foaf/0.1/name","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"An alternate way to define a person\'s name."}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#hasAddress","valueExpr":{"id":"https://shaperepo.com/schemas/solidProfile#AddressShape","expression":{"expressions":[{"predicate":"http://www.w3.org/2006/vcard/ns#country-name","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the user\'s country of residence"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#locality","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the user\'s locality (City, Town etc.) of residence"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#postal-code","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The user\'s postal code"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#region","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the user\'s region (State, Province etc.) of residence"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#street-address","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The user\'s street address"}}]}]}},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The person\'s street address."}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#hasEmail","valueExpr":{"id":"https://shaperepo.com/schemas/solidProfile#EmailShape","extra":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","expression":{"expressions":[{"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","valueExpr":{"values":["http://www.w3.org/2006/vcard/ns#Dom","http://www.w3.org/2006/vcard/ns#Home","http://www.w3.org/2006/vcard/ns#ISDN","http://www.w3.org/2006/vcard/ns#Internet","http://www.w3.org/2006/vcard/ns#Intl","http://www.w3.org/2006/vcard/ns#Label","http://www.w3.org/2006/vcard/ns#Parcel","http://www.w3.org/2006/vcard/ns#Postal","http://www.w3.org/2006/vcard/ns#Pref","http://www.w3.org/2006/vcard/ns#Work","http://www.w3.org/2006/vcard/ns#X400"]},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The type of email."}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#value","valueExpr":{},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The value of an email as a mailto link (Example )"}}]}]}},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The person\'s email."}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#hasPhoto","valueExpr":{},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"A link to the person\'s photo"}}]},{"predicate":"http://xmlns.com/foaf/0.1/img","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"Photo link but in string form"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#hasTelephone","valueExpr":{"id":"https://shaperepo.com/schemas/solidProfile#PhoneNumberShape","extra":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","expression":{"expressions":[{"predicate":"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","valueExpr":{"values":["http://www.w3.org/2006/vcard/ns#Dom","http://www.w3.org/2006/vcard/ns#Home","http://www.w3.org/2006/vcard/ns#ISDN","http://www.w3.org/2006/vcard/ns#Internet","http://www.w3.org/2006/vcard/ns#Intl","http://www.w3.org/2006/vcard/ns#Label","http://www.w3.org/2006/vcard/ns#Parcel","http://www.w3.org/2006/vcard/ns#Postal","http://www.w3.org/2006/vcard/ns#Pref","http://www.w3.org/2006/vcard/ns#Work","http://www.w3.org/2006/vcard/ns#X400"]},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"They type of Phone Number"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#value","valueExpr":{},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The value of a phone number as a tel link (Example )"}}]}]}},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"Person\'s telephone number"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#phone","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"An alternative way to define a person\'s telephone number using a string"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#organization-name","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the organization with which the person is affiliated"}}]},{"predicate":"http://www.w3.org/2006/vcard/ns#role","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The name of the person\'s role in their organization"}}]},{"predicate":"http://www.w3.org/ns/auth/acl#trustedApp","valueExpr":{"id":"https://shaperepo.com/schemas/solidProfile#TrustedAppShape","expression":{"expressions":[{"predicate":"http://www.w3.org/ns/auth/acl#mode","valueExpr":{"values":["http://www.w3.org/ns/auth/acl#Append","http://www.w3.org/ns/auth/acl#Control","http://www.w3.org/ns/auth/acl#Read","http://www.w3.org/ns/auth/acl#Write"]},"min":1,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The level of access provided to this origin"}}]},{"predicate":"http://www.w3.org/ns/auth/acl#origin","valueExpr":{},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The app origin the user trusts"}}]}]}},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"A list of app origins that are trusted by this user"}}]},{"predicate":"http://www.w3.org/ns/auth/cert#key","valueExpr":{"id":"https://shaperepo.com/schemas/solidProfile#RSAPublicKeyShape","expression":{"expressions":[{"predicate":"http://www.w3.org/ns/auth/cert#modulus","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#string"},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"RSA Modulus"}}]},{"predicate":"http://www.w3.org/ns/auth/cert#exponent","valueExpr":{"datatype":"http://www.w3.org/2001/XMLSchema#integer"},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"RSA Exponent"}}]}]}},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"A list of RSA public keys that are associated with private keys the user holds."}}]},{"predicate":"http://www.w3.org/ns/ldp#inbox","valueExpr":{},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The user\'s LDP inbox to which apps can post notifications"}}]},{"predicate":"http://www.w3.org/ns/pim/space#preferencesFile","valueExpr":{},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The user\'s preferences"}}]},{"predicate":"http://www.w3.org/ns/pim/space#storage","valueExpr":{},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The location of a Solid storage server related to this WebId"}}]},{"predicate":"http://www.w3.org/ns/solid/terms#account","valueExpr":{},"min":0,"max":1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The user\'s account"}}]},{"predicate":"http://www.w3.org/ns/solid/terms#privateTypeIndex","valueExpr":{},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"A registry of all types used on the user\'s Pod (for private access only)"}}]},{"predicate":"http://www.w3.org/ns/solid/terms#publicTypeIndex","valueExpr":{},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"A registry of all types used on the user\'s Pod (for public access)"}}]},{"predicate":"http://xmlns.com/foaf/0.1/knows","valueExpr":{},"min":0,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"A list of WebIds for all the people this user knows."}}]}]}},{"id":"https://shaperepo.com/schemas/solidProfile#TrustedAppShape","expression":{"expressions":[{"predicate":"http://www.w3.org/ns/auth/acl#mode","valueExpr":{"values":["http://www.w3.org/ns/auth/acl#Append","http://www.w3.org/ns/auth/acl#Control","http://www.w3.org/ns/auth/acl#Read","http://www.w3.org/ns/auth/acl#Write"]},"min":1,"max":-1,"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The level of access provided to this origin"}}]},{"predicate":"http://www.w3.org/ns/auth/acl#origin","valueExpr":{},"annotations":[{"predicate":"http://www.w3.org/2000/01/rdf-schema#comment","object":{"value":"The app origin the user trusts"}}]}]}}]}' + ); + }); + + it("works with Activity Pub", async () => { + await ShexJStringTransformer.transform( + await jsonld2graphobject({ "@id": "SCHEMA", ...activityPub }, "SCHEMA"), + "Schema", + undefined + ); + // Expect it not to error + expect(true).toBe(true); + }); +}); diff --git a/packages/type-traverser/test/integration/shexj/testShapes.ts b/packages/type-traverser/test/integration/shexj/testShapes.ts new file mode 100644 index 0000000..bdc59b9 --- /dev/null +++ b/packages/type-traverser/test/integration/shexj/testShapes.ts @@ -0,0 +1,4836 @@ +import { Schema } from "shexj"; + +export const circular: Schema = { + "@context": "http://www.w3.org/ns/shex.jsonld", + type: "Schema", + shapes: [ + { + id: "http://example.com/Parent", + type: "Shape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://example.com/hasChild", + valueExpr: "http://example.com/Child", + }, + ], + }, + }, + { + id: "http://example.com/Child", + type: "Shape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://example.com/hasParent", + valueExpr: "http://example.com/Parent", + }, + ], + }, + }, + ], +}; + +export const simple: Schema = { + type: "Schema", + shapes: [ + { + type: "Shape", + id: "http://shex.io/webapps/shex.js/doc/EmployeeShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/givenName", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 1, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/familyName", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/phone", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/mbox", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + }, + ], + }, + }, + ], + "@context": "http://www.w3.org/ns/shex.jsonld", +}; + +export const profile: Schema = { + type: "Schema", + shapes: [ + { + type: "Shape", + id: "https://shaperepo.com/schemas/solidProfile#AddressShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#country-name", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The name of the user's country of residence", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#locality", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The name of the user's locality (City, Town etc.) of residence", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#postal-code", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The user's postal code", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#region", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The name of the user's region (State, Province etc.) of residence", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#street-address", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The user's street address", + }, + }, + ], + }, + ], + }, + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/solidProfile#EmailShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "http://www.w3.org/2006/vcard/ns#Dom", + "http://www.w3.org/2006/vcard/ns#Home", + "http://www.w3.org/2006/vcard/ns#ISDN", + "http://www.w3.org/2006/vcard/ns#Internet", + "http://www.w3.org/2006/vcard/ns#Intl", + "http://www.w3.org/2006/vcard/ns#Label", + "http://www.w3.org/2006/vcard/ns#Parcel", + "http://www.w3.org/2006/vcard/ns#Postal", + "http://www.w3.org/2006/vcard/ns#Pref", + "http://www.w3.org/2006/vcard/ns#Work", + "http://www.w3.org/2006/vcard/ns#X400", + ], + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The type of email.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#value", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The value of an email as a mailto link (Example )", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/solidProfile#PhoneNumberShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "http://www.w3.org/2006/vcard/ns#Dom", + "http://www.w3.org/2006/vcard/ns#Home", + "http://www.w3.org/2006/vcard/ns#ISDN", + "http://www.w3.org/2006/vcard/ns#Internet", + "http://www.w3.org/2006/vcard/ns#Intl", + "http://www.w3.org/2006/vcard/ns#Label", + "http://www.w3.org/2006/vcard/ns#Parcel", + "http://www.w3.org/2006/vcard/ns#Postal", + "http://www.w3.org/2006/vcard/ns#Pref", + "http://www.w3.org/2006/vcard/ns#Work", + "http://www.w3.org/2006/vcard/ns#X400", + ], + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "They type of Phone Number", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#value", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The value of a phone number as a tel link (Example )", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/solidProfile#RSAPublicKeyShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/auth/cert#modulus", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "RSA Modulus", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/auth/cert#exponent", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#integer", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "RSA Exponent", + }, + }, + ], + }, + ], + }, + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/solidProfile#SolidProfileShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["http://schema.org/Person"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the node as a Person (from Schema.org)", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["http://xmlns.com/foaf/0.1/Person"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the node as a Person (from foaf)", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#fn", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The formatted name of a person. Example: John Smith", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/name", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "An alternate way to define a person's name.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#hasAddress", + valueExpr: + "https://shaperepo.com/schemas/solidProfile#AddressShape", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The person's street address.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#hasEmail", + valueExpr: "https://shaperepo.com/schemas/solidProfile#EmailShape", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The person's email.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#hasPhoto", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "A link to the person's photo", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/img", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Photo link but in string form", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#hasTelephone", + valueExpr: + "https://shaperepo.com/schemas/solidProfile#PhoneNumberShape", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Person's telephone number", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#phone", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "An alternative way to define a person's telephone number using a string", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#organization-name", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The name of the organization with which the person is affiliated", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#role", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The name of the person's role in their organization", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/auth/acl#trustedApp", + valueExpr: + "https://shaperepo.com/schemas/solidProfile#TrustedAppShape", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "A list of app origins that are trusted by this user", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/auth/cert#key", + valueExpr: + "https://shaperepo.com/schemas/solidProfile#RSAPublicKeyShape", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A list of RSA public keys that are associated with private keys the user holds.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/ldp#inbox", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The user's LDP inbox to which apps can post notifications", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/pim/space#preferencesFile", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The user's preferences", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/pim/space#storage", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The location of a Solid storage server related to this WebId", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/solid/terms#account", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The user's account", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/solid/terms#privateTypeIndex", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A registry of all types used on the user's Pod (for private access only)", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/solid/terms#publicTypeIndex", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A registry of all types used on the user's Pod (for public access)", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://xmlns.com/foaf/0.1/knows", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "A list of WebIds for all the people this user knows.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/solidProfile#TrustedAppShape", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/auth/acl#mode", + valueExpr: { + type: "NodeConstraint", + values: [ + "http://www.w3.org/ns/auth/acl#Append", + "http://www.w3.org/ns/auth/acl#Control", + "http://www.w3.org/ns/auth/acl#Read", + "http://www.w3.org/ns/auth/acl#Write", + ], + }, + min: 1, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The level of access provided to this origin", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/ns/auth/acl#origin", + valueExpr: { + type: "NodeConstraint", + nodeKind: "iri", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The app origin the user trusts", + }, + }, + ], + }, + ], + }, + }, + ], + "@context": "http://www.w3.org/ns/shex.jsonld", +}; + +export const activityPub: Schema = { + type: "Schema", + shapes: [ + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Accept", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#AcceptShape", + type: "EachOf", + expressions: [ + { + id: "https://shaperepo.com/schemas/activitystreams#ActivityShape", + type: "EachOf", + expressions: [ + { + id: "https://shaperepo.com/schemas/activitystreams#ObjectShape", + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Object"], + }, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Describes an object of any kind. The Object type serves as the base type for most of the other kinds of objects defined in the Activity Vocabulary, including other Core types such as Activity, IntransitiveActivity, Collection and OrderedCollection.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#attachment", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#attachment", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies a resource attached or related to an object that potentially requires special handling. The intent is to provide a model that is at least semantically similar to attachments in email.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#attributedTo", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#attributedTo", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies one or more entities to which this object is attributed. The attributed entities might not be Actors. For instance, an object might be attributed to the completion of another activity.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#audience", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#audience", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies one or more entities that represent the total population of entities for which the object can considered to be relevant.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#content", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#content", + valueExpr: { + type: "NodeConstraint", + datatype: + "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString", + }, + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The content or textual representation of the Object encoded as a JSON string. By default, the value of content is HTML. The mediaType property can be used in the object to indicate a different content type. The content MAY be expressed using multiple language-tagged values. ", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#context", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#context", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Identifies the context within which the object exists or an activity was performed. The notion of "context" used is intentionally vague. The intended function is to serve as a means of grouping objects and activities that share a common originating context or purpose. An example could be all activities relating to a common project or event.', + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#name", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#name", + valueExpr: { + type: "NodeConstraint", + datatype: + "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString", + }, + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A simple, human-readable, plain-text name for the object. HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged values.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#endTime", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#dateTime", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The date and time describing the actual or expected ending time of the object. When used with an Activity object, for instance, the endTime property specifies the moment the activity concluded or is expected to conclude.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#generator", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#generator", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies the entity (e.g. an application) that generated the object. ", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#icon", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Image", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#icon", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates an entity that describes an icon for this object. The image should have an aspect ratio of one (horizontal) to one (vertical) and should be suitable for presentation at a small size.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#image", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Image", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#image", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates an entity that describes an image for this object. Unlike the icon property, there are no aspect ratio or display size limitations assumed.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#inReplyTo", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#inReplyTo", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates one or more entities for which this object is considered a response.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#location", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#location", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates one or more physical or logical locations associated with the object.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#preview", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#preview", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies an entity that provides a preview of this object.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#published", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#dateTime", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The date and time at which the object was published", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#replies", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Collection", + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies a Collection containing objects considered to be responses to this object.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#startTime", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#dateTime", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The date and time describing the actual or expected starting time of the object. When used with an Activity object, for instance, the startTime property specifies the moment the activity began or is scheduled to begin.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#summary", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#summary", + valueExpr: { + type: "NodeConstraint", + datatype: + "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString", + }, + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A natural language summarization of the object encoded as HTML. Multiple language tagged summaries MAY be provided.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#tag", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#tag", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'One or more "tags" that have been associated with an objects. A tag can be any kind of Object. The key difference between attachment and tag is that the former implies association by inclusion, while the latter implies associated by reference.', + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#updated", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#dateTime", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The date and time at which the object was updated", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#url", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#anyURI", + }, + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#url", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies one or more links to representations of the object", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#to", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#to", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies an entity considered to be part of the public primary audience of an Object", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#bto", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#bto", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies an Object that is part of the private primary audience of this Object.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#cc", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#cc", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies an Object that is part of the public secondary audience of this Object.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#bcc", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#bcc", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies one or more Objects that are part of the private secondary audience of this Object.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#mediaType", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "When used on a Link, identifies the MIME media type of the referenced resource. When used on an Object, identifies the MIME media type of the value of the content property. If not specified, the content property is assumed to contain text/html content.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#duration", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#duration", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: + "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'When the object describes a time-bound resource, such as an audio or video, a meeting, etc, the duration property indicates the object\'s approximate duration. The value MUST be expressed as an xsd:duration as defined by [ xmlschema11-2], section 3.3.6 (e.g. a period of 5 seconds is represented as "PT5S").', + }, + }, + ], + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Activity"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "An Activity is a subtype of Object that describes some form of action that may happen, is currently happening, or has already happened. The Activity type itself serves as an abstract base type for all types of activities. It is important to note that the Activity type itself does not carry any specific semantics about the kind of action being taken.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#actor", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#actor", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Describes one or more entities that either performed or are expected to perform the activity. Any single activity can have multiple actors. The actor MAY be specified using an indirect Link.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#object", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#object", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'When used within an Activity, describes the direct object of the activity. For instance, in the activity "John added a movie to his wishlist", the object of the activity is the movie added. When used within a Relationship describes the entity to which the subject is related.', + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#target", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#target", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Describes the indirect object, or target, of the activity. The precise meaning of the target is largely dependent on the type of action being described but will often be the object of the English preposition "to". For instance, in the activity "John added a movie to his wishlist", the target of the activity is John\'s wishlist. An activity can have more than one target.', + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#result", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#result", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Describes the result of the activity. For instance, if a particular action results in the creation of a new resource, the result property can be used to describe that new resource.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#origin", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#origin", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Describes an indirect object of the activity from which the activity is directed. The precise meaning of the origin is the object of the English preposition "from". For instance, in the activity "John moved an item to List B from List A", the origin of the activity is "List A". ', + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#instrument", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: + "https://www.w3.org/ns/activitystreams#instrument", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies one or more objects used (or to be used) in the completion of an Activity.", + }, + }, + ], + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Accept"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor accepts the object. The target property can be used in certain circumstances to indicate the context into which the object has been accepted.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Activity", + expression: "https://shaperepo.com/schemas/activitystreams#ActivityShape", + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Add", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#AddShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Add"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor has added the object to the target. If the target property is not explicitly specified, the target would need to be determined implicitly by context. The origin can be used to identify the context from which the object originated. ", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Announce", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#AnnounceShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Announce"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor is calling the target's attention the object. The origin typically has no defined meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Application", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ApplicationShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Application"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Describes a software application.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Arrive", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ArriveShape", + type: "EachOf", + expressions: [ + { + id: "https://shaperepo.com/schemas/activitystreams#IntransitiveActivityShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://www.w3.org/ns/activitystreams#IntransitiveActivity", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Instances of IntransitiveActivity are a subtype of Activity representing intransitive actions. The object property is therefore inappropriate for these activities.", + }, + }, + ], + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Arrive"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "An IntransitiveActivity that indicates that the actor has arrived at the location. The origin can be used to identify the context from which the actor originated. The target typically has no defined meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Article", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ArticleShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Article"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents any kind of multi-paragraph written work.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Audio", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#AudioShape", + type: "EachOf", + expressions: [ + { + id: "https://shaperepo.com/schemas/activitystreams#DocumentShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Document"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents a document of any kind.", + }, + }, + ], + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Audio"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents an audio document of any kind.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Block", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#BlockShape", + type: "EachOf", + expressions: [ + { + id: "https://shaperepo.com/schemas/activitystreams#IgnoreShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Ignore"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor is ignoring the object. The target and origin typically have no defined meaning.", + }, + }, + ], + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Block"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor is blocking the object. Blocking is a stronger form of Ignore. The typical use is to support social systems that allow one user to block activities or content of other users. The target and origin typically have no defined meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Collection", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#CollectionShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Collection"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A Collection is a subtype of Object that represents ordered or unordered sets of Object or Link instances. Refer to the Activity Streams 2.0 Core specification for a complete description of the Collection type. ", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#totalItems", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#nonNegativeInteger", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A non-negative integer specifying the total number of objects contained by the logical view of the collection. This number might not reflect the actual number of items serialized within the Collection object instance.", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#current", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#CollectionPage", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#current", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "In a paged Collection, indicates the page that contains the most recently updated member items.", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#first", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#CollectionPage", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#first", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "In a paged Collection, indicates the furthest preceeding page of items in the collection.", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#last", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#CollectionPage", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#last", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "In a paged Collection, indicates the furthest proceeding page of the collection.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#items", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#items", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies the items contained in a collection. The items might be ordered or unordered. ", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#CollectionPage", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#CollectionPageShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#CollectionShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#CollectionPage"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Used to represent distinct subsets of items from a Collection. Refer to the Activity Streams 2.0 Core for a complete description of the CollectionPage object.", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#partOf", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#partOf", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Collection", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies the Collection to which a CollectionPage objects items belong.", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#next", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#CollectionPage", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#next", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "In a paged Collection, indicates the next page of items.", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#prev", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#CollectionPage", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#next", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "In a paged Collection, identifies the previous page of items.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Create", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#CreateShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Create"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Indicates that the actor has created the object.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Delete", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#DeleteShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Delete"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor has deleted the object. If specified, the origin indicates the context from which the object was deleted.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Dislike", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#DislikeShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Dislike"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Indicates that the actor dislikes the object.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Document", + expression: "https://shaperepo.com/schemas/activitystreams#DocumentShape", + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Event", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#EventShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Event"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents any kind of event.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Flag", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#FlagShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Flag"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Indicates that the actor is "flagging" the object. Flagging is defined in the sense common to many social platforms as reporting content as being inappropriate for any number of reasons.', + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Follow", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#FollowShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Follow"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Indicates that the actor is "following" the object. Following is defined in the sense typically used within Social systems in which the actor is interested in any activity performed by or on the object. The target and origin typically have no defined meaning.', + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Group", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#GroupShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Group"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Represents a formal or informal collective of Actors.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Ignore", + expression: "https://shaperepo.com/schemas/activitystreams#IgnoreShape", + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Image", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ImageShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#DocumentShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Image"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "An image document of any kind", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#InstransitiveActivity", + expression: + "https://shaperepo.com/schemas/activitystreams#IntransitiveActivityShape", + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Invite", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#InviteShape", + type: "EachOf", + expressions: [ + { + id: "https://shaperepo.com/schemas/activitystreams#OfferShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Offer"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor is offering the object. If specified, the target indicates the entity to which the object is being offered.", + }, + }, + ], + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Invite"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A specialization of Offer in which the actor is extending an invitation for the object to the target.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Join", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#JoinShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Join"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor has joined the object. The target and origin typically have no defined meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Leave", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#LeaveShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Leave"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor has left the object. The target and origin typically have no meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Like", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#LikeShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Like"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor likes, recommends or endorses the object. The target and origin typically have no defined meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Link", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#LinkShape", + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Link"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A Link is an indirect, qualified reference to a resource identified by a URL. The fundamental model for links is established by [ RFC5988]. Many of the properties defined by the Activity Vocabulary allow values that are either instances of Object or Link. When a Link is used, it establishes a qualified relation connecting the subject (the containing object) to the resource identified by the href. Properties of the Link are properties of the reference as opposed to properties of the resource.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#href", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#anyURI", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The target resource pointed to by a Link.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#rel", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'A link relation associated with a Link. The value MUST conform to both the [HTML5] and [RFC5988] "link relation" definitions. In the [HTML5], any string not containing the "space" U+0020, "tab" (U+0009), "LF" (U+000A), "FF" (U+000C), "CR" (U+000D) or "," (U+002C) characters can be used as a valid link relation.', + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#mediaType", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "When used on a Link, identifies the MIME media type of the referenced resource. When used on an Object, identifies the MIME media type of the value of the content property. If not specified, the content property is assumed to contain text/html content.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#name", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#name", + valueExpr: { + type: "NodeConstraint", + datatype: + "http://www.w3.org/1999/02/22-rdf-syntax-ns#langString", + }, + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A simple, human-readable, plain-text name for the object. HTML markup MUST NOT be included. The name MAY be expressed using multiple language-tagged values.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#hreflang", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Hints as to the language used by the target resource. Value MUST be a [BCP47] Language-Tag.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#height", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#nonNegativeInteger", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "On a Link, specifies a hint as to the rendering height in device-independent pixels of the linked resource.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#width", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#nonNegativeInteger", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "On a Link, specifies a hint as to the rendering width in device-independent pixels of the linked resource.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#preview", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#preview", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Identifies an entity that provides a preview of this object.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Listen", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ListenShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Listen"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Indicates that the actor has listened to the object.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Mention", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#MentionShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#LinkShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Mention"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "A specialized Link that represents an @mention.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Move", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#MoveShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Move"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor has moved object from origin to target. If the origin or target are not specified, either can be determined by context.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Note", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#NoteShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Note"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Represents a short written work typically less than a single paragraph in length.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Object", + expression: "https://shaperepo.com/schemas/activitystreams#ObjectShape", + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Offer", + expression: "https://shaperepo.com/schemas/activitystreams#OfferShape", + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#OrderedCollection", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#OrderedCollectionShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#CollectionShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://www.w3.org/ns/activitystreams#OrderedCollection", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A subtype of Collection in which members of the logical collection are assumed to always be strictly ordered.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#OrderedCollectionPage", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#OrderedCollectionPageShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#OrderedCollectionShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://www.w3.org/ns/activitystreams#OrderedCollectionPage", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Used to represent ordered subsets of items from an OrderedCollection. Refer to the Activity Streams 2.0 Core for a complete description of the OrderedCollectionPage object.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#startIndex", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#nonNegativeInteger", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A non-negative integer value identifying the relative position within the logical view of a strictly ordered collection.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Organization", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#OrganizationShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Organization"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents an organization.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Page", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#PageShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#DocumentShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Page"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents a Web Page.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Person", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#PersonShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Person"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents an individual person.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Place", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#PlaceShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Place"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Represents a logical or physical location. See 5.3 Representing Places for additional information.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#accuracy", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#float", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Indicates the accuracy of position coordinates on a Place objects. Expressed in properties of percentage. e.g. "94.0" means "94.0% accurate".', + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#altitude", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#float", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Indicates the altitude of a place. The measurement units is indicated using the units property. If units is not specified, the default is assumed to be "m" indicating meters. ', + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#latitude", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#float", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The latitude of a place", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#latitude", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#float", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The longitude of a place", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#radius", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#float", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'The radius from the given latitude and longitude for a Place. The units is expressed by the units property. If units is not specified, the default is assumed to be "m" indicating "meters".', + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#unit", + valueExpr: { + type: "NodeConstraint", + values: [ + { + value: "cm", + type: "http://www.w3.org/2001/XMLSchema#string", + }, + { + value: "feet", + type: "http://www.w3.org/2001/XMLSchema#string", + }, + { + value: "inches", + type: "http://www.w3.org/2001/XMLSchema#string", + }, + { + value: "km", + type: "http://www.w3.org/2001/XMLSchema#string", + }, + { + value: "m", + type: "http://www.w3.org/2001/XMLSchema#string", + }, + { + value: "miles", + type: "http://www.w3.org/2001/XMLSchema#string", + }, + ], + }, + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#unit", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#anyURI", + }, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'Specifies the measurement units for the radius and altitude properties on a Place object. If not specified, the default is assumed to be "m" for "meters".', + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Profile", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ProfileShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Profile"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A Profile is a content object that describes another Object, typically used to describe Actor Type objects. The describes property is used to reference the object being described by the profile.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#describes", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "On a Profile object, the describes property identifies the object described by the Profile.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Question", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#QuestionShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#IntransitiveActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Question"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + " Represents a question being asked. Question objects are an extension of IntransitiveActivity. That is, the Question object is an Activity, but the direct object is the question itself and therefore it would not contain an object property. Either of the anyOf and oneOf properties MAY be used to express possible answers, but a Question object MUST NOT have both properties. ", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#oneOf", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#oneOf", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + " Identifies an exclusive option for a Question. Use of oneOf implies that the Question can have only a single answer. To indicate that a Question can have multiple answers, use anyOf.", + }, + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#anyOf", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#anyOf", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + " Identifies an inclusive option for a Question. Use of anyOf implies that the Question can have multiple answers. To indicate that a Question can have only one answer, use oneOf.", + }, + }, + ], + }, + ], + }, + { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#closed", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#closed", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: -1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#closed", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#dateTime", + }, + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#closed", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#boolean", + }, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that a question has been closed, and answers are no longer accepted.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Read", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ReadShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Read"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Indicates that the actor has read the object.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Reject", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#RejectShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Reject"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor is rejecting the object. The target and origin typically have no defined meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Relationship", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#RelationshipShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Relationship"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + " Describes a relationship between two individuals. The subject and object properties are used to identify the connected individuals. See 5.2 Representing Relationships Between Entities for additional information. ", + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#subject", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#subject", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'On a Relationship object, the subject property identifies one of the connected individuals. For instance, for a Relationship object describing "John is related to Sally", subject would refer to John.', + }, + }, + ], + }, + { + type: "OneOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#object", + valueExpr: + "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: 1, + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#object", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Link", + min: 0, + max: 1, + }, + ], + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + 'When used within an Activity, describes the direct object of the activity. For instance, in the activity "John added a movie to his wishlist", the object of the activity is the movie added. When used within a Relationship describes the entity to which the subject is related.', + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#relationship", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "On a Relationship object, the relationship property identifies the kind of relationship that exists between subject and object.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Remove", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#RemoveShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Remove"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor is removing the object. If specified, the origin indicates the context from which the object is being removed.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Service", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ServiceShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Service"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents a service of any kind.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#TentativeAccept", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#TentativeAcceptShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#AcceptShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#TentativeAccept"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A specialization of Accept indicating that the acceptance is tentative.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#TentativeReject", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#TentativeRejectShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#RejectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#TentativeReject"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A specialization of Reject in which the rejection is considered tentative.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Tombstone", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#TombstoneShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ObjectShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Tombstone"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "A Tombstone represents a content object that has been deleted. It can be used in Collections to signify that there used to be an object at this position, but it has been deleted.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#formerType", + valueExpr: "https://shaperepo.com/schemas/activitystreams#Object", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "On a Tombstone object, the formerType property identifies the type of the object that was deleted.", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/ns/activitystreams#deleted", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#dateTime", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "On a Tombstone object, the deleted property is a timestamp for when the object was deleted.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Travel", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#TravelShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#IntransitiveActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Travel"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor is traveling to target from origin. Travel is an IntransitiveObject whose actor specifies the direct object. If the target or origin are not specified, either can be determined by context.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Undo", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#UndoShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Undo"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + ' Indicates that the actor is undoing the object. In most cases, the object will be an Activity describing some previously performed action (for instance, a person may have previously "liked" an article but, for whatever reason, might choose to undo that like at some later point in time). The target and origin typically have no defined meaning.', + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Update", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#UpdateShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Update"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Indicates that the actor has updated the object. Note, however, that this vocabulary does not define a mechanism for describing the actual set of modifications made to object. The target and origin typically have no defined meaning.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#Video", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#VideoShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#DocumentShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#Video"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Represents a video document of any kind. ", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://shaperepo.com/schemas/activitystreams#View", + expression: { + id: "https://shaperepo.com/schemas/activitystreams#ViewShape", + type: "EachOf", + expressions: [ + "https://shaperepo.com/schemas/activitystreams#ActivityShape", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/ns/activitystreams#View"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Indicates that the actor has viewed the object.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + ], + "@context": "http://www.w3.org/ns/shex.jsonld", +}; + +/** + * ############################################ + * CARBON TRACKER + * ############################################ + */ +export const carbonTrackerShape: Schema = { + type: "Schema", + shapes: [ + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#CarbonMeasurement", + expression: { + id: "https://definitions.isum.io/schemas/carbon-tracker#CarbonMeasurementProperties", + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://definitions.isum.io/terms/carbon-tracker#CarbonMeasurement", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the type as a CarbonMeasurement", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://definitions.isum.io/terms/carbon-tracker#emitter", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#Organization", + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The organisation that emitted the carbon in this measurement", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/TR/owl-time/#time:hasBeginning", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#TimeInstance", + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The time this measurement began", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/TR/owl-time/#time:hasEnd", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#TimeInstance", + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The time this measurement ended", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://definitions.isum.io/terms/carbon-tracker#carbonEmitted", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#decimal", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The carbon emitted in this time period in kgCO2e", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2000/01/rdf-schema#label", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Carbon Measurement Label", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "ShapeAnd", + id: "https://definitions.isum.io/schemas/carbon-tracker#Company", + shapeExprs: [ + "https://definitions.isum.io/schemas/carbon-tracker#Organization", + { + type: "Shape", + expression: { + type: "TripleConstraint", + predicate: "https://schema.org/yearlyRevenue", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#integer", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The Company's turnover in the previous year in GBP", + }, + }, + ], + }, + }, + ], + }, + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#IndirectCarbonMeasurement", + expression: { + id: "https://definitions.isum.io/schemas/carbon-tracker#IndirectCarbonMeasurementProperties", + type: "EachOf", + expressions: [ + "https://definitions.isum.io/schemas/carbon-tracker#CarbonMeasurementProperties", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://definitions.isum.io/terms/carbon-tracker#IndirectCarbonMeasurement", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the type as an IndirectCarbonMeasurement", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://definitions.isum.io/terms/carbon-tracker#supplierCarbonEmissionSummary", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#OrganizationCarbonEmissionsSummary", + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The carbon emission summary for the supplier, if one exists", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://definitions.isum.io/terms/carbon-tracker#amountPurchasedInBritishPounds", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#decimal", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The amount purchased from this supplier in British pounds", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#Organization", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["http://www.w3.org/2006/vcard/ns#Organization"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the type as an Organization", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#n", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The name of the Organization", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://definitions.isum.io/terms/carbon-tracker#sector", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The Organization's industry sector", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://schema.org/numberOfEmployees", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#nonNegativeInteger", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The number of employees that belong to the Organization", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://schema.org/location", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The city and country where the Organization is headquartered", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2000/01/rdf-schema#label", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#string", + }, + min: 0, + max: 1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Organization Description", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#OrganizationCarbonEmissionsSummary", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://definitions.isum.io/terms/carbon-tracker#OrganizationCarbonEmissionsSummary", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "Defines the type as OrganizationCarbonEmissionsSummary", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "http://www.w3.org/2006/vcard/ns#org", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#Organization", + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The organization this summary summarizes", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/TR/owl-time/#time:hasBeginning", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#TimeInstance", + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The time this summary began", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/TR/owl-time/#time:hasEnd", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#TimeInstance", + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The time this summary ended", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://definitions.isum.io/terms/carbon-tracker#totalCarbonEmitted", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#decimal", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: + "The total carbon emitted in this time period in kgCO2e", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: + "https://definitions.isum.io/terms/carbon-tracker#hasCarbonMeasurements", + valueExpr: + "https://definitions.isum.io/schemas/carbon-tracker#CarbonMeasurement", + min: 0, + max: -1, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The carbon measurements that generated this summary", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#Scope1CarbonMeasurement", + expression: { + id: "https://definitions.isum.io/schemas/carbon-tracker#Scope1CarbonMeasurementProperties", + type: "EachOf", + expressions: [ + "https://definitions.isum.io/schemas/carbon-tracker#CarbonMeasurementProperties", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://definitions.isum.io/terms/carbon-tracker#Scope1CarbonMeasurement", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the type as a Scope1CarbonMeasurement", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#Scope2CarbonMeasurement", + expression: { + id: "https://definitions.isum.io/schemas/carbon-tracker#Scope2CarbonMeasurementProperties", + type: "EachOf", + expressions: [ + "https://definitions.isum.io/schemas/carbon-tracker#IndirectCarbonMeasurementProperties", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://definitions.isum.io/terms/carbon-tracker#Scope2CarbonMeasurement", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the type as a Scope2CarbonMeasurement", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#Scope3CarbonMeasurement", + expression: { + id: "https://definitions.isum.io/schemas/carbon-tracker#Scope3CarbonMeasurementProperties", + type: "EachOf", + expressions: [ + "https://definitions.isum.io/schemas/carbon-tracker#IndirectCarbonMeasurementProperties", + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: [ + "https://definitions.isum.io/terms/carbon-tracker#Scope3CarbonMeasurement", + ], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the type as a Scope3CarbonMeasurement", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + { + type: "Shape", + id: "https://definitions.isum.io/schemas/carbon-tracker#TimeInstance", + expression: { + type: "EachOf", + expressions: [ + { + type: "TripleConstraint", + predicate: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + valueExpr: { + type: "NodeConstraint", + values: ["https://www.w3.org/TR/owl-time/#time:Instant"], + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "Defines the type as an Instant", + }, + }, + ], + }, + { + type: "TripleConstraint", + predicate: "https://www.w3.org/TR/owl-time/#time:inXSDDate", + valueExpr: { + type: "NodeConstraint", + datatype: "http://www.w3.org/2001/XMLSchema#date", + }, + annotations: [ + { + type: "Annotation", + predicate: "http://www.w3.org/2000/01/rdf-schema#comment", + object: { + value: "The time of the instance in XSD Date.", + }, + }, + ], + }, + ], + }, + extra: ["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"], + }, + ], + "@context": "http://www.w3.org/ns/shex.jsonld", +}; diff --git a/packages/type-traverser/tsconfig.build.json b/packages/type-traverser/tsconfig.build.json new file mode 100644 index 0000000..ce7be9c --- /dev/null +++ b/packages/type-traverser/tsconfig.build.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["./src"] +} \ No newline at end of file diff --git a/packages/type-traverser/tutorialImages/ReturnTypeTooltip.png b/packages/type-traverser/tutorialImages/ReturnTypeTooltip.png new file mode 100644 index 0000000..1f8864b Binary files /dev/null and b/packages/type-traverser/tutorialImages/ReturnTypeTooltip.png differ diff --git a/packages/type-traverser/tutorialImages/TraveserDefinitionIntellisense.png b/packages/type-traverser/tutorialImages/TraveserDefinitionIntellisense.png new file mode 100644 index 0000000..45aaad8 Binary files /dev/null and b/packages/type-traverser/tutorialImages/TraveserDefinitionIntellisense.png differ diff --git a/packages/type-traverser/tutorialImages/ValidateTraverserTypesExample.png b/packages/type-traverser/tutorialImages/ValidateTraverserTypesExample.png new file mode 100644 index 0000000..6a2da96 Binary files /dev/null and b/packages/type-traverser/tutorialImages/ValidateTraverserTypesExample.png differ