diff --git a/package-lock.json b/package-lock.json index a4ac6eb8f..f218030fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4001,9 +4001,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -5873,9 +5873,9 @@ } }, "node_modules/@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", "dependencies": { "undici-types": "~6.20.0" } @@ -5998,9 +5998,9 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==" }, "node_modules/@vascosantos/moving-average": { "version": "1.1.0", @@ -6034,9 +6034,9 @@ } }, "node_modules/abortcontroller-polyfill": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.6.tgz", - "integrity": "sha512-Zypm+LjYdWAzvuypZvDN0smUJrhOurcuBWhhMRBExqVLRvdjp3Z9mASxKyq19K+meZMshwjjy5S0lkm388zE4Q==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", "dev": true }, "node_modules/accepts": { @@ -6548,9 +6548,9 @@ } }, "node_modules/assertion-tools": { - "version": "8.0.0-gamma.0", - "resolved": "https://registry.npmjs.org/assertion-tools/-/assertion-tools-8.0.0-gamma.0.tgz", - "integrity": "sha512-tUF2IcrddKhz2usRsgjrEGdfMuScz2P2nt8/9oJVb/NiSUp4l8i1nDDvmpAT3oompWLbd9HAxo2I0P4S4mJCYA==", + "version": "8.0.0-gamma.1", + "resolved": "https://registry.npmjs.org/assertion-tools/-/assertion-tools-8.0.0-gamma.1.tgz", + "integrity": "sha512-I4IHIiylrVFUoLy07qPxCbwwUk0Qpqfo0qL1cPBKcSY0e9b4+AHQoBLuSZkaE9rUy1wC+7vqBMikn4d/DW3FAw==", "dependencies": { "ethers": "^5.7.2", "jsonld": "^8.1.0", @@ -6740,13 +6740,13 @@ } }, "node_modules/bare-stream": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.4.2.tgz", - "integrity": "sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.1.tgz", + "integrity": "sha512-eVZbtKM+4uehzrsj49KtCy3Pbg7kO1pJ3SKZ1SFrIH/0pnj9scuGGgUlNDf/7qS8WKtGdiJY5Kyhs/ivYPTB/g==", "dev": true, "optional": true, "dependencies": { - "streamx": "^2.20.0" + "streamx": "^2.21.0" } }, "node_modules/base-x": { @@ -7236,9 +7236,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz", - "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -7247,6 +7247,21 @@ "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.2.tgz", + "integrity": "sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==", + "dependencies": { + "call-bind": "^1.0.8", + "get-intrinsic": "^1.2.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -7276,9 +7291,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "version": "1.0.30001688", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz", + "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==", "dev": true, "funding": [ { @@ -7776,9 +7791,9 @@ } }, "node_modules/componentsjs/node_modules/@types/node": { - "version": "18.19.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz", - "integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==", + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", "dependencies": { "undici-types": "~5.26.4" } @@ -8856,9 +8871,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dependencies": { "ms": "^2.1.3" }, @@ -9065,7 +9080,6 @@ "version": "8.0.3-gamma.7", "resolved": "https://registry.npmjs.org/dkg-evm-module/-/dkg-evm-module-8.0.3-gamma.7.tgz", "integrity": "sha512-cEjPz8c6vqwhsYiDx5ibIJ0xh9BZDvqtYHigaYf4gE26QaFJs6+NFFoQOSwwbaKmB7FKlSPHw0mOJASqVaWwbw==", - "license": "Apache-2.0", "dependencies": { "@openzeppelin/contracts": "^4.9.3", "@polkadot/api": "^11.0.3", @@ -9599,9 +9613,9 @@ "optional": true }, "node_modules/dkg.js": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/dkg.js/-/dkg.js-6.5.4.tgz", - "integrity": "sha512-zvTG/ehsX6dcjnUKErVs1d9tpfsID2DrDf0sYjKVyqeYcnKntGsRN4fHwrQLPLjkVCnjTvnr5R34eUu03BmGqg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/dkg.js/-/dkg.js-6.5.5.tgz", + "integrity": "sha512-MSVbGYAZkWtTPCdDG+PLAsy/lGff5IKvCnk0QEdZ6P6ieV6Hbq4HMJHIxpFVXlw7OIdwNaEEt5S+jtTfkVuqmg==", "dev": true, "dependencies": { "assertion-tools": "^2.2.1", @@ -10467,6 +10481,19 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -10562,9 +10589,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", + "version": "1.5.73", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", + "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", "dev": true }, "node_modules/elliptic": { @@ -10744,12 +10771,9 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { "node": ">= 0.4" } @@ -10793,7 +10817,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -12451,15 +12474,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13124,11 +13152,13 @@ } }, "node_modules/has-proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", - "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "peer": true, "dependencies": { - "call-bind": "^1.0.7" + "dunder-proto": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13733,13 +13763,13 @@ } }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13814,13 +13844,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.0.tgz", - "integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" }, "engines": { @@ -13879,12 +13909,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "peer": true, "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -13895,13 +13927,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "peer": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14103,14 +14136,14 @@ "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" }, "node_modules/is-regex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", - "integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "gopd": "^1.1.0", + "call-bound": "^1.0.2", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" }, @@ -14179,15 +14212,15 @@ } }, "node_modules/is-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.0.tgz", - "integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "has-symbols": "^1.0.3", - "safe-regex-test": "^1.0.3" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -14619,17 +14652,18 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", + "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", "dev": true, "peer": true, "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "reflect.getprototypeof": "^1.0.8", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -14762,9 +14796,9 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -14860,9 +14894,9 @@ } }, "node_modules/jsonld-context-parser/node_modules/@types/node": { - "version": "18.19.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz", - "integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==", + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", "dependencies": { "undici-types": "~5.26.4" } @@ -16197,6 +16231,14 @@ "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==" }, + "node_modules/math-intrinsics": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", + "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mathjs": { "version": "10.6.4", "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.6.4.tgz", @@ -16223,7 +16265,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-1.7.0.tgz", "integrity": "sha512-ok9uE7ekFh5+orI0dFT19KeY/y5P6ONp0dks8oo/KniyNK6mJ0zloL3+s6LiEQXW8VxQHwsfZslitL/R7MM9ew==", - "license": "BSD-3-Clause", "dependencies": { "@types/node": "^20.2.5" }, @@ -16232,10 +16273,9 @@ } }, "node_modules/mcl-wasm/node_modules/@types/node": { - "version": "20.17.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz", - "integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==", - "license": "MIT", + "version": "20.17.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz", + "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==", "dependencies": { "undici-types": "~6.19.2" } @@ -16243,8 +16283,7 @@ "node_modules/mcl-wasm/node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/md5.js": { "version": "1.3.5", @@ -17197,9 +17236,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "node_modules/normalize-path": { @@ -18938,19 +18977,20 @@ "dev": true }, "node_modules/reflect.getprototypeof": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", - "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz", + "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", + "dunder-proto": "^1.0.0", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "which-builtin-type": "^1.1.4" + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.0" }, "engines": { "node": ">= 0.4" @@ -19344,15 +19384,16 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -19382,15 +19423,15 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -19800,14 +19841,65 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -19963,8 +20055,7 @@ "node_modules/solady": { "version": "0.0.281", "resolved": "https://registry.npmjs.org/solady/-/solady-0.0.281.tgz", - "integrity": "sha512-pO/r0cVb6EXwAISE/cgcn1outhvkEKHEnVCSUTlRdIWDnl013CrUtMx8PbkDYfef2TrJB178TOA0jIBDVyjGBg==", - "license": "MIT" + "integrity": "sha512-pO/r0cVb6EXwAISE/cgcn1outhvkEKHEnVCSUTlRdIWDnl013CrUtMx8PbkDYfef2TrJB178TOA0jIBDVyjGBg==" }, "node_modules/solc": { "version": "0.8.26", @@ -20270,9 +20361,9 @@ } }, "node_modules/streamx": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", - "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", + "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", "dev": true, "dependencies": { "fast-fifo": "^1.3.2", @@ -20388,16 +20479,19 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -20407,16 +20501,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -21263,9 +21361,9 @@ } }, "node_modules/umzug/node_modules/type-fest": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz", - "integrity": "sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==", + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.1.tgz", + "integrity": "sha512-ojFL7eDMX2NF0xMbDwPZJ8sb7ckqtlAi1GsmgsFXvErT9kFTk1r0DuQKvrCh73M6D4nngeHJmvogF9OluXs7Hw==", "engines": { "node": ">=16" }, @@ -22182,25 +22280,25 @@ } }, "node_modules/which-builtin-type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", - "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", + "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -26038,9 +26136,9 @@ } }, "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "requires": { "@jridgewell/set-array": "^1.2.1", @@ -27559,9 +27657,9 @@ } }, "@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", "requires": { "undici-types": "~6.20.0" } @@ -27686,9 +27784,9 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==" }, "@vascosantos/moving-average": { "version": "1.1.0", @@ -27718,9 +27816,9 @@ } }, "abortcontroller-polyfill": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.6.tgz", - "integrity": "sha512-Zypm+LjYdWAzvuypZvDN0smUJrhOurcuBWhhMRBExqVLRvdjp3Z9mASxKyq19K+meZMshwjjy5S0lkm388zE4Q==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", "dev": true }, "accepts": { @@ -28108,9 +28206,9 @@ } }, "assertion-tools": { - "version": "8.0.0-gamma.0", - "resolved": "https://registry.npmjs.org/assertion-tools/-/assertion-tools-8.0.0-gamma.0.tgz", - "integrity": "sha512-tUF2IcrddKhz2usRsgjrEGdfMuScz2P2nt8/9oJVb/NiSUp4l8i1nDDvmpAT3oompWLbd9HAxo2I0P4S4mJCYA==", + "version": "8.0.0-gamma.1", + "resolved": "https://registry.npmjs.org/assertion-tools/-/assertion-tools-8.0.0-gamma.1.tgz", + "integrity": "sha512-I4IHIiylrVFUoLy07qPxCbwwUk0Qpqfo0qL1cPBKcSY0e9b4+AHQoBLuSZkaE9rUy1wC+7vqBMikn4d/DW3FAw==", "requires": { "ethers": "^5.7.2", "jsonld": "^8.1.0", @@ -28276,13 +28374,13 @@ } }, "bare-stream": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.4.2.tgz", - "integrity": "sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.1.tgz", + "integrity": "sha512-eVZbtKM+4uehzrsj49KtCy3Pbg7kO1pJ3SKZ1SFrIH/0pnj9scuGGgUlNDf/7qS8WKtGdiJY5Kyhs/ivYPTB/g==", "dev": true, "optional": true, "requires": { - "streamx": "^2.20.0" + "streamx": "^2.21.0" } }, "base-x": { @@ -28655,14 +28753,23 @@ } }, "call-bind-apply-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz", - "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", "requires": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, + "call-bound": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.2.tgz", + "integrity": "sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==", + "requires": { + "call-bind": "^1.0.8", + "get-intrinsic": "^1.2.5" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -28683,9 +28790,9 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, "caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "version": "1.0.30001688", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001688.tgz", + "integrity": "sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==", "dev": true }, "canonicalize": { @@ -29057,9 +29164,9 @@ }, "dependencies": { "@types/node": { - "version": "18.19.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz", - "integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==", + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", "requires": { "undici-types": "~5.26.4" } @@ -29955,9 +30062,9 @@ "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==" }, "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "requires": { "ms": "^2.1.3" } @@ -30496,9 +30603,9 @@ } }, "dkg.js": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/dkg.js/-/dkg.js-6.5.4.tgz", - "integrity": "sha512-zvTG/ehsX6dcjnUKErVs1d9tpfsID2DrDf0sYjKVyqeYcnKntGsRN4fHwrQLPLjkVCnjTvnr5R34eUu03BmGqg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/dkg.js/-/dkg.js-6.5.5.tgz", + "integrity": "sha512-MSVbGYAZkWtTPCdDG+PLAsy/lGff5IKvCnk0QEdZ6P6ieV6Hbq4HMJHIxpFVXlw7OIdwNaEEt5S+jtTfkVuqmg==", "dev": true, "requires": { "assertion-tools": "^2.2.1", @@ -31158,6 +31265,16 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" }, + "dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "requires": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -31254,9 +31371,9 @@ } }, "electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", + "version": "1.5.73", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz", + "integrity": "sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==", "dev": true }, "elliptic": { @@ -31411,12 +31528,9 @@ } }, "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" }, "es-errors": { "version": "1.3.0", @@ -31451,7 +31565,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, "requires": { "es-errors": "^1.3.0" } @@ -32746,15 +32859,20 @@ "dev": true }, "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", + "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", "requires": { + "call-bind-apply-helpers": "^1.0.1", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.0.0" } }, "get-iterator": { @@ -33267,11 +33385,13 @@ } }, "has-proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", - "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "peer": true, "requires": { - "call-bind": "^1.0.7" + "dunder-proto": "^1.0.0" } }, "has-symbols": { @@ -33721,13 +33841,13 @@ } }, "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" } }, "is-array-buffer": { @@ -33775,13 +33895,13 @@ } }, "is-boolean-object": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.0.tgz", - "integrity": "sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, @@ -33805,23 +33925,26 @@ } }, "is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "peer": true, "requires": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "peer": true, "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" } }, "is-electron": { @@ -33953,14 +34076,14 @@ "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" }, "is-regex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.0.tgz", - "integrity": "sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", - "gopd": "^1.1.0", + "call-bound": "^1.0.2", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } @@ -33999,15 +34122,15 @@ } }, "is-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.0.tgz", - "integrity": "sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", - "has-symbols": "^1.0.3", - "safe-regex-test": "^1.0.3" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" } }, "is-typed-array": { @@ -34365,17 +34488,18 @@ } }, "iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", + "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", "dev": true, "peer": true, "requires": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "reflect.getprototypeof": "^1.0.8", + "set-function-name": "^2.0.2" } }, "javascript-natural-sort": { @@ -34473,9 +34597,9 @@ } }, "jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true }, "json-buffer": { @@ -34576,9 +34700,9 @@ }, "dependencies": { "@types/node": { - "version": "18.19.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz", - "integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==", + "version": "18.19.68", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", + "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", "requires": { "undici-types": "~5.26.4" } @@ -35595,6 +35719,11 @@ "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==" }, + "math-intrinsics": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.0.0.tgz", + "integrity": "sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==" + }, "mathjs": { "version": "10.6.4", "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-10.6.4.tgz", @@ -35620,9 +35749,9 @@ }, "dependencies": { "@types/node": { - "version": "20.17.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz", - "integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==", + "version": "20.17.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz", + "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==", "requires": { "undici-types": "~6.19.2" } @@ -36374,9 +36503,9 @@ } }, "node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "normalize-path": { @@ -37739,19 +37868,20 @@ "dev": true }, "reflect.getprototypeof": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", - "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz", + "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", + "dunder-proto": "^1.0.0", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "which-builtin-type": "^1.1.4" + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.0" } }, "regenerator-runtime": { @@ -38046,15 +38176,16 @@ } }, "safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, @@ -38064,15 +38195,15 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" } }, "safe-stable-stringify": { @@ -38393,14 +38524,47 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "requires": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" } }, "signal-exit": { @@ -38750,9 +38914,9 @@ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" }, "streamx": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", - "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", + "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", "dev": true, "requires": { "bare-events": "^2.2.0", @@ -38847,26 +39011,30 @@ } }, "string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" } }, "string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } @@ -39507,9 +39675,9 @@ }, "dependencies": { "type-fest": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz", - "integrity": "sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==" + "version": "4.30.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.1.tgz", + "integrity": "sha512-ojFL7eDMX2NF0xMbDwPZJ8sb7ckqtlAi1GsmgsFXvErT9kFTk1r0DuQKvrCh73M6D4nngeHJmvogF9OluXs7Hw==" } } }, @@ -40266,25 +40434,25 @@ } }, "which-builtin-type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", - "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", + "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" } }, "which-collection": { diff --git a/src/commands/protocols/get/receiver/v1.0.0/v1-0-0-handle-get-request-command.js b/src/commands/protocols/get/receiver/v1.0.0/v1-0-0-handle-get-request-command.js index 173b42767..9b57dfba4 100644 --- a/src/commands/protocols/get/receiver/v1.0.0/v1-0-0-handle-get-request-command.js +++ b/src/commands/protocols/get/receiver/v1.0.0/v1-0-0-handle-get-request-command.js @@ -4,6 +4,7 @@ import { NETWORK_MESSAGE_TYPES, OPERATION_ID_STATUS, TRIPLES_VISIBILITY, + TRIPLE_STORE_REPOSITORY, } from '../../../../../constants/constants.js'; class HandleGetRequestCommand extends HandleProtocolMessageCommand { @@ -36,6 +37,7 @@ class HandleGetRequestCommand extends HandleProtocolMessageCommand { knowledgeAssetId, ual, includeMetadata, + subjectUAL, } = commandData; // if (paranetUAL) { @@ -97,7 +99,33 @@ class HandleGetRequestCommand extends HandleProtocolMessageCommand { // }; // } // } + // TODO: Add telemetry events and fix old wrong ones in here + if (subjectUAL) { + const subjectUALPairs = await this.tripleStoreService.findAllSubjectsWithGraphNames( + TRIPLE_STORE_REPOSITORY.DKG, + ual, + ); + if (subjectUALPairs.subjectUALPairs?.length) { + await this.operationService.markOperationAsCompleted( + operationId, + blockchain, + subjectUALPairs, + [ + OPERATION_ID_STATUS.GET.GET_LOCAL_END, + OPERATION_ID_STATUS.GET.GET_END, + OPERATION_ID_STATUS.COMPLETED, + ], + ); + } + + return subjectUALPairs.subjectUALPairs?.length + ? { messageType: NETWORK_MESSAGE_TYPES.RESPONSES.ACK, messageData: subjectUALPairs } + : { + messageType: NETWORK_MESSAGE_TYPES.RESPONSES.NACK, + messageData: { errorMessage: `Unable to find assertion ${ual}` }, + }; + } const promises = []; this.operationIdService.emitChangeEvent( OPERATION_ID_STATUS.GET.GET_REMOTE_GET_ASSERTION_START, diff --git a/src/commands/protocols/get/sender/get-schedule-messages-command.js b/src/commands/protocols/get/sender/get-schedule-messages-command.js index d59bb6897..1433cbacc 100644 --- a/src/commands/protocols/get/sender/get-schedule-messages-command.js +++ b/src/commands/protocols/get/sender/get-schedule-messages-command.js @@ -19,6 +19,7 @@ class GetScheduleMessagesCommand extends ProtocolScheduleMessagesCommand { knowledgeAssetId: command.data.knowledgeAssetId, includeMetadata: command.data.includeMetadata, ual: command.data.ual, + subjectUAL: command.data.subjectUAL, assetSync: command.data.assetSync, paranetSync: command.data.paranetSync, paranetTokenId: command.data.paranetTokenId, diff --git a/src/commands/protocols/get/sender/local-get-command.js b/src/commands/protocols/get/sender/local-get-command.js index 0e501025f..b1552a57f 100644 --- a/src/commands/protocols/get/sender/local-get-command.js +++ b/src/commands/protocols/get/sender/local-get-command.js @@ -1,5 +1,10 @@ import Command from '../../../command.js'; -import { OPERATION_ID_STATUS, ERROR_TYPE } from '../../../../constants/constants.js'; +import { + OPERATION_ID_STATUS, + ERROR_TYPE, + TRIPLES_VISIBILITY, + TRIPLE_STORE_REPOSITORY, +} from '../../../../constants/constants.js'; class LocalGetCommand extends Command { constructor(ctx) { @@ -28,6 +33,8 @@ class LocalGetCommand extends Command { contract, knowledgeCollectionId, knowledgeAssetId, + subjectUAL, + ual, contentType, } = command.data; await this.operationIdService.updateOperationIdStatus( @@ -36,122 +43,158 @@ class LocalGetCommand extends Command { OPERATION_ID_STATUS.GET.GET_LOCAL_START, ); - // const response = {}; - - // if (paranetUAL) { - // const paranetRepository = this.paranetService.getParanetRepositoryName(paranetUAL); - - // const ual = this.ualService.deriveUAL(blockchain, contract, tokenId); - // const syncedAssetRecord = - // await this.repositoryModuleManager.getParanetSyncedAssetRecordByUAL(ual); - - // const nquads = await this.tripleStoreService.getAssertion( - // paranetRepository, - // syncedAssetRecord.publicAssertionId, - // ); - - // let privateNquads; - // if (syncedAssetRecord.privateAssertionId) { - // privateNquads = await this.tripleStoreService.getAssertion( - // paranetRepository, - // syncedAssetRecord.privateAssertionId, - // ); - // } - - // if (nquads?.length) { - // response.assertion = nquads; - // if (privateNquads?.length) { - // response.privateAssertion = privateNquads; - // } - // } else { - // this.handleError( - // operationId, - // blockchain, - // `Couldn't find locally asset with ${ual} in paranet ${paranetUAL}`, - // this.errorType, - // ); - // } - - // await this.operationService.markOperationAsCompleted( - // operationId, - // blockchain, - // response, - // [ - // OPERATION_ID_STATUS.GET.GET_LOCAL_END, - // OPERATION_ID_STATUS.GET.GET_END, - // OPERATION_ID_STATUS.COMPLETED, - // ], - // ); - - // return Command.empty(); - // } - - // else { - - const promises = []; - this.operationIdService.emitChangeEvent( - OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_START, - operationId, - blockchain, - ); - const assertionPromise = this.tripleStoreService - .getAssertion( + if (subjectUAL) { + // const response = {}; + + // if (paranetUAL) { + // const paranetRepository = this.paranetService.getParanetRepositoryName(paranetUAL); + + // const ual = this.ualService.deriveUAL(blockchain, contract, tokenId); + // const syncedAssetRecord = + // await this.repositoryModuleManager.getParanetSyncedAssetRecordByUAL(ual); + + // const nquads = await this.tripleStoreService.getAssertion( + // paranetRepository, + // syncedAssetRecord.publicAssertionId, + // ); + + // let privateNquads; + // if (syncedAssetRecord.privateAssertionId) { + // privateNquads = await this.tripleStoreService.getAssertion( + // paranetRepository, + // syncedAssetRecord.privateAssertionId, + // ); + // } + + // if (nquads?.length) { + // response.assertion = nquads; + // if (privateNquads?.length) { + // response.privateAssertion = privateNquads; + // } + // } else { + // this.handleError( + // operationId, + // blockchain, + // `Couldn't find locally asset with ${ual} in paranet ${paranetUAL}`, + // this.errorType, + // ); + // } + + // await this.operationService.markOperationAsCompleted( + // operationId, + // blockchain, + // response, + // [ + // OPERATION_ID_STATUS.GET.GET_LOCAL_END, + // OPERATION_ID_STATUS.GET.GET_END, + // OPERATION_ID_STATUS.COMPLETED, + // ], + // ); + + // return Command.empty(); + // } + + // else { + + this.operationIdService.emitChangeEvent( + OPERATION_ID_STATUS.GET.GET_LOCAL_GET_SUBJECT_UAL_START, + operationId, blockchain, - contract, - knowledgeCollectionId, - knowledgeAssetId, - contentType, - ) - .then((result) => { - this.operationIdService.emitChangeEvent( - OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_END, + ); + // TODO: Rename this to better reflect content + const subjectUALPairs = await this.tripleStoreService.findAllSubjectsWithGraphNames( + TRIPLE_STORE_REPOSITORY.DKG, + ual, + ); + this.operationIdService.emitChangeEvent( + OPERATION_ID_STATUS.GET.GET_LOCAL_GET_SUBJECT_UAL_START, + operationId, + blockchain, + ); + if (subjectUALPairs.subjectUALPairs?.length) { + await this.operationService.markOperationAsCompleted( operationId, blockchain, + subjectUALPairs, + [ + OPERATION_ID_STATUS.GET.GET_LOCAL_GET_SUBJECT_UAL_START, + OPERATION_ID_STATUS.GET.GET_LOCAL_END, + OPERATION_ID_STATUS.GET.GET_END, + OPERATION_ID_STATUS.COMPLETED, + ], ); - return result; - }); - promises.push(assertionPromise); - - if (includeMetadata) { + return Command.empty(); + } + } else { + const promises = []; this.operationIdService.emitChangeEvent( - OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_METADATA_START, + OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_START, operationId, blockchain, ); - const metadataPromise = this.tripleStoreService - .getAssertionMetadata(blockchain, contract, knowledgeCollectionId, knowledgeAssetId) + const assertionPromise = this.tripleStoreService + .getAssertion( + blockchain, + contract, + knowledgeCollectionId, + knowledgeAssetId, + contentType ?? TRIPLES_VISIBILITY.ALL, + ) .then((result) => { this.operationIdService.emitChangeEvent( - OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_METADATA_END, + OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_END, operationId, blockchain, ); return result; }); - promises.push(metadataPromise); - } - - const [assertion, metadata] = await Promise.all(promises); + promises.push(assertionPromise); - const responseData = { - assertion, - ...(includeMetadata && metadata && { metadata }), - }; - if (assertion.length) { - await this.operationService.markOperationAsCompleted( - operationId, - blockchain, - responseData, - [ - OPERATION_ID_STATUS.GET.GET_LOCAL_END, - OPERATION_ID_STATUS.GET.GET_END, - OPERATION_ID_STATUS.COMPLETED, - ], - ); + if (includeMetadata) { + this.operationIdService.emitChangeEvent( + OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_METADATA_START, + operationId, + blockchain, + ); + const metadataPromise = this.tripleStoreService + .getAssertionMetadata( + blockchain, + contract, + knowledgeCollectionId, + knowledgeAssetId, + ) + .then((result) => { + this.operationIdService.emitChangeEvent( + OPERATION_ID_STATUS.GET.GET_LOCAL_GET_ASSERTION_METADATA_END, + operationId, + blockchain, + ); + return result; + }); + promises.push(metadataPromise); + } + + const [assertion, metadata] = await Promise.all(promises); + + const responseData = { + assertion, + ...(includeMetadata && metadata && { metadata }), + }; + if (assertion.length) { + await this.operationService.markOperationAsCompleted( + operationId, + blockchain, + responseData, + [ + OPERATION_ID_STATUS.GET.GET_LOCAL_END, + OPERATION_ID_STATUS.GET.GET_END, + OPERATION_ID_STATUS.COMPLETED, + ], + ); - return Command.empty(); + return Command.empty(); + } } - // } await this.operationIdService.updateOperationIdStatus( operationId, diff --git a/src/commands/protocols/get/sender/v1.0.0/v1-0-0-get-request-command.js b/src/commands/protocols/get/sender/v1.0.0/v1-0-0-get-request-command.js index 9a453f5e5..bc8c31fa4 100644 --- a/src/commands/protocols/get/sender/v1.0.0/v1-0-0-get-request-command.js +++ b/src/commands/protocols/get/sender/v1.0.0/v1-0-0-get-request-command.js @@ -45,6 +45,7 @@ class GetRequestCommand extends ProtocolRequestCommand { knowledgeAssetId, includeMetadata, ual, + subjectUAL, paranetUAL, paranetId, } = command.data; @@ -56,6 +57,7 @@ class GetRequestCommand extends ProtocolRequestCommand { knowledgeAssetId, includeMetadata, ual, + subjectUAL, paranetUAL, paranetId, }; diff --git a/src/constants/constants.js b/src/constants/constants.js index 1c64dbd46..72234bcce 100644 --- a/src/constants/constants.js +++ b/src/constants/constants.js @@ -669,6 +669,8 @@ export const OPERATION_ID_STATUS = { GET_FIND_NODES_PROCESS_FOUND_NODES_START: 'GET_FIND_NODES_PROCESS_FOUND_NODES_START', GET_FIND_NODES_PROCESS_FOUND_NODES_END: 'GET_FIND_NODES_PROCESS_FOUND_NODES_END', GET_END: 'GET_END', + GET_LOCAL_GET_SUBJECT_UAL_START: 'GET_LOCAL_GET_SUBJECT_UAL_START', + GET_LOCAL_GET_SUBJECT_UAL_END: 'GET_LOCAL_GET_SUBJECT_UAL_END', }, QUERY: { QUERY_INIT_START: 'QUERY_INIT_START', diff --git a/src/controllers/http-api/v0/get-http-api-controller-v0.js b/src/controllers/http-api/v0/get-http-api-controller-v0.js index ab6f87b29..4b429108e 100644 --- a/src/controllers/http-api/v0/get-http-api-controller-v0.js +++ b/src/controllers/http-api/v0/get-http-api-controller-v0.js @@ -42,7 +42,7 @@ class GetController extends BaseController { let knowledgeCollectionId; let knowledgeAssetId; try { - const { id, paranetUAL, includeMetadata, contentType } = req.body; + const { id, paranetUAL, includeMetadata, subjectUAL, contentType } = req.body; ({ blockchain, contract, knowledgeCollectionId, knowledgeAssetId } = this.ualService.resolveUAL(id)); @@ -64,6 +64,7 @@ class GetController extends BaseController { contract, knowledgeCollectionId, knowledgeAssetId, + subjectUAL, operationId, paranetUAL, contentType: contentType ?? TRIPLES_VISIBILITY.ALL, diff --git a/src/controllers/http-api/v0/request-schema/get-schema-v0.js b/src/controllers/http-api/v0/request-schema/get-schema-v0.js index 6de06ffc3..135701863 100644 --- a/src/controllers/http-api/v0/request-schema/get-schema-v0.js +++ b/src/controllers/http-api/v0/request-schema/get-schema-v0.js @@ -18,5 +18,8 @@ export default () => ({ paranetUAL: { type: ['string', 'null'], }, + subjectUAL: { + type: 'boolean', + }, }, }); diff --git a/src/controllers/http-api/v1/finality-http-api-controller-v1.js b/src/controllers/http-api/v1/finality-http-api-controller-v1.js index 65336125c..a7d97c645 100644 --- a/src/controllers/http-api/v1/finality-http-api-controller-v1.js +++ b/src/controllers/http-api/v1/finality-http-api-controller-v1.js @@ -15,7 +15,6 @@ class FinalityController extends BaseController { const { ual } = req.query; const finality = await this.repositoryModuleManager.getFinalityAcksCount(ual || ''); - console.log(finality); if (typeof finality !== 'number') return this.returnResponse(res, 400, { diff --git a/src/controllers/http-api/v1/get-http-api-controller-v1.js b/src/controllers/http-api/v1/get-http-api-controller-v1.js index ab6f87b29..226daa765 100644 --- a/src/controllers/http-api/v1/get-http-api-controller-v1.js +++ b/src/controllers/http-api/v1/get-http-api-controller-v1.js @@ -42,7 +42,7 @@ class GetController extends BaseController { let knowledgeCollectionId; let knowledgeAssetId; try { - const { id, paranetUAL, includeMetadata, contentType } = req.body; + const { id, paranetUAL, includeMetadata, contentType, subjectUAL } = req.body; ({ blockchain, contract, knowledgeCollectionId, knowledgeAssetId } = this.ualService.resolveUAL(id)); @@ -62,6 +62,7 @@ class GetController extends BaseController { includeMetadata, blockchain, contract, + subjectUAL, knowledgeCollectionId, knowledgeAssetId, operationId, diff --git a/src/controllers/rpc/get-rpc-controller.js b/src/controllers/rpc/get-rpc-controller.js index 571d1511e..92b9fe8aa 100644 --- a/src/controllers/rpc/get-rpc-controller.js +++ b/src/controllers/rpc/get-rpc-controller.js @@ -34,6 +34,7 @@ class GetController extends BaseController { knowledgeCollectionId: message.data.knowledgeCollectionId, knowledgeAssetId: message.data.knowledgeAssetId, includeMetadata: message.data.includeMetadata, + subjectUAL: message.data.subjectUAL, state: message.data.state ?? DEFAULT_GET_STATE, paranetUAL: message.data.paranetUAL, paranetId: message.data.paranetId, diff --git a/src/modules/triple-store/implementation/ot-triple-store.js b/src/modules/triple-store/implementation/ot-triple-store.js index 2051af4f3..00e6cc55b 100644 --- a/src/modules/triple-store/implementation/ot-triple-store.js +++ b/src/modules/triple-store/implementation/ot-triple-store.js @@ -476,19 +476,31 @@ class OtTripleStore { FILTER(STRSTARTS(STR(?g), "${ual}")) }`; - this.select(repository, query); + return this.select(repository, query); } async findAllSubjectsWithGraphNames(repository, ual) { const query = ` - SELECT DISTINCT ?s ?g - WHERE { - GRAPH ?g { - ?s ?p ?o - } - FILTER(STRSTARTS(STR(?g), "${ual}")) - }`; - this.select(repository, query); + SELECT DISTINCT ?s ?g + WHERE { + GRAPH ?g { + ?s ?p ?o + } + FILTER(STRSTARTS(STR(?g), "${ual}") && STRENDS(STR(?g), "${TRIPLES_VISIBILITY.PUBLIC}")) + } + ORDER BY ?g`; + return this.select(repository, query); + } + + async getKCPrivateAssertionIdentifierTriple(repository, ual) { + const query = ` + CONSTRUCT {?s ?p ?o .} + WHERE { + GRAPH <${ual}/public> { + ?s ?p ?o + } + }`; + return this.construct(repository, query); } async construct(repository, query) { diff --git a/src/modules/triple-store/triple-store-module-manager.js b/src/modules/triple-store/triple-store-module-manager.js index 054cdb655..c2e7056a2 100644 --- a/src/modules/triple-store/triple-store-module-manager.js +++ b/src/modules/triple-store/triple-store-module-manager.js @@ -259,13 +259,20 @@ class TripleStoreModuleManager extends BaseModuleManager { async findAllSubjectsWithGraphNames(implementationName, repository, ual) { if (this.getImplementation(implementationName)) { return this.getImplementation(implementationName).module.findAllSubjectsWithGraphNames( - implementationName, repository, ual, ); } } + async getKCPrivateAssertionIdentifierTriple(implementationName, repository, ual) { + if (this.getImplementation(implementationName)) { + return this.getImplementation( + implementationName, + ).module.getKCPrivateAssertionIdentifierTriple(repository, ual); + } + } + getName() { return 'tripleStore'; } diff --git a/src/service/data-service.js b/src/service/data-service.js index 0e1a8c903..be0863a1d 100644 --- a/src/service/data-service.js +++ b/src/service/data-service.js @@ -95,6 +95,8 @@ class DataService { return this.cryptoService.sha256EncodePacked(['string'], [string]); } + // We asume clients in certin way for assing UALs to work + // TODO: Move this to assertion-tools splitConnectedArrays(publicTriples) { const groupedPublic = []; let currentSubject = publicTriples[0].split(' ')[0]; @@ -129,6 +131,22 @@ class DataService { return groupedPublic; } + + insertStringInSortedArray(array, str) { + // Assuming triplesArray is already sorted + let left = 0; + let right = array.length; + while (left < right) { + const mid = Math.floor((left + right) / 2); + if (array[mid].localeCompare(str) < 0) { + left = mid + 1; + } else { + right = mid; + } + } + array.splice(left, 0, str); + return left; + } } export default DataService; diff --git a/src/service/operation-id-service.js b/src/service/operation-id-service.js index 658d6359b..81b58899c 100644 --- a/src/service/operation-id-service.js +++ b/src/service/operation-id-service.js @@ -71,7 +71,6 @@ class OperationIdService { response.data = JSON.stringify({ errorMessage, errorType }); await this.removeOperationIdCache(operationId); } - if (errorType) { this.emitChangeEvent(errorType, operationId, blockchain, errorMessage, errorType); } else { diff --git a/src/service/triple-store-service.js b/src/service/triple-store-service.js index 0cc782a75..b23c86132 100644 --- a/src/service/triple-store-service.js +++ b/src/service/triple-store-service.js @@ -1,10 +1,13 @@ /* eslint-disable no-await-in-loop */ import { setTimeout } from 'timers/promises'; +import { kcTools } from 'assertion-tools'; import { BASE_NAMED_GRAPHS, TRIPLE_STORE_REPOSITORY, TRIPLES_VISIBILITY, + PRIVATE_RESOURCE_PREDICATE, + PRIVATE_HASH_SUBJECT_PREFIX, } from '../constants/constants.js'; class TripleStoreService { @@ -17,6 +20,7 @@ class TripleStoreService { this.ualService = ctx.ualService; this.dataService = ctx.dataService; this.paranetService = ctx.paranetService; + this.cryptoService = ctx.cryptoService; } initializeRepositories() { @@ -56,66 +60,141 @@ class TripleStoreService { // knowledgeAssetsUALs.map((ual) => `<${ual}>`), // ); // const unifiedGraphTriples = [...triples, ...tripleAnnotations]; - const publicKnowledgeAssetsTriples = this.dataService.splitConnectedArrays( - triples.public ?? triples, - ); - - const publicKnowledgeAssetsUALs = []; - - for (let i = 1; i <= publicKnowledgeAssetsTriples.length; i += 1) { - publicKnowledgeAssetsUALs.push(`${knowledgeCollectionUAL}/${i}`); - } const promises = []; + const publicAssertion = triples.public ?? triples; - if (triples.private?.length && !existsInNamedGraphs) { - const privateKnowledgeAssetsTriples = this.dataService.groupTriplesBySubject( - triples.private, - ); - const privateKnowledgeAssetsUALs = []; - let publicIndex = 0; - let privateIndex = 0; - while ( - publicIndex < publicKnowledgeAssetsTriples.length && - privateIndex < privateKnowledgeAssetsTriples.length - ) { - // const [privateSubject] = privateKnowledgeAssetsTriples[privateIndex][0].split(' '); - // Check if first triple is content or private existence identifier - if ( - this.dataService.quadsContainsPrivateRepresentations( - publicKnowledgeAssetsTriples[publicIndex], - ) - ) { - privateKnowledgeAssetsUALs.push(publicKnowledgeAssetsUALs[publicIndex]); - privateIndex += 1; - } - publicIndex += 1; + const filteredPublic = []; + const privateHashTriples = []; + publicAssertion.forEach((triple) => { + if (triple.includes(PRIVATE_RESOURCE_PREDICATE)) { + privateHashTriples.push(triple); + } else { + filteredPublic.push(triple); } + }); - if (privateKnowledgeAssetsUALs.length > 0) { - promises.push( - this.tripleStoreModuleManager.createKnowledgeCollectionNamedGraphs( - this.repositoryImplementations[repository], - repository, - privateKnowledgeAssetsUALs, - privateKnowledgeAssetsTriples, - TRIPLES_VISIBILITY.PRIVATE, - ), + const publicKnowledgeAssetsTriplesGrouped = kcTools.groupNquadsBySubject( + filteredPublic, + true, + ); + + const publicKnowledgeAssetsUALs = publicKnowledgeAssetsTriplesGrouped.map( + (_, index) => `${knowledgeCollectionUAL}/${index + 1}`, + ); + + const publicSubjectHashMap = publicKnowledgeAssetsTriplesGrouped.reduce( + (map, group, index) => { + const [publicSubject] = group[0].split(' '); + const publicSubjectHash = this.cryptoService.sha256(publicSubject.slice(1, -1)); + map.set(publicSubjectHash, index); + return map; + }, + new Map(), + ); + const sortedPrivateRepresentationTriples = []; + for (const privateHashTriple of privateHashTriples) { + const privateHash = privateHashTriple + .split(' ')[0] + .slice(PRIVATE_HASH_SUBJECT_PREFIX.length + 1, -1); + if (publicSubjectHashMap.has(privateHash)) { + const publicIndex = publicSubjectHashMap.get(privateHash); + this.dataService.insertStringInSortedArray( + publicKnowledgeAssetsTriplesGrouped[publicIndex], + privateHashTriple, ); + } else { + // If there is no public match add it as new KA at the end + sortedPrivateRepresentationTriples.push(privateHashTriple); } } + const startIndexForPrivateKnowledgeAssetsWithoutPublicPair = + publicKnowledgeAssetsUALs.length; + // Add private hashes without public pair to the end + publicKnowledgeAssetsTriplesGrouped.push( + ...sortedPrivateRepresentationTriples.map((triple) => [triple]), + ); + publicKnowledgeAssetsUALs.push( + ...sortedPrivateRepresentationTriples.map( + (_, index) => + `${knowledgeCollectionUAL}/${ + startIndexForPrivateKnowledgeAssetsWithoutPublicPair + index + 1 + }`, + ), + ); + if (!existsInNamedGraphs) { promises.push( this.tripleStoreModuleManager.createKnowledgeCollectionNamedGraphs( this.repositoryImplementations[repository], repository, publicKnowledgeAssetsUALs, - publicKnowledgeAssetsTriples, + publicKnowledgeAssetsTriplesGrouped, TRIPLES_VISIBILITY.PUBLIC, ), ); + + if (triples.private?.length) { + const privateKnowledgeAssetsTriplesGrouped = kcTools.groupNquadsBySubject( + triples.private, + true, + ); + + const privateKnowledgeAssetsUALs = []; + + // const privateSubjectHashMap = privateKnowledgeAssetsTriplesGrouped.reduce( + // (map, group, index) => { + // const [privateSubject] = group[0].split(' '); + // const privateSubjectHash = privateSubject.slice(1, -1); + // map.set(privateSubjectHash, index); + // return map; + // }, + // new Map(), ); + + const privateRepresentationTriplesSubjectMap = + sortedPrivateRepresentationTriples.reduce((map, triple, index) => { + const privateHashedSubject = triple + .split(' ')[0] + .slice(PRIVATE_HASH_SUBJECT_PREFIX.length + 1, -1); + map.set(privateHashedSubject, index); + return map; + }, new Map()); + + for (const privateTriple of privateKnowledgeAssetsTriplesGrouped) { + const [privateSubject] = privateTriple[0].split(' '); + const privateSubjectHash = this.cryptoService.sha256( + privateSubject.slice(1, -1), + ); + + if (publicSubjectHashMap.has(privateSubjectHash)) { + const publicIndex = publicSubjectHashMap.get(privateSubjectHash); + privateKnowledgeAssetsUALs.push(publicKnowledgeAssetsUALs[publicIndex]); + } else { + const publicIndex = + privateRepresentationTriplesSubjectMap.get(privateSubjectHash); + privateKnowledgeAssetsUALs.push( + publicKnowledgeAssetsUALs[ + startIndexForPrivateKnowledgeAssetsWithoutPublicPair + publicIndex + ], + ); + } + } + promises.push( + this.tripleStoreModuleManager.createKnowledgeCollectionNamedGraphs( + this.repositoryImplementations[repository], + repository, + privateKnowledgeAssetsUALs, + privateKnowledgeAssetsTriplesGrouped, + TRIPLES_VISIBILITY.PRIVATE, + ), + ); + } } + const metadataTriples = publicKnowledgeAssetsUALs - .map((ual) => `<${ual}> "${ual}:0" .`) + .map( + (publicKnowledgeAssetUAL) => + `<${publicKnowledgeAssetUAL}> "${publicKnowledgeAssetUAL}:0" .`, + ) .join('\n'); promises.push( @@ -181,81 +260,150 @@ class TripleStoreService { } } - async insertUpdatedKnowledgeCollection(preUpdateUalNamedGraphs, ual, triples, firstNewKAIndex) { - const preUpdateSubjectUalMap = new Map( - preUpdateUalNamedGraphs.map((entry) => [ - entry.subject, - entry.g.split('/').slice(0, -1).join('/'), - ]), - ); - - const publicKnowledgeAssetsTriples = this.dataService.groupTriplesBySubject( - triples.public ?? triples, - ); - - const publicKnowledgeAssetsSubjects = publicKnowledgeAssetsTriples.map( - ([triple]) => triple.split(' ')[0], - ); - const publicKnowledgeAssetsStatesUALs = []; - let newKnowledgeAssetId = firstNewKAIndex; - for (const subject of publicKnowledgeAssetsSubjects) { - if (preUpdateSubjectUalMap.has(subject)) { - publicKnowledgeAssetsStatesUALs.push(preUpdateSubjectUalMap.get(subject)); - } else { - publicKnowledgeAssetsStatesUALs.push(`${ual}/${newKnowledgeAssetId}`); - newKnowledgeAssetId += 1; - } - } - - const promises = []; - - promises.push( - this.tripleStoreModuleManager.createKnowledgeCollectionNamedGraphs( - this.repositoryImplementations[TRIPLE_STORE_REPOSITORY.DKG], - TRIPLE_STORE_REPOSITORY.DKG, - publicKnowledgeAssetsStatesUALs, - publicKnowledgeAssetsTriples, - TRIPLES_VISIBILITY.PUBLIC, - ), - ); - - if (triples.private?.length) { - const privateKnowledgeAssetsTriples = this.dataService.groupTriplesBySubject( - triples.private, - ); - - const publicSubjectsMap = new Map( - publicKnowledgeAssetsTriples.map(([triple], index) => { - const [subject] = triple.split(' '); - return [subject, index]; - }), - ); - - const privateKnowledgeAssetsStatesUALs = privateKnowledgeAssetsTriples.reduce( - (result, [triple]) => { - const [privateSubject] = triple.split(' '); // groupTriplesBySubject guarantees format - if (publicSubjectsMap.has(privateSubject)) { - result.push( - publicKnowledgeAssetsStatesUALs[publicSubjectsMap.get(privateSubject)], - ); - } - return result; - }, - [], - ); - - if (privateKnowledgeAssetsStatesUALs.length > 0) { - promises.push( - this.tripleStoreModuleManager.createKnowledgeCollectionNamedGraphs( - this.repositoryImplementations[TRIPLE_STORE_REPOSITORY.DKG], - TRIPLE_STORE_REPOSITORY.DKG, - privateKnowledgeAssetsStatesUALs, - privateKnowledgeAssetsTriples, - TRIPLES_VISIBILITY.PRIVATE, - ), - ); - } - } + async insertUpdatedKnowledgeCollection() { + // preUpdateUalNamedGraphs, + // knowledgeCollectionUAL, + // triples, + // firstNewKAIndex, + // const publicAssertion = triples.public ?? triples; + // const { subjectUALPairs } = preUpdateUalNamedGraphs; + // const preUpdateSubjectUALMap = new Map(); + // const preUpdateSubjectHashUALMap = new Map(); + // subjectUALPairs.forEach((pair) => { + // if (pair.subject) { + // preUpdateSubjectUALMap.set(pair.subject, pair.UAL); + // } + // if (pair.privateSubjectHash) { + // preUpdateSubjectHashUALMap.set(pair.privateSubjectHash, pair.UAL); + // } + // }); + // const filteredPublic = []; + // const privateHashTriples = []; + // let kaIndex = firstNewKAIndex; + // publicAssertion.forEach((triple) => { + // if (triple.includes(PRIVATE_RESOURCE_PREDICATE)) { + // privateHashTriples.push(triple); + // } else { + // filteredPublic.push(triple); + // } + // }); + // // Only public subjects here + // const publicKnowledgeAssetsTriplesGrouped = kcTools.groupNquadsBySubject( + // filteredPublic, + // true, + // ); + // const publicKnowledgeAssetsUALs = []; + // const publicKnowledgeAssetsTriplesGroupedForInsertions = []; + // const publicSubjectMap = new Map(); + // const publicSubjectHashMap = new Map(); + // for (const [index, publicTriples] of publicKnowledgeAssetsTriplesGrouped.entries()) { + // // Check if it existed before in public + // const [publicSubject] = publicTriples[0].split(' '); + // publicKnowledgeAssetsTriplesGroupedForInsertions.push( + // publicKnowledgeAssetsTriplesGrouped[index], + // ); + // const publicSubjectHash = this.cryptoService.sha256(publicSubject.slice(1, -1)); + // let ual = ''; + // if (preUpdateSubjectUALMap.has(publicSubject)) { + // ual = preUpdateSubjectUALMap.get(publicSubject); + // } + // // Check if it existed before in private + // else if (preUpdateSubjectHashUALMap.has(publicSubjectHash)) { + // ual = preUpdateSubjectUALMap.get(publicSubjectHash); + // } else { + // // It didn't exist before + // ual = `${knowledgeCollectionUAL}/${kaIndex}`; + // kaIndex += 1; + // } + // publicKnowledgeAssetsUALs.push(ual); + // publicSubjectMap.set(publicSubject, ual); + // publicSubjectHashMap.set(publicSubjectHash, ual); + // } + // const sortedPrivateRepresentationTriples = []; + // // for (const privateHashTriple of privateHashTriples) { + // // const privateHash = privateHashTriple + // // .split(' ')[0] + // // .slice(PRIVATE_HASH_SUBJECT_PREFIX.length + 1, -1); + // // if (publicSubjectHashMap.has(privateHash)) { + // // const publicIndex = publicSubjectHashMap.get(privateHash); + // // this.dataService.insertStringInSortedArray( + // // publicKnowledgeAssetsTriplesGrouped[publicIndex], + // // privateHashTriple, + // // ); + // // } else { + // // // If there is no public match add it as new KA at the end + // // // Check if there is in previouse state + // // if (preUpdateSubjectHashUALMap.has(privateHash)) { + // // publicKnowledgeAssetsTriplesGroupedForInsertions.push([privateHashTriple]); + // // publicKnowledgeAssetsUALs.push(preUpdateSubjectHashUALMap.get(privateHash)); + // // } + // // sortedPrivateRepresentationTriples.push(privateHashTriple); + // // } + // // } + // const startIndexForPrivateKnowledgeAssetsWithoutPublicPair = + // publicKnowledgeAssetsUALs.length; + // // Add private hashes without public pair to the end + // publicKnowledgeAssetsTriplesGrouped.push( + // ...sortedPrivateRepresentationTriples.map((triple) => [triple]), + // ); + // publicKnowledgeAssetsUALs.push( + // ...sortedPrivateRepresentationTriples.map( + // (_, index) => + // `${knowledgeCollectionUAL}/${ + // startIndexForPrivateKnowledgeAssetsWithoutPublicPair + index + 1 + // }`, + // ), + // ); + // const promises = []; + // promises.push( + // this.tripleStoreModuleManager.createKnowledgeCollectionNamedGraphs( + // this.repositoryImplementations[TRIPLE_STORE_REPOSITORY.DKG], + // TRIPLE_STORE_REPOSITORY.DKG, + // publicKnowledgeAssetsUALs, + // // publicKnowledgeAssetsTriples, + // TRIPLES_VISIBILITY.PUBLIC, + // ), + // ); + // if (triples.private?.length) { + // const privateKnowledgeAssetsTriples = this.dataService.groupTriplesBySubject( + // triples.private, + // ); + // const privateKnowledgeAssetsUALs = []; + // const publicSubjectsMap = new Map( + // publicKnowledgeAssetsTriples.reduce((map, [triple], index) => { + // const [subject] = triple.split(' '); + // map.set(subject, index); + // return map; + // }, new Map()), + // ); + // // Public has to have this or hash of this subject as every private subject is represented in public part + // for (const [triple] of privateKnowledgeAssetsTriples) { + // const [subject] = triple.split(' '); + // if (publicSubjectsMap.has(subject)) { + // privateKnowledgeAssetsUALs.push( + // publicKnowledgeAssetsUALs[publicSubjectsMap.get(subject)], + // ); + // } else { + // const hashedSubject = `<${PRIVATE_HASH_SUBJECT_PREFIX}${this.dataService.generateHashFromString( + // subject, + // )}>`; + // privateKnowledgeAssetsUALs.push( + // publicKnowledgeAssetsUALs[publicSubjectsMap.get(hashedSubject)], + // ); + // } + // } + // if (privateKnowledgeAssetsUALs.length > 0) { + // promises.push( + // this.tripleStoreModuleManager.createKnowledgeCollectionNamedGraphs( + // this.repositoryImplementations[TRIPLE_STORE_REPOSITORY.DKG], + // TRIPLE_STORE_REPOSITORY.DKG, + // privateKnowledgeAssetsUALs, + // privateKnowledgeAssetsTriples, + // TRIPLES_VISIBILITY.PRIVATE, + // ), + // ); + // } + // } } async moveKnowledgeCollectionBetweenUnifiedGraphs(fromRepository, toRepository, ual) { @@ -412,10 +560,7 @@ class TripleStoreService { async moveToHistoricAndDeleteAssertion(ual, stateIndex) { // Find all named graph that exist for given UAL - const ualNamedGraphs = this.tripleStoreModuleManager.findAllNamedGraphsByUAL( - TRIPLE_STORE_REPOSITORY.DKG, - ual, - ); + const ualNamedGraphs = await this.findAllNamedGraphsByUAL(TRIPLE_STORE_REPOSITORY.DKG, ual); let stateNamedGraphExistInHistoric = []; const ulaNamedGraphsWithState = []; const checkPromises = []; @@ -427,6 +572,7 @@ class TripleStoreService { ulaNamedGraphsWithState.push(ulaNamedGraphWithState); checkPromises.push( this.tripleStoreModuleManager.namedGraphExist( + this.repositoryImplementations[TRIPLE_STORE_REPOSITORY.DKG_HISTORIC], TRIPLE_STORE_REPOSITORY.DKG_HISTORIC, ulaNamedGraphWithState, ), @@ -439,10 +585,12 @@ class TripleStoreService { for (const [index, promiseResult] of stateNamedGraphExistInHistoric.entries()) { if (!promiseResult) { const nquads = await this.tripleStoreModuleManager.getAssertionFromNamedGraph( + this.repositoryImplementations[TRIPLE_STORE_REPOSITORY.DKG], TRIPLE_STORE_REPOSITORY.DKG, ualNamedGraphs[index], ); await this.tripleStoreModuleManager.insetAssertionInNamedGraph( + this.repositoryImplementations[TRIPLE_STORE_REPOSITORY.DKG_HISTORIC], TRIPLE_STORE_REPOSITORY.DKG_HISTORIC, ulaNamedGraphsWithState[index], nquads, @@ -458,6 +606,47 @@ class TripleStoreService { return ualNamedGraphs; } + async findAllNamedGraphsByUAL(repository, ual) { + return this.tripleStoreModuleManager.findAllNamedGraphsByUAL( + this.repositoryImplementations[repository], + repository, + ual, + ); + } + + async findAllSubjectsWithGraphNames(repository, ual) { + const unparsedSubjectUALPairs = + await this.tripleStoreModuleManager.findAllSubjectsWithGraphNames( + this.repositoryImplementations[repository], + repository, + ual, + ); + + const subjectUALPairs = Array.from( + unparsedSubjectUALPairs.reduce((map, { s, g }) => { + let pair = { subject: null, subjectHash: null, ual: g }; + if (map.has(g)) { + pair = map.get(g); + } + if (s) { + if (s.startsWith(`<${PRIVATE_HASH_SUBJECT_PREFIX}`)) { + pair.subjectHash = s.trim(PRIVATE_HASH_SUBJECT_PREFIX.length + 1, -1); + } else { + pair.subject = s.trim(1, -1); + pair.subjectHash = this.cryptoService.sha256(pair.subject); + } + } + map.set(g, pair); + return map; + }, new Map()), + ).values(); + + const privateMerkleRootTriple = + await this.tripleStoreService.getKCPrivateAssertionIdentifierTriple(repository, ual); + + return { subjectUALPairs, privateMerkleRootTriple }; + } + async getKnowledgeAssetNamedGraph(repository, ual, visibility) { return this.tripleStoreModuleManager.getKnowledgeAssetNamedGraph( this.repositoryImplementations[repository],